ESP32 Wroom32红外传输代码失效求助(IRremote v4.4.1)
问题排查与修复方案
代码层面错误
- 串口初始化错误:
setup()里的Serial.println(9600)是错误用法,串口初始化需调用Serial.begin(9600),println仅用于输出内容,无法完成波特率配置。 - 参数合理性验证:IRremote v4.4.1的
sendSony函数签名为void sendSony(uint16_t aAddress, uint8_t aCommand, uint8_t aNumberOfRepeats = 0),你传入的地址0x01、命令0x34、重复次数0格式合规,但需确认是否与接收设备的协议参数匹配。
修复后的代码:
#include <IRremote.hpp> #define IRPin 26 // Transmitter pin uint8_t sCommand = 0x34; uint8_t sRepeats = 0; void setup() { Serial.begin(9600); // 修正串口初始化 IrSender.begin(IRPin); Serial.println("IR transmitter initialized"); // 增加初始化状态提示 } void loop() { IrSender.sendSony(0x01, sCommand, sRepeats); Serial.println("IR send...."); delay(5000); }
硬件层面排查
- 供电功率问题:多数红外发射模块需要5V供电才能保证有效发射功率,你当前使用3.3V可能导致信号微弱甚至无法被接收,建议将
+引脚改接ESP32的5V引脚测试。 - 连接可靠性检查:确认S引脚与ESP32引脚26的连接牢固,GND引脚与ESP32地端接触良好,无虚焊或松动情况。
- 模块载波兼容性:Sony红外协议默认使用40kHz载波,确保你的发射模块支持该载波频率(通用型红外模块一般兼容)。
调试技巧
- 用手机摄像头对准红外发射头,发送信号时观察是否有肉眼不可见的闪烁(手机摄像头可捕捉红外光):无闪烁说明硬件或代码未输出信号;有闪烁则说明信号已发出,需排查接收端或协议参数匹配问题。
内容的提问来源于stack exchange,提问作者Mzi
相关产品推荐
相关产品推荐

