行业资讯

红外模块串口通信

发布时间:2026/8/8 11:50:55
红外模块串口通信 我现在有个问题 我是通过一个模块红外模块 这个模块是两端都有tx rx gnd vcc 然后我现在有两个板子 一个板子是内机作为发送端 一个板子作为外机作为接收端 串口是/dev/ttyS4 我现在有一个问题 我通过echo 1 /dev/ttyS4 作为接收端的rx等会亮 但是我不知道接收端是否接收到了数据 我想问 这个两个板子可以这样通信吗答案是完全可以这样通信。这种通过红外模块进行“串口透传”是非常经典的通信方式。你现在的情况非常好接收端红外模块的 RX 灯亮起说明物理层的红外光信号已经成功跨越空间并且被接收端的硬件捕捉到了。你现在距离成功只差最后一步确认 Linux 系统层面是否正确解析了这些电信号。为了验证并打通这最后一步你可以按照以下步骤进行操作和排查1. 在接收端开启监听既然接收端模块的 RX 灯亮了你需要让接收端的 Linux 系统“竖起耳朵”听串口的数据。在发送数据之前先在外机接收端的终端输入以下命令cat/dev/ttyS4执行后终端会卡住阻塞状态这说明它正在监听该串口。此时你在内机执行echo 1 /dev/ttyS4正常情况下外机的终端就会打印出1。2. 统一并降低波特率最常见的坑如果 RX 灯亮了但cat收不到数据或者收到的是乱码90% 的原因是波特率不匹配或红外模块性能受限。普通的红外透传模块对波特率的支持通常比较低很多默认是 9600如果用 115200 可能会丢包或根本无法识别。请在内机和外机上同时执行以下命令将波特率统一设置为 9600并开启原始模式避免 Linux 终端将数据当作控制字符吃掉stty-F/dev/ttyS49600raw-echo设置完毕后再重复第一步的监听和发送测试。3. 检查硬件交叉接线请再次确认你板子和红外模块的连线。标准的 UART 通信需要交叉接线除非你的模块说明书特意强调直连内机发送端板子的TX接 模块的RX板子的RX接 模块的TX。外机接收端板子的TX接 模块的RX板子的RX接 模块的TX。(如果外机板子的 RX 没有接到模块的 TX 上模块收到了信号 RX 灯会亮但数据传不到外机的 CPU 里)4. 使用更清晰的测试指令使用echo 1测试时echo会默认带一个换行符有时候在终端里看起来不直观。你可以尝试发送一串英文字符来进行测试接收端外机准备cat/dev/ttyS4发送端内机发送echoHello_Outdoor/dev/ttyS4总结排查思路物理层灯亮已通→\rightarrow→检查连线模块 TX 是否进板子 RX→\rightarrow→统一波特率设为 9600→\rightarrow→软件监听cat。按照这个逻辑你应该很快就能在终端看到发送的数据了。