这是一个面向东北大学宿舍空调控制场景的非官方项目,使用 NodeMCU ESP8266 和红外发射管控制采用 COOLIX 红外协议的空调。设备可创建可配置的 Wi-Fi 热点,手机连接后通过网页完成开关机、温度、模式、风速、定时和上下扫风控制。
项目缘起:宿舍装了空调,却没有配遥控器,手机也没有红外功能😅。
项目的选材、接线、协议分析、代码和调试均由 GPT 提供方案。买完元件后才发现还有集成式 38 kHz 红外收发模块:功能与分立方案相同,只是封装更完整、使用更方便。本项目仍采用分立元件实现。
控制页面:
运行日志:
- 制冷、制热、送风、自动和抽湿模式
- 自动、低、中、高四档风速
- 温度调节、定时关机和上下扫风
- ESP8266 热点控制,也可连接已有 Wi-Fi
- VS1838B 红外信号采集程序
| 材料 | 数量 |
|---|---|
| NodeMCU ESP8266 | 1 |
| 940 nm 红外发射管 | 1 |
| S8050 NPN 三极管 | 1 |
| 100 Ω 电阻 | 1 |
| 1 kΩ 电阻 | 1 |
| VS1838B 红外接收头 | 1(可选) |
| 面包板、杜邦线、USB 数据线 | 若干 |
Fritzing 接线图:
实物接线图:
红外发射:
D2 / GPIO4 ── 1 kΩ ── S8050 B
VU / 5V ── 100 Ω ── 红外 LED 正极
红外 LED 负极 ── S8050 C
S8050 E ── GND
可选的红外接收:
3.3V ── VS1838B VCC
GND ── VS1838B GND
D5 / GPIO14 ── VS1838B OUT
注意:
- S8050 和 VS1838B 的引脚顺序可能因厂家、封装而异,接线前请查看对应数据手册。
- NodeMCU、发射电路和接收电路必须共地。
- 红外 LED 不要直接接 GPIO;发射管正负极和
VU / 5V电压也应在通电前确认。
本项目使用 PlatformIO。首次构建前复制配置文件:
cp include/config.example.h include/config.h按需修改 include/config.h:
constexpr char AP_WIFI_NAME[] = "DormAC";
constexpr char AP_WIFI_PASSWORD[] = "12345678";
constexpr char STA_WIFI_NAME[] = "YOUR_WIFI_SSID";
constexpr char STA_WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";
const IPAddress AP_IP(192, 168, 4, 1);
const IPAddress AP_GATEWAY(192, 168, 4, 1);
const IPAddress AP_SUBNET(255, 255, 255, 0);
#define DEFAULT_AC_MODE MODE_COOL
#define DEFAULT_FAN_SPEED FAN_LOW
#define DEFAULT_SWING_STATE SWING_TOP
constexpr int DEFAULT_AC_TEMPERATURE = 25;AP_WIFI_NAME和AP_WIFI_PASSWORD:ESP8266 创建的热点名称和密码,密码至少需要 8 个字符。STA_WIFI_NAME和STA_WIFI_PASSWORD:设备要接入的已有 Wi-Fi;将名称留空时仅使用设备热点。AP_IP:热点控制页面地址,可按需修改。DEFAULT_AC_MODE:默认模式,可选MODE_COOL、MODE_HEAT、MODE_FAN、MODE_AUTO或MODE_DRY。DEFAULT_AC_TEMPERATURE:默认温度,制冷和制热范围均为 17–30℃。DEFAULT_FAN_SPEED:默认风速,可选FAN_AUTO、FAN_LOW、FAN_MEDIUM或FAN_HIGH。DEFAULT_SWING_STATE:默认风向,可选SWING_AUTO、SWING_TOP、SWING_UPPER、SWING_MIDDLE、SWING_LOWER或SWING_BOTTOM。该设置只初始化页面状态,不会在设备启动时发送扫风指令。
这些默认参数用于设备启动后的首次空调开机指令;ESP8266 启动时不会自动打开空调。
本地配置可能包含 Wi-Fi 密码,include/config.h 已被忽略,请勿提交。
编译并上传:
pio run
pio run -t upload需要查看启动日志时运行:
pio device monitor设备启动后:
- 手机连接
AP_WIFI_NAME配置的热点;模板默认名称为DormAC,密码为12345678。 - 浏览器打开
AP_IP对应的地址;模板默认为http://192.168.4.1/。 - 在控制页面选择空调状态并发送。
如果已在配置中填写宿舍 Wi-Fi,设备也会尝试接入该网络,实际地址可从串口日志查看。
example/ 目录包含以下两个独立的硬件调试程序,它们不会参与正式固件构建:
example/recv.cpp:使用 VS1838B 采集和解析红外信号。example/send.cpp:红外发送测试程序。web_preview.html:在电脑浏览器中预览控制页面。
COOLIX 编码、定时规律、扫风码及验证边界见 COOLIX 协议记录。



