VS1838红外遥控接收模块怎么接线?Arduino读取遥控按键IRremote教程

2026-10-18 16:35:58 5阅读

想用家里的遥控器遥控一台小车、或给电扇加个遥控开关,红外接收是最便宜最实用的方案。VS1838是一颗几乎人手一颗的红外接收头,配合Arduino的IRremote库,几十行代码就能读出遥控器每个按键,进而控制设备。这篇文章把接线和读键讲清楚。

先认识三只脚:一根信号走天下

VS1838是普通三脚封装的红外接收头,引脚一般是VCC(电源)、GND(地)、OUT(信号输出),不同视角摆放引脚顺序不同,一定要对照丝印或数据手册。它内置了红外解调和放大,输出的是已经解调好的串行信号,直接喂给Arduino就能读。

它工作在38kHz载波,也就是一般家用电器的红外遥控标准频率。前面那颗黑色圆顶里是接收管,会滤掉环境里的红外杂光干扰,尽量只接收遥控器发来的信号。

接线示范:信号脚接带中断的数字口

接法很标准:VCC接5V(3.3V也能用但距离会短)、GND接地、OUT信号脚接Arduino的一个数字脚,最好接在支持外部中断的口上(Uno的2号或3号),这样读取更及时。同时给VCC到GND之间并一个0.1微法的小电容,能明显压掉杂波、改善接收。

把接收头正面(黑色圆顶)对着遥控器,装在项目上时记得留出“视野”——红外是直线传播的,别被壳子挡住,否则按了没反应。

读键就一个库:IRremote几步出按键码

Arduino上用IRremote库最省心。初始化时启用接收、注册接收回调;每次按遥控器,接收回调里就会拿到一串十六进制按键码。第一次先用一个“打印所有收到值”的小示例,挨个按遥控器按键,把每个键对应的十六进制码记下来,之后就能在程序里做“按这个键干这个事”的匹配了。

遥控器一个键发出来是一个固定的协议值,开头会和红外协议有关(常见的是NEC协议)。你只要在自己的码表里对号入座,代码就懂得区分“音量+”“模式”“开关”这些不同按键。

能做点啥:遥控小车到智能家居开关

最经典的玩法是遥控小车:用遥控器上下左右键控制电机方向,比手机连蓝牙更简单直接、也不怕网络延迟。再进阶可以做遥控台灯/风扇开关、做个“按一下切换模式”的显示菜单,或者做红外转发的学习器——把普通家电遥控器收编进你的小系统里。

收不到信号或乱码,三个方向排查

按了没反应,先确认接收头正面正对遥控器、中间没有遮挡,再确认OUT确实接到了带中断的数字口。读到乱码或不稳定,先加那个0.1微法的滤波电容、检查共地;两个红外设备太近互相干扰也会导致乱码,拉开距离。还有别在阳光直射或强红外环境下用,会盖过遥控信号。

VS1838是把“遥控器”变成“可编程按键”的最低价入口。三只脚接对、IRremote几行代码读完按键码,小车、灯、风扇都能被你手里的遥控器指挥起来。


作者:云台四足控
链接:https://www.aiddithome.com/p/2362aed74a6a05.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
默默点赞的路人
1楼 · 16小时前

加个0.1uF电容压杂波,接收稳不少

好说好说
2楼 · 16小时前

先打印所有按键码记下来,之后对号入座就行

学生党玩机
3楼 · 16小时前

红外是直线传播,别被外壳挡住,我踩过这个坑

周五下班搞一搞
4楼 · 16小时前

接带中断的数字口读取更及时,这个点很关键