项目简介
本教程将手把手教你如何使用廉价的ESP8266开发板,将家里任何一个通过红外遥控器控制的普通灯具(或其他电器),改造成一个可以通过手机、电脑网页控制的“智能设备”。
我们将遵循“先学习,后模仿”的核心思路:首先,用红外接收器(VS1838B)当“耳朵”,去“偷听”并学习你原始遥控器的信号;然后,用红外发射器(KY-005)当“嘴巴”,把学到的信号发射出去,从而实现控制。
第一部分:准备工作
1. 所需材料清单
- 大脑: 1x ESP8266开发板 (NodeMCU或Wemos D1 Mini)
- 耳朵: 1x VS1838B (或TSOP4838) 红外接收器模块
- 嘴巴: 1x KY-005 红外发射器模块
- 学习对象: 1x 你想要复制的原始遥控器
- 连接工具: 若干杜邦线、1x 面包板 (可选,但推荐)
- 供电/编程: 1x Micro-USB 数据线
- (可选,但强烈推荐) 为了提升发射距离,建议准备:
- 1x NPN三极管 (如
S8050或2N2222) - 1x 1kΩ 电阻 和 1x 100Ω 电阻
- 1x NPN三极管 (如
2. 软件环境配置
- 安装Arduino IDE: 从官网 arduino.cc 下载并安装。
- 配置ESP8266开发环境:
- 打开Arduino IDE,进入
文件>首选项。 - 在“附加开发板管理器网址”中,填入:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - 进入
工具>开发板>开发板管理器,搜索esp8266并安装。
- 打开Arduino IDE,进入
- 安装核心库 (最重要的一步):
- 进入
工具>管理库...。 - 在库管理器中搜索
IRremoteESP8266。 - 找到对应项并点击“安装”。本项目的所有魔法都来源于这个库。
- 进入
第二部分:“间谍”行动 - 学习遥控器信号
核心目标: 使用“耳朵”(VS1838B) 捕获原始遥控器每个按键的唯一编码。
1. 硬件连接 (学习模式)
请仔细按照下图连接你的 VS1838B 红外接收器。将接收器半球形凸起朝向自己,从左到右引脚功能为:信号、地、电源。
- VS1838B 左边的
DATA(信号) 引脚 → ESP8266D5 - VS1838B 中间的
GND(负极) 引脚 → ESP8266GND - VS1838B 右边的
VCC(正极) 引脚 → ESP82663V3
2. 上传“窃听程序”
- 在Arduino IDE中,打开示例程序:
文件>示例>IRremoteESP8266>IRrecvDumpV2。 - 这个程序不需要做任何修改,因为它的默认监听引脚就是
14(对应D5)。 - 选择你的开发板 (NodeMCU 1.0) 和端口,然后点击“上传”。
3. 捕获信号的“黄金法则”
为了得到最准确的数据,请严格遵守以下步骤:
- 打开串口监视器: 点击IDE右上角的放大镜图标。在打开的窗口右下角,务必将波特率设置为
115200。你应该能看到一行字...waiting for IR input on Pin 14。 - 创造“无菌”环境: 尽量避免阳光直射或日光灯干扰。
- 靠近并对准: 将你的原始遥控器发射头,非常近地(5-10厘米) 对准你刚接好的VS1838B接收器。
- 执行“黄金一按”: 短促、清脆地按一下你要学习的按键(例如“开灯”),然后立刻松开。
- 记录情报: 串口监视器会立刻打印出一大段信息。找到
Code这一行,完整地复制下那个十六进制的编码 (例如0xFFC23D),并记录下它对应的功能。 - 重复操作: 重复步骤4和5,把你遥控器上所有需要的功能键(关灯、亮度+、定时等)的编码全部记录下来,整理成一个清单。
第三部分:“特工”行动 - 模拟并控制
核心目标: 使用“嘴巴”(KY-005) 将学到的编码发射出去,并创建一个精美的网页来控制它。
1. 硬件连接 (发射模式)
现在,拔掉VS1838B,连接你的 KY-005 红外发射器。
- KY-005
GND(标有 '-') → ESP8266GND - KY-005
VCC(中间引脚) → ESP82663V3 - KY-005
S(信号) → ESP8266D2
(强烈推荐)为了获得更远的发射距离,请使用下面的“扩音器”电路代替直接连接:
2. 上传最终的“指挥中心”代码
这是集成了网页服务器和红外发射功能的最终代码。
- 复制下面的完整代码并粘贴到Arduino IDE。
- 在“用户配置区域”,修改你的Wi-Fi名称和密码。
- 将你在第二部分记录下的所有红外编码,一一对应地填入
#define区域,替换掉示例编码。 - 上传代码到ESP8266。
(请在此处粘贴上一问中为你生成的、包含所有功能和精美布局的最终完整代码)
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
// =======================================================================
// === 用户配置区域 ===
// =======================================================================
// 1. Wi-Fi 信息
const char* ssid = "yang1234";
const char* password = "y123456789";
// 2. 【重要】将这里替换成你第二步学习到的真实红外编码
#define CODE_ON 0xFFC23D // 开
#define CODE_OFF 0xFFB04F // 关
#define CODE_BRIGHT_UP 0xFF10EF // 亮度 +
#define CODE_BRIGHT_DOWN 0xFF5AA5 // 亮度 -
#define CODE_AUTO 0xFF22DD // AUTO
#define CODE_TIMER_3H 0xFFA857 // 3H 定时
#define CODE_TIMER_5H 0xFF6897 // 5H 定时
#define CODE_TIMER_8H 0xFF629D // 8H 定时
// 定义红外发射器连接的GPIO引脚 (D2)
const uint16_t kIrLedPin = 4;
// (此处省略了完整的网页HTML和服务器处理代码,与上一问相同)
// ...
// ...
// 请使用上一问中为你生成的完整代码
3. 开始你的智能生活
- 获取IP地址: 代码上传后,打开串口监视器(
115200),等待ESP8266连接Wi-Fi,它会打印出自己的IP地址(例如http://192.168.1.108)。 - 打开遥控器: 在你的手机或电脑浏览器中,访问这个IP地址。
- 开始控制: 你会看到一个为你量身定做的精美遥控界面。点击按钮,ESP8266就会发射相应的红外信号,控制你的灯!
- 添加到主屏幕: 为了方便使用,可以将这个网页“添加到主屏幕”,它就会像一个App一样出现在你的手机桌面上。
第四部分:常见问题与故障排除 (Q&A)
- Q: 学习时串口监视器没反应?
- A: 99%的可能是你错把“嘴巴”(KY-005)当成了“耳朵”。请确保连接的是黑色的VS1838B接收器。同时检查波特率是否为
115200。
- A: 99%的可能是你错把“嘴巴”(KY-005)当成了“耳朵”。请确保连接的是黑色的VS1838B接收器。同时检查波特率是否为
- Q: 网页能打开,但按按钮灯没反应?
- A: 首先用手机摄像头对准KY-005的LED,按网页按钮看它是否闪烁紫光。
- 不闪烁: 检查发射器接线,特别是
S到D2的信号线。 - 闪烁: 说明发射功率太弱,距离太远。请靠近设备,或使用推荐的三极管放大电路。
- 不闪烁: 检查发射器接线,特别是
- A: 首先用手机摄像头对准KY-005的LED,按网页按钮看它是否闪烁紫光。
- Q: 学习到的信号是
UNKNOWN或带WARNING警告?- A: 你的遥控器信号很特殊。请严格遵守“黄金法则”进行无干扰捕获。如果依然失败,你需要使用
irsend.sendRaw()函数来发送捕获到的rawData数组,而不是irsend.sendNEC()。
- A: 你的遥控器信号很特殊。请严格遵守“黄金法则”进行无干扰捕获。如果依然失败,你需要使用
恭喜你! 你已经完成了从硬件连接、信号分析到软件开发的全过程,成功地创造了一个属于自己的物联网设备!
评论区(0 条)
发表评论⏳ 加载编辑器…