2019-3-16 19:09:56 [显示全部楼层]
18807浏览
查看: 18807|回复: 8

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

[复制链接]
我们在做项目中经常会遇到这些问题:
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, 下载次数: 347

接线图 svg

程序.zip

93.58 KB, 下载次数: 409

程序文件

hnyzcj  版主

发表于 2019-3-16 22:07:10

楼主就是不走寻常路
回复

使用道具 举报

冀-闲庭信步  初级技匠

发表于 2019-3-21 11:28:44

hnyzcj 发表于 2019-3-16 22:07
楼主就是不走寻常路

请楼主解释下数据类型为什么不可以使用字母来表示呢?
回复

使用道具 举报

gray6666  初级技神

发表于 2019-3-25 09:43:30

思路独特,另辟蹊径,圈粉无数啊
回复

使用道具 举报

冬天  学徒

发表于 2019-4-2 08:19:51

你好,请问mind+里的ddfr0299mp3模块怎么用,谢谢
回复

使用道具 举报

bingxin05  学徒

发表于 2019-4-11 00:37:56

谢谢分享
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-21 22:39:41

楼主厉害!谢谢分享
回复

使用道具 举报

KkQ1VrB7W776  高级技师

发表于 2022-9-23 19:42:58

冬天 发表于 2019-4-2 08:19
你好,请问mind+里的ddfr0299mp3模块怎么用,谢谢

语文有问题,去论坛呀,mindli有MP3库在执行器哪里
回复

使用道具 举报

蓝色微笑  学徒 来自手机

发表于 2023-3-25 13:41:24

怎么接线是发送接发送,不是应该发送接接收么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail