ESP32-S3 控制 红外遥控

ESP32-S3 控制红外遥控实验

红外遥控器是日常生活中常见的控制设备,广泛应用于家电、智能小车和机器人等项目中。本文介绍如何用 ESP32-S3 接收红外遥控器信号,并在串口打印对应的控制码。


一、实验名称

红外遥控实验


二、接线说明

红外接收模块 ESP32-S3开发板
IR 10
VCC 3.3V 或 5V
GND GND

注意事项

  1. 红外接收模块可以使用 3.3V 或 5V 电源,具体参考模块规格。
  2. 安装红外库:IRremoteESP8266-master.zip,方法:项目 → 导入库 → 添加 .ZIP 库

三、实验现象

程序下载成功后,打开串口监视器,按下遥控器按键,串口会输出对应的红外编码(十六进制数)。
每个按键都有唯一编码,可以用于智能家居控制或小车控制。


四、完整代码示例

#include "public.h"
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

// 红外接收引脚
#define kRecvPin  10

// 创建红外接收对象
IRrecv irrecv(kRecvPin);
decode_results results;

void setup() {
  Serial.begin(115200);   // 初始化串口
  irrecv.enableIRIn();    // 启动红外接收
}

void loop() {
  if (irrecv.decode(&results)) {
    // 打印红外码(十六进制)
    serialPrintUint64(results.value, HEX);
    Serial.println("");
    irrecv.resume();  // 接收下一个值
  }
  delay(100);
}

五、代码讲解

  1. 引脚定义
#define kRecvPin 10
  • IR:红外接收模块的数据引脚,接 ESP32 的 GPIO10。
  1. 创建红外接收对象
IRrecv irrecv(kRecvPin);
decode_results results;
  • irrecv:红外接收器对象,用于接收遥控器信号。
  • results:存储接收到的红外信号数据。
  1. 初始化串口和红外接收
Serial.begin(115200);
irrecv.enableIRIn();
  • 初始化串口,用于输出控制码。
  • 启动红外接收功能。
  1. 读取红外信号并打印
if (irrecv.decode(&results)) {
    serialPrintUint64(results.value, HEX);
    Serial.println("");
    irrecv.resume();
}
  • 判断是否接收到信号。
  • serialPrintUint64:将遥控器信号以十六进制输出。
  • irrecv.resume():准备接收下一个信号。
  1. 延时
    delay(100):防止串口输出过快。

六、实验效果

  1. 打开串口监视器,波特率设置为 115200。
  2. 按下遥控器按键,串口显示类似:
1FE48B7
1FE58A7
1FE7887
  1. 不同按键输出不同编码,可用于控制 LED、小车或其他外设。

七、进阶扩展

  1. 控制 LED 灯
    根据按键编码控制不同颜色或闪烁模式的 LED。

  2. 小车遥控
    使用遥控器实现前进、后退、左转、右转控制。

  3. 智能家居
    红外控制家电,如风扇、电视,实现远程控制功能。


八、总结

通过本实验,学习了:

  • ESP32-S3 接收红外信号的方法
  • 使用 IRremoteESP8266 库简化信号解析
  • 串口输出红外编码,用于其他控制逻辑

本实验是 智能家居、机器人遥控 项目的基础,结合其他传感器和外设可以实现丰富的功能。

posted @ 2025-08-16 14:55  jeikerxiao  阅读(185)  评论(2)    收藏  举报