【mind+】多块主控板之间进行串口通讯的方法

2019-03-163.6万
精华项目
AI 快速预览详细 收起
本文介绍了多块主控板之间进行串口通讯的方法,以解决端口不够、模块冲突等问题。通过使用UNO板采集DHT11传感器数据,并通过串口发送给另一个UNO板解析显示。文章详细说明了硬件连接方式和软件编程方法,包括数据拆分发送和接收端解析。此外,还提到了使用蓝牙串口透传模块和物联网模块等扩展应用。
我们在做项目中经常会遇到这些问题:
1、要接一堆传感器,结果主控板端口不够用了。
2、要接一堆传感器,但是各种电子模块之间有冲突,例如红外接收和声音播放冲突了,dht11和软串口冲突了,等等等等。
3、要使用大电流设备容易干扰传感器的数值,例如大功率电机影响到模拟输入的稳定性。
4、两个板子比较远要进行无线通讯,例如做一个蓝牙手柄控制小车。
5、要同时监听多个状态,单线程不够用。
等等。。。


这些情况下最简单的方法就是使用多个主控板,把不同的功能分开来运行,多个板子之间进行通讯即可。


那么问题来了,如何进行两个板子间通讯呢?我们选取常用的串口通讯为例。我们要实现的目的是:
一个UNO板采集dht11传感器数据,然后每隔几秒钟发送一次给另外一个UNO板解析出来并显示到屏幕上。


分析一下:
板A采集多个数据,发送给板B,使用串口通讯的话每次只能发送一个字节,因此数据要拆分发送。
硬件上:其中硬件连接就使用硬件串口TX和RX,注意交叉连接以及两个板子的GND要连接到一起。
软件上:需要板A发送多个数据,例如温度为20,湿度为60,如果发送2060,那么板B收到后不知道哪个是温度哪个是湿度,因此我们要规定一下发送顺序,例如发送1,20,2,60,这样B板收到1就知道接下来的是温度,收到2就知道接下来的是湿度数据了。


硬件连接形式如下:

【mind+】多块主控板之间进行串口通讯的方法图1

左边为接收端,右边为发送端

板A程序如下:
【mind+】多块主控板之间进行串口通讯的方法图2

板A定时发送数据,发送数据时采用1,数据1,2,数据2的形式方便板B收到之后可以知道多个数据分别是什么

板B程序如下:
【mind+】多块主控板之间进行串口通讯的方法图3
板B接收到串口数据后根据1和2分别取出对应的值以显示出来

效果:
【mind+】多块主控板之间进行串口通讯的方法图4

更多应用:
以上两个板子怎么实现连接可以使用多种方式就有多种效果了,关键是掌握通讯的过程和方法。
使用两个蓝牙串口透传模块,一个设为主机一个为从机,就可以轻松实现无线传输或者蓝牙小车等
【mind+】多块主控板之间进行串口通讯的方法图5

使用一个物联网模块XBEE组网模块或者microbit板子的无线广播功能,就可以把学校里面多个班级的噪音实时传输到物联网平台了

更多想法欢迎分享。。。




UNO R3 2.zip

73.19 KB, 下载次数: 8829

接线图 svg

程序.zip

93.58 KB, 下载次数: 8842

程序文件

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
蓝色微笑
蓝色微笑
怎么接线是发送接发送,不是应该发送接接收么
三春牛-创客
三春牛-创客
楼主厉害!谢谢分享
bingxin05
bingxin05
谢谢分享
冬天
冬天
你好,请问mind+里的ddfr0299mp3模块怎么用,谢谢
KkQ1VrB7W776
KkQ1VrB7W776回复冬天
语文有问题,去论坛呀,mindli有MP3库在执行器哪里
gray6666
gray6666
思路独特,另辟蹊径,圈粉无数啊
hnyzcj
hnyzcj
楼主就是不走寻常路
冀-闲庭信步
冀-闲庭信步回复hnyzcj
请楼主解释下数据类型为什么不可以使用字母来表示呢?
- 没有更多了 -