焕新旧遥控器:用 Arduino 打造 DIY 智能红外控制设备
项目概述
本项目展示如何利用 Arduino Nano 与红外接收模块(如 KY-022),将闲置的旧遥控器(VCR、电视、DVD 等)改装为可控制 6 路输出设备的智能遥控系统。系统支持“学习模式”记忆任意 6 个按键的红外编码并存入 EEPROM 掉电不丢失,“运行模式”下通过遥控器按键切换对应 LED(或继电器、大功率晶体管驱动的负载)。项目包含完整的硬件清单、面包板接线、Arduino 代码及 MIT App Inventor 手机应用制作指南。
所需组件与物料
- Arduino Nano R3 × 1
- 5mm 红色 LED × 3(状态指示灯 + 2 路输出)
- 5mm 绿色 LED × 1
- 5mm 黄色 LED × 1
- 5mm 蓝色 LED × 2
- 全尺寸无焊面包板 × 1
- 杜邦线若干
- 拨动开关 (SPST) × 1
- 面包板电源模块 5V/3.3V × 1(可选,USB 供电时可省略)
- 红外接收模块(如 KY-022 37.9kHz)× 1
核心功能特性
- 通用兼容:支持 NEC、SONY、RC5、RC6、SAMSUNG、LG 等主流红外协议,自动识别并显示协议类型。
- 掉电记忆:6 个按键编码以 32 位长整型存入 Arduino Nano 1024 字节 EEPROM,断电保持。
- 双模式操作:拨动开关切换“学习模式”(红灯常亮)与“运行模式”(红灯慢闪)。
- 防误触设计:非已学习编码按键触发全关复位;启动时自动检测重复编码并闪烁提示。
- 串口调试:全过程串口打印学习码、运行码、协议类型、重复码警告等信息。
- 扩展性强:6 路输出可并联继电器、MOSFET 驱动灯具、风扇、加热器等交流负载(需隔离)。
硬件接线指南
引脚分配表
| 功能 | Arduino Nano 引脚 | 备注 |
|---|---|---|
| 红外接收模块 OUT | D2 | VCC 接 5V,GND 接 GND |
| 模式拨动开关 | D4 | 另一端接 GND,内部上拉 |
| 模式指示 LED (红) | D5 | 串联 330Ω 电阻 |
| 输出 LED 1 | D12 | 串联 330Ω 电阻 |
| 输出 LED 2 | D11 | 串联 330Ω 电阻 |
| 输出 LED 3 | D10 | 串联 330Ω 电阻 |
| 输出 LED 4 | D9 | 串联 330Ω 电阻 |
| 输出 LED 5 | D8 | 串联 330Ω 电阻 |
| 输出 LED 6 | D7 | 串联 330Ω 电阻 |
抗干扰技巧
作者发现部分遥控器信号较弱或环境杂散光干扰大,解决方法:将红外接收头向下弯折约 45°,并用纸板胶带制作遮光罩(一端开口),可稳定接收 5~8 米距离信号,连续测试 5 天零失误。
软件架构与代码解析
核心库依赖
IRremote.h(Ken Shirriff 版)EEPROM.h(Arduino 内置)
关键数据结构
long unsigned int savedIRCodes[6]; // EEPROM 存储的 6 个红外编码
long unsigned int dupeCheck[6]; // 重复码检测副本
int togglestate[6] = {0}; // 6 路输出翻转状态
主要流程函数
EEPROMWritelong() / EEPROMReadlong():32 位整数与 4 字节 EEPROM 互转(位移操作)。learn_Mode():依次闪烁 6 个 LED 提示按键,接收编码写入 EEPROM,快速闪烁状态灯确认。run_Mode():解码接收编码,匹配 6 个已存编码翻转对应 LED,非匹配编码触发Reset()全关。guessType():通过results.decode_type识别并串口打印红外协议名称。setup()首次上电检测 EEPROM 是否为 0xFFFFFFFF(新板常见),自动写入 Sony RM-YD104 遥控器默认码并提示重新学习。
扩展应用场景
- 分体式门禁:入口、出口各装一套设备,共享云端计数,实现分离进出统计。
- 餐厅座位显示:APP 显示空闲桌数及规格,路人一目了然。
- 校园错峰通行:不同年级不同时段通行,避免交叉感染。
- 工业设备互锁:多台设备共享资源计数,防止超载。
安全警示
⚠ 高压危险! 若驱动 220V 交流负载(如台灯),必须使用光耦隔离的继电器模块,严禁直接用 Arduino GPIO 驱动。作者使用 CD4011 与门反相驱动继电器,仅作原理验证,实际部署请遵循电气安全规范。
项目文件
- Arduino 代码:
IR_Remote_Repurposing.ino(文末下载) - MIT App Inventor 源文件:
shopDoorAssistant2.aia(可直接导入编辑) - 原理图:PNG 格式(文末下载)
致谢与结语
作者感谢 Arduino 提供 MKR WiFi 1010 支持,首次体验云端 API 与 MIT App Inventor 联动开发。疫情当下,希望该项目能为商铺限流、公共场所管理提供低成本开源方案。欢迎反馈改进,共同战胜困难!
制造工艺
- 发光二极管:从诞生到百年寿命
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派 LIRC 通用红外遥控器专业构建指南
- 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
- Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
- 将旧功能机改造为智能远程开关 — 物联网新生命
- 单 LED 光绘:自制电动双轴系统绘制动态图像
- 声控 8 路 LED 灯光秀:Arduino 入门项目
- 从零构建智能 Arduino 四足机器人:完整指南
- Arduino PowerPoint 指针:无缝无线演示控制器
- 选型控制平台的五大核心准则
- 报废工业设备安全高效处置六大路径:捐赠、直销、拍卖、经纪、以旧换新、回收