想用家里现成的电视遥控器去控制小车、点灯、给机器人下指令?一块几块钱的红外接收头加一段解码代码就能实现。这篇文章把TSOP1838/1838接收头的接线和解码讲清楚。
红外接收头是什么,认准三根脚
TSOP系列红外接收头(如TSOP1838、VS1838)把红外光电二极管、放大器和解调电路集成在一起,专门接收38kHz载波调制的红外遥控信号。它解调后直接输出一串高低电平脉冲,交给主控去解析是哪个按键。
接收头一般是三根脚:VCC(供电)、GND(地)、OUT(信号输出,即脉冲信号)。这三根脚顺序每一批板子不一定一样,接之前一定要先看模块/元件上的丝印或图例,别盲接。

接线表:5V、GND、信号脚到D6
红外接收头接到Arduino Uno标准接法:VCC接5V、GND接GND、OUT(信号)接一个数字口(图上接D6)。OUT这根线就是关键的信号线,接到Arduino的数字IO就能被读。
为了提高信号稳定性,有些做法会在OUT上加一个上拉或下拉;绝大多数现成模块已经处理好,直接接数字口即可。接线见图,三根线一份表格。

解码遥控器:IRremote库自动识别协议
Arduino库管理器装IRremote库,建IRrecv对象并指定接收引脚,用irrecv.decode(&results)就能解码;先打开串口监视器按一下遥控器,记下每个按键对应的十六进制码值(比如电源键0xFF00),然后把“收到这个码就做什么动作”的逻辑写进程序。
常见协议(NEC、Sony等)IRremote库都能自动识别,不用自己对着时序抠解码。
解码成功就能玩很多:红外遥控小车(方向键控舵机/电机)、遥控开关灯、给机器人写一套“遥控指挥”指令集、甚至跨房间控制设备。注意红外是直线传播、中间别挡东西,环境强光也会干扰,但做桌面控制和机器人遥控完全够用。







红外直线传播,中间别挡东西,强光下会弱
拿电视遥控器给小兔子下指令挺好玩的
IRremote库能自动认协议,不用自己抠时序
OUT信号线接个数字口,解码出来的码照着用
三根脚顺序每批板子不一样,先看丝印别盲插