
1. 从“热得遭不住”到“巴适得板”一个空调伴侣盒子的诞生记今年夏天我算是彻底领教了什么叫“秋老虎”的余威。家里的老空调制冷效果倒还行但那个遥控器简直成了全家的“痛点”。不是电池接触不良就是按键失灵想半夜调个温度得摸黑找半天按下去还没反应气得人睡意全无。更别提有时候遥控器不知道被家里神兽塞到哪个沙发缝里全家总动员上演“寻宝”大戏。这还不算完最尴尬的是家里老人来住面对满屏英文和复杂图标根本不知道怎么用最后只能对着空调干瞪眼或者大热天还得等我下班回家帮忙调。就在我琢磨着是不是该换个新空调时一个偶然的机会在极客论坛上看到了用智能家居思路改造传统家电的帖子。我灵光一闪空调本身没坏只是交互方式太落后了。为什么不给它装个“大脑”让它变得听话呢于是“巴适空调盒”这个想法就诞生了。它的核心目标很简单用一个低成本、易部署的小盒子让任何老旧空调都能秒变智能空调。实现手机App控制、语音助手联动、甚至根据环境自动调节彻底告别找遥控器、看不懂按键的烦恼。这个项目不追求极致的性能参数主打的就是一个“实用”和“巴适”让科技真正服务于生活的便利。2. 核心方案选型为什么是“红外转发”“ESP8266”要给空调加上智能首先得解决“沟通”问题。空调接收指令的“语言”是红外信号而我们的手机或智能音箱说的是“网络协议”Wi-Fi。因此这个盒子的核心任务就是一个“翻译官”接收来自网络的指令翻译成空调能听懂的红外信号发出去。市面上主流的方案有好几种我最终选择了“ESP8266微控制器 红外发射管”的方案。这里详细拆解一下选型背后的逻辑这也是DIY项目中非常关键的一步。2.1 主控芯片ESP8266为何是性价比之王可选的主控芯片很多比如更强大的ESP32、Arduino Uno、树莓派Pico等。ESP32 vs ESP8266ESP32性能更强有蓝牙但本项目核心需求是Wi-Fi连接和GPIO通用输入输出引脚控制对于简单的红外信号收发和网络通信ESP8266的性能绰绰有余。更重要的是ESP8266的价格通常只有ESP32的一半甚至更低在追求极致性价比的DIY项目里这是决定性优势。Arduino Uno需要额外购买Wi-Fi扩展板整体成本和复杂度上升且体积不易控制。树莓派Pico虽然性能不错但原生不支持Wi-Fi同样需要扩展。所以ESP8266尤其是NodeMCU或D1 Mini这类开发板以其极低的成本约10-20元、内置Wi-Fi、丰富的GPIO和成熟的生态Arduino框架、丰富的库成为了不二之选。它就像这个盒子的大脑负责联网、逻辑处理和发出控制指令。2.2 红外收发捕获与复制的关键智能控制的前提是知道你的空调“听什么话”。这就需要学习和复制原装遥控器的红外编码。红外接收头如VS1838B这是一个必备的“耳朵”。它的作用是在配置阶段接收并解码原始空调遥控器发出的红外信号将复杂的红外脉冲波形转换成微控制器可以识别和存储的一串数字编码通常是NEC、RC5等格式。没有它我们就无法获取空调的“密码本”。红外发射管LED这是盒子的“嘴巴”。当ESP8266决定执行某个操作如开机、调至26度时它会从存储的“密码本”里找到对应的那串数字编码然后通过GPIO引脚控制红外发射管以完全相同的频率和时序发射红外光模拟遥控器的操作。这里有个关键细节发射功率。单个红外发射管的发射角度和距离有限。为了确保盒子放在房间任意位置都能可靠控制空调我采用了“三管并联”的方案。将三个红外发射管并联在一起指向略微不同的方向比如左、中、右可以显著增大有效发射角度相当于给“嘴巴”加了个“扩音器”让信号覆盖更广。成本只增加了几毛钱但可靠性提升巨大。2.3 供电与结构稳定与美观的平衡供电ESP8266工作电压是3.3V但整个电路板可以从5V USB口取电。最省事的方案就是用一个手机充电头Micro USB线供电。选择输出电流1A以上的普通充电头即可稳定又方便。外壳为了美观和防止短路一个合适的外壳很重要。我选择了最通用的86型插座空白面板盒。它的好处是大小标准可以轻松替换掉墙上任何一个闲置的开关面板或者直接贴在墙上、空调附近非常隐形美观。在盒子正面开孔让红外接收头和发射管露出来即可。避坑心得红外接收头的“暗电流”。VS1838B这类接收头即便在没有信号时其输出引脚也可能存在一个不稳定的电平容易被微控制器误判为信号。解决办法是在程序初始化时先连续读取一段时间比如200毫秒忽略这段时间内的任何“信号”或者直接在硬件上在接收头输出脚与ESP8266输入脚之间加一个10kΩ的上拉电阻将其稳定在默认高电平。这是我调试时遇到的第一个坑排查了半天才发现是信号干扰。3. 手把手搭建你的“巴适空调盒”理论清楚了我们开始动手。以下是完整的物料清单和焊接步骤。3.1 物料清单BOM元件名称规格/型号数量说明预估成本主控板NodeMCU ESP8266 或 Wemos D1 Mini1开发板核心大脑15元红外接收头VS1838B 或 HS0038B1学习遥控器信号0.5元红外发射管940nm 5mm3发射控制信号建议并联0.3元 x3电阻100Ω 限流电阻3每个发射管串联一个保护LED0.01元 x3杜邦线公对公、母对母若干连接电路建议用排针焊接更稳固2元外壳86型空白面板盒1容纳所有元件5元供电USB充电头 Micro USB线1套家中闲置的即可0元利用合计约25元3.2 电路连接与焊接电路原理非常简单核心是“一收三发”。下图清晰地展示了所有元件的连接关系 此处为文字描述连接图请按此连接红外接收头OUT引脚 - 连接到 ESP8266 的任意一个数字输入引脚例如D5(GPIO14)。VCC引脚 - 连接到 ESP8266 的3.3V输出引脚。GND引脚 - 连接到 ESP8266 的GND引脚。红外发射管三个并联每个发射管的正极长脚分别串联一个100Ω电阻然后将三个电阻的另一端连接在一起。这个“共同点” - 连接到 ESP8266 的一个数字输出引脚例如D6(GPIO12)。每个发射管的负极短脚- 全部连接到 ESP8266 的GND引脚。焊接操作建议先在万能板洞洞板上规划好元件布局将ESP8266开发板、红外接收头的位置固定。使用排针和排母连接ESP8266方便日后拆卸升级。焊接红外发射管时注意极性长脚为正。三个发射管可以呈扇形排列指向不同方向。焊接完成后务必用万用表通断档检查是否有短路或虚焊。尤其是VCC和GND之间绝对不能短路。3.3 固件烧录与配置硬件准备好了需要给ESP8266“灌输灵魂”——写入控制程序。我强烈推荐使用ESPHome这个开源项目。它极大地简化了开发过程你几乎不需要写代码通过YAML配置文件就能定义功能。步骤1安装ESPHome。最简单的方法是通过Home Assistant的插件安装或者直接在电脑上用Python pip安装。步骤2编写配置文件。创建一个YAML文件比如cool_ac_box.yaml核心内容如下esphome: name: cool-ac-box platform: ESP8266 board: nodemcuv2 wifi: ssid: 你的Wi-Fi名称 password: 你的Wi-Fi密码 # 可以设置静态IP方便管理 manual_ip: static_ip: 192.168.1.200 gateway: 192.168.1.1 subnet: 255.255.255.0 # 启用Web服务器和OTA无线更新方便后续调试 web_server: port: 80 ota: password: 设置一个OTA更新密码 # 启用日志便于排查问题 logger: # 定义红外接收传感器 remote_receiver: pin: D5 tolerance: 50% filter: 250us idle: 10ms buffer_size: 512 # 定义红外发射器 remote_transmitter: pin: D6 carrier_duty_percent: 50% # 定义一个“文本”传感器用来显示并存储接收到的原始红外编码 text_sensor: - platform: remote_receiver name: AC Raw Code id: ac_raw_code # 定义一个按钮按下时开始录制红外信号学习模式 button: - platform: template name: Learn AC Power On on_press: then: - remote_receiver.learn: receiver_id: remote_receiver_默认ID # 默认即可 - delay: 10s # 给你10秒时间按下空调遥控器开关 - text_sensor.template.publish: id: ac_raw_code state: !lambda return id(remote_receiver_默认ID).get_learn_result().to_string(); # 定义克隆按钮将学习到的编码发送出去测试模式 - platform: template name: Test Send Power On on_press: then: - remote_transmitter.transmit_rc_switch_raw: code: !lambda return id(ac_raw_code).state; # 定义实际的空调开关将编码固化 switch: - platform: template name: Air Conditioner turn_on_action: - remote_transmitter.transmit_rc_switch_raw: code: 这里粘贴你学习到的“开机”完整编码 turn_off_action: - remote_transmitter.transmit_rc_switch_raw: code: 这里粘贴你学习到的“关机”完整编码步骤3学习红外编码。这是最关键的一步。将ESP8266通过USB线连接电脑在ESPHome中编译并烧录上述配置文件。烧录成功后盒子会连接Wi-Fi。在路由器后台或使用ESPHome Dashboard找到它的IP地址用浏览器打开。在打开的Web页面上点击“Learn AC Power On”按钮页面提示进入学习模式。立刻用空调原装遥控器对准盒子的红外接收头按下“开机”键。等待10秒后页面上的“AC Raw Code”字段会显示一长串十六进制数字这就是你空调开机的“密码”复制它。将复制的编码粘贴到配置文件中switch部分turn_on_action的code:后面替换掉提示文字。重复3-6步学习“关机”、“温度”、“温度-”、“模式”等所有你需要的按键编码。步骤4编译并烧录最终版固件。将学习到的所有编码填入配置文件后重新编译并烧录。现在你就可以通过Web页面上的“Air Conditioner”开关来控制空调了核心技巧编码的存储与调用。ESPHome允许我们将这些冗长的红外编码存储在“变量”中使配置文件更清晰。例如你可以先定义lambda: |- auto power_on_code std::string(0x123456789ABC...); // 你的开机码然后在turn_on_action中调用这个变量。更进阶的做法是使用climate组件直接集成空调的完整协议如格力、美的实现更精细的温度、风速、模式控制。这需要查找你的空调品牌对应的ESPHome集成方式或者自己解析编码规律。4. 融入智能家居生态从手动到自动的飞跃能让手机网页控制只是第一步。让它接入主流的智能家居平台实现语音控制和自动化才是“巴适”的终极体现。这里以全球最流行的开源智能家居平台Home Assistant为例。4.1 在Home Assistant中集成如果你已经按照上述步骤使用了ESPHome那么集成简单到不可思议。在Home Assistant的集成页面添加“ESPHome”集成输入你空调盒的IP地址或节点名它就会自动被发现。所有在ESPHome中定义的实体如那个“Air Conditioner”开关都会同步到Home Assistant中变成一个可以被随意调用的设备。4.2 实现语音控制以小爱同学/天猫精灵为例Home Assistant本身不具备直接对话的能力但它是一个强大的中控。我们需要一个“桥梁”方案一通过小米多模网关。如果你有小米多模网关并接入了Home Assistant可以利用Home Assistant的Xiaomi Gateway集成将ESPHome的空调开关“暴露”给米家App从而被小爱同学识别。这需要一些额外的配置。方案二使用第三方插件HACS。在Home Assistant中安装“Xiaomi Miot Auto”或“天猫精灵/小爱同学接入插件”。这些插件可以将Home Assistant中的任意设备模拟成小米或天猫精灵平台支持的设备类型从而实现语音控制。这是功能最灵活的方式。方案三Home Assistant Cloud。使用官方的Nabu Casa云服务可以轻松集成Google Assistant和Amazon Alexa对海外用户更友好。配置完成后你就可以说“小爱同学打开空调”、“天猫精灵把空调调到26度”了。家里老人小孩用起来毫无门槛。4.3 创建自动化场景让空调真正“智能”这才是智能家居的精髓。通过Home Assistant的自动化功能我们可以让空调盒子自己思考、自己行动。场景一回家前提前制冷触发条件我的手机GPS进入家庭区域范围地理围栏。执行动作如果室内温度传感器显示温度高于28℃则自动打开空调并设定为26℃。体验夏天回到家推开门就是一片清凉幸福感爆棚。场景二睡眠模式曲线触发条件晚上11点且卧室人体传感器检测到有人我已上床。执行动作自动将空调模式切换为“睡眠模式”低风速、微风并将目标温度从26℃逐步升高到28℃防止后半夜着凉。体验完全不用操心空调自动提供最舒适的睡眠环境。场景三节能与安全触发条件家中所有人员的手机都离开家庭区域全家外出。执行动作延迟15分钟防止短时间出入误触发后自动关闭空调。触发条件门窗传感器检测到客厅窗户打开超过5分钟。执行动作自动关闭客厅的空调并发送通知到手机“检测到开窗已关闭空调以节能”。体验省电省钱还安全放心。深度优化引入更多传感器。要实现上述自动化你需要额外的传感器数据。一个“温湿度传感器”如DHT22同样可以用ESP8266制作是必备的用于获取实时环境温度。人体存在传感器如毫米波雷达和门窗传感器则能让自动化逻辑更加精准和人性化。这些传感器都可以通过ESPHome或Zigbee等方式接入Home Assistant与你的空调盒子联动。5. 进阶优化与疑难排坑指南项目基本跑通后还可以从稳定性、用户体验和功能上进行深度优化。5.1 提升红外信号的可靠性问题盒子放在角落有时控制不灵。排查与解决检查供电使用质量差的充电头可能导致ESP8266工作不稳定红外发射功率不足。换一个品牌充电头试试。调整发射管角度确保三个并联的发射管没有被外壳完全遮挡并且有至少一个管子的发射路径能直接指向空调红外接收窗通常位于空调面板右侧或中间。增强发射功率除了并联还可以尝试减小限流电阻的阻值如从100Ω降到68Ω以增大通过发射管的电流从而提高发射强度。但要注意不要超过发射管的最大正向电流通常20mA建议用可变电阻调试找到最佳值。考虑反射红外光可以被浅色墙壁、天花板反射。如果直射路径被遮挡可以尝试将盒子朝向墙壁或天花板利用反射光来控制空调。5.2 解决Wi-Fi断连与响应延迟问题偶尔在App里点击没反应或者状态更新慢。排查与解决信号强度确保空调盒子所在位置的Wi-Fi信号良好RSSI -65dBm为佳。可以给ESP8266配置固定IP避免DHCP分配问题。ESPHome配置优化在YAML配置中增加以下配置可以提升网络稳定性wifi: fast_connect: true # 快速连接 power_save_mode: none # 关闭节能模式保持快速响应 reboot_timeout: 15min # 如果断网15分钟自动重启尝试恢复Home Assistant通信优化如果使用MQTT协议接入另一种方式确保MQTT服务器如Mosquitto稳定。对于ESPHome直接接入通信一般很稳定延迟主要来自网络。5.3 实现更精细的空调控制基础的开关和温度控制可能不够。如果你的空调支持可以尝试解析更多编码。方法用学习模式依次记录“风速高、中、低、自动”、“扫风开/关”、“模式制冷、制热、除湿、送风”等按键的原始编码。在ESPHome中定义更多动作你可以定义多个button或switch每个对应一个具体功能。更好的方式是使用ESPHome的climate组件。你需要为你的空调品牌创建一个自定义的climate组件这需要你分析出编码中代表温度、模式、风速的比特位。这有一定难度但网上有很多开源社区分享的常见品牌协议库如IRRemoteESP8266库可以直接引用。5.4 外观与安装的终极美化内部走线使用热熔胶或3M海绵胶将电路板、元件固定在外壳内避免晃动产生异响或短路。开孔技巧对于红外接收头和发射管的开孔使用小型手钻或电烙铁小心烫出圆孔。可以在孔内嵌入一小段黑色热缩管既能固定管子又能过滤杂散光让接收/发射更精准外观也更整洁。供电隐藏如果附近有插座可以选择带USB口的86型面板直接将Micro USB线插在面板上更为隐形。或者使用一根较短的USB线将充电头藏在空调背后或窗帘盒里。这个“巴适空调盒”项目从构思到落地总花费不过二三十元但带来的生活品质提升是巨大的。它不仅仅是一个遥控器替代品更是一个将传统家电无缝融入智能生活场景的入口。当你躺在沙发上动动嘴皮子就调节好室温当你下班快到家空调已提前开启迎接你——这种便捷和舒适正是DIY智能家居最大的乐趣和成就感所在。整个过程中从电路焊接的小心翼翼到代码调试时的抓耳挠腮再到最终成功控制空调那一刻的欣喜每一步都充满了动手的实感。最重要的是它完全根据你的需求定制没有厂商绑定没有隐私担忧一切尽在掌握。这个夏天不妨也动手做一个让你家的老空调焕发新生真正体验一把“科技让生活更巴适”的感觉。