红外遥控 VS1838B 怎么接 Arduino?IRremote 库解码遥控按键

2026-10-21 16:40:26 6阅读

家里的电视、空调遥控器随手就能拿来控制自己做的 Arduino 小项目:用 VS1838B 这个红外接收头把遥控器的按键码读出来,再让 Arduino 去开个灯、换个档、翻个页。这篇讲清楚引脚、接线和解码代码。

接收头原理

遥控发送的是调制成 38kHz 载波的红外信号。VS1838B 是自带载波解调的一体化接收头,把收到的信号解调后从输出脚送出一串高低电平,正好对应遥控器每个按键的编码。它常见三只脚:信号脚、5V、GND,注意不同封装引脚顺序会不一样,看丝印或数据手册确认。

VS1838B 红外接收头的三脚引脚定义(信号-5V-GND)

接线只要三根

VS1838B 的供电接 5V 和 GND,信号输出脚接 Arduino 的一个数字脚(下面用 D2)。它比较吃供电,接在面包板长线上偶尔收不到,用的时候尽量让线短一点、供电稳一点。

VS1838B 红外接收头与 Arduino 接线示意

解码代码

用 IRremote 库(Arduino IDE 库管理器里搜“IRremote”)就能解码,按下遥控器按键,串口会打印出对应的协议和按键编码:

#include 
const int RECV_PIN=2;
void setup(){
Serial.begin(115200);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
}
void loop(){
if(IrReceiver.decode()){
uint32_t code=IrReceiver.decodedIRData.decodedRawData;
Serial.print("码值: "); Serial.println(code, HEX);
if(code==0xFFA25D) Serial.println("按下了 1");
IrReceiver.resume();
}
}

把解码用起来

先跑一遍解码代码,把遥控器每个按键的码值记下来,再在 if 判断里写对应的动作,就能实现「按 1 开灯、按 2 关灯」。要控制更多东西,把某个码值的分支里改成操作继电器或 PWM 就行,逻辑和普通的按钮一模一样,只是一键变成“无线”触发了。

常见问题

一是供电不足会经常收不到,优先保证 5V 稳定。二是红外线是直线传播,中间别放遮挡物,接收端对着遥控器。三是不同遥控器同一按键码值可能不同,务必用自己手头的遥控器先解一遍。


作者:工具猎人
链接:https://www.aiddithome.com/p/1355b0b1ed883a.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论

供电稳这个确实是坑,面包板长线容易白搭。

线比代码多
2楼 · 1天前

先解一遍码再写动作,顺序很关键,不然乱猜码值。

拆开看看再说
3楼 · 1天前

38kHz 解调这个细节讲明了,难怪接收头要选对型号。

只看不说话
4楼 · 1天前

拿着电视遥控器控制 Arduino,这个玩法挺实用的。