请参阅我的ArduinoBasics 博客上的原始项目帖子。
该项目将普通的 Keyes 红外 (IR) 遥控器转换为可编程的通用遥控器。
使用 Arduino UNO 和各种 Seeedstudio Grove 模块,只需按下 Keyes 遥控器上的一个按钮即可将其转换为精确的索尼 IR 信号组合。如果需要,您可以从多个遥控器分配信号组合。一个示例组合可以是:
只需按下 Keyes 遥控器的一个按钮,就会出现整个索尼信号级联。该项目可以针对其他 IR 方法进行定制,但是,您可能需要修改 Arduino 代码以适应它们。
可以在此处找到有关 Grove 模块的更多信息:
**请注意:Grove Base 扩展板在模拟端有 14 个引脚,在数字端有 18 个引脚。检查您的 Arduino UNO(或兼容板)上的引脚数量,以确保防护罩能够很好地位于顶部。与具有 Arduino Duemilanove 排针布局的 Arduino 板不兼容。
虽然有许多Arduino IDE 替代品,但我建议您为该项目使用官方 Arduino IDE 。我使用了适用于 Windows 10 的官方 Arduino IDE 应用程序 (v1.8.5)。确保在此处获取适用于您的操作系统的最新版本。
Arduino 代码中将使用以下库:
电线库
Wire库用于 Grove LCD 屏幕的 I2C 通信,并内置于 Arduino IDE 中 - 此库无需额外下载。
IRLib2 库
IRLib2库实际上是一组 IR 库,可以从 GitHub 下载 - 这里。在这个项目中,我将发送和接收NEC 和 Sony IR 远程信号。所需的库(在集合中)将是:
rgb_lcd.h库简化了液晶屏的操作。从 GitHub下载rgb_lcd.h 库。将 rgb_lcd.h 库 ZIP 文件安装到 Arduino IDE 中:
文件 > 示例 > Grove-LCD RGB 背光
最好在进行任何连接之前将 Arduino 代码上传到电路板。这样你就可以防止 Arduino 意外地向组件发送电流。该代码在我的 GitHub 存储库中可用。或者您可以查看代码部分。此代码是为 Arduino UNO 编写的,如果您使用不同的开发板,可能需要修改。
如果您使用的是 Grove Base Shield (v2)。连接非常简单。使用下表作为指南。请注意,上面的代码假设有以下连接。
根据上表,您将使用 Grove 通用 4 针带扣电缆,并将一侧连接到 Grove 底座屏蔽上的 D2,另一侧连接到 Grove 红外发射器。底座护罩上的 D3 将连接到 Grove 红外线接收器,依此类推。您可以将 16x2 LCD 模块连接到 Grove 底座屏蔽上四个 I2C 连接器中的任何一个。
如果您没有 Grove Base 扩展板,您可以选择使用母对公跳线(连同面包板)。但是只获得底座屏蔽并使用通用连接器会更容易。
当你给 Arduino 通电时,首先出现在 LCD 屏幕上的是:
按下 Grove 按钮(连接到 D5)后,它会显示以下消息:
这是按下并从 Keyes 遥控器向红外接收器(连接到 D2)发送信号的提示。Arduino 将解码 Keyes 远程信号,将值存储在数组中,并在 LCD 上短暂显示信号。LCD 现在应该显示一条消息:
此消息提示按下并将第一个信号从索尼遥控器发送到红外线接收器。Arduino 将解码索尼遥控信号并将其存储在不同的阵列中,并在 LCD 上短暂显示。在此过程的这一步,您可以选择最多向红外接收器发送三个 Sony 信号组合。您可以发送的最小 Sony 信号数为零。告诉 Arduino 您不想在此步骤中向接收器发送任何进一步的 Sony 信号的方法是按下 Grove 按钮(连接到 D5)。Arduino 被编程为接收总共 5 个 Keyes 信号,每个信号最多可以与 3 个 Sony 信号组合配对。记录完所有信号组合后,您将收到一条消息:
Arduino 现在将进入最终的“通用远程模式”。在此模式下,它将侦听之前记录的任何 5 Keyes IR 远程信号,并将发送相关的 Sony 信号组合作为回报。例如,如果您按下 Keyes 遥控器上的数字 1,您可能会收到它,这样 Arduino 就会传输索尼信号组合以打开电视并跳转到特定频道。LCD 将显示每个正在传输的信号。您将知道您处于“通用遥控器”模式,因为 LCD 将显示:
虽然你可能想在这个阶段扔掉你的索尼遥控器(因为你不再需要它)......我会坚持以防万一。信号不会永久存储。当 Arduino 断电时,它们会消失。但它不一定是那样的。您可以轻松修改代码以将其存储在 eeprom 存储器或其他内容中。这不是您可以更改的唯一内容。从技术上讲,您可以记录任何遥控器的信号,但是,您可能需要包含其他库或代码以适应备用遥控器符号。您还可以修改 LCD 屏幕上的文本消息,使之对您更有意义。LCD 每行只能显示 16 个字符。因此,当您想出有创意的字幕时,请记住这一点。我还想提一下我选择不使用 Seeedstudio 的 IR 库的原因,是因为它占用了太多内存。他们的图书馆可能容纳范围广泛的符号体系。我选择了 IRLib2 库,因为我只能选择我使用的符号体系(索尼和 NEC)。从而减少运行项目所需的内存总量。事实上,我发现许多 Seeedstudio 的库都非常耗费内存。我最初想创建一个手势控制的遥控器。但由于累积内存需求,库组合消除了这种可能性。我发现许多 Seeedstudio 的库非常耗费内存。我最初想创建一个手势控制的遥控器。但由于累积内存需求,库组合消除了这种可能性。我发现许多 Seeedstudio 的库非常耗费内存。我最初想创建一个手势控制的遥控器。但由于累积内存需求,库组合消除了这种可能性。
请注意:上面的 LCD 屏幕截图是使用Alexander Avtanski 的“ LCD 屏幕截图生成器”生成的。
IRLib2 库是该项目成功的关键。如果没有那个图书馆,这个项目会困难十倍。我对这种记录/回放技术的有效性感到非常惊讶。用便宜又讨厌的 Keyes 遥控器操作我的 SONY 电视感觉很奇怪。这是非常超现实的。当我选择以这种方式控制我的电视时,我可以从我的其他遥控器之一使用红外信号轻松记录信号。随着越来越多的设备可以通过遥控器进行控制,我将越来越多地考虑将这个项目变成我家里的永久装置。手势控制的遥控器本来不错,但是,看来我现在必须为该模块找到其他用途。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !