利用串口实现Arduino双机多通道数据传输

时间:2022-06-09 11:40:11

利用串口实现Arduino双机多通道数据传输

摘要:近年来随着计算机技术,移动信息以及物联网技术的不断发展,移动互联网的成熟运用,物联网为我们的生活带来了很大的方便,越来越多的应用场合中需要嵌入式系统进行无线传输。本文研究了Arduino系统利用无线串口实现双机多通道数据传输的方法,实现了数据传输时的同步与校验。

关键词: Arduino串口多通道 数据传输

中图分类号:TN923 文献标识码:A 文章编号:1007-9416(2016)06-0000-00

1 需求概述

Arduino是当前最流行的开源电子平台之一,易于上手节约学习成本,缩短了开发周期,从日常生活中的智能小装置到3D打印机,Arduino让人们发现很多以前只有专业人员才能进入的领域普通爱好者也是可以涉足的。

在一个五轴机械臂项目中,需要使用5个电位器对机械臂的相应关节进行遥控,一般通用的采用PPM控制方式的模型遥控器只有两个十字摇杆,在数量上以及操作方式上都无法满足需求,因此笔者用两个Arduino实现了多通道控制信号的发送与接收。

2 Arduino的串口通信

在单片机的实际应用中,串口通信非常普遍,只需少量几根线就能和其他串口设备通讯。 Arduino是通过USB转成TTL串口下载程序的,数字接口D0和D1就是TTL串口中的RX和TX。Arduino中提供了十余个串口相关函数,使用Serial.begin()指定传输时的波特率即可,例如Serial.begin(9600),表示速率为9600bit/s,收发双方的速率要保持一致。在程序中,使用Serial.print() 函数可以从串口输出我们需要的变量或者字符串信息(以ASCII文本方式),利用IDE中的串口监视器,开发者可以查看单片机输出的信息,这也是调试程序的主要手段之一。此外,还有一个Serial.write()方法,不同于print方法,此方法是把二进制数据输出到串口。

3 收发实现

以5通道遥控为例,笔者设计的收发同步与校验方案如下:发射端的Arduino每组发送7个数据,第1个为同步起始标记(255,即8个二进制1),然后是5个控制信号(s1~s5),每个信号用于操作指定关节的舵机,此外还需要一个校验数据,本文采用了较简单的校验方式,把5路信号值相加作为校验数据一并发送出去。本项目中采用的是数据发送方式,Serial.write()方法发送的数据只能有1个字节,也就是0-255之间的整数。如果s1到s5累加得到的数据超过255,系统会舍弃高位部分,只发送低位的字节。

因为串口接收的数据只有1个字节,所以计算校验数据时需要把s1到s5的和强制类型转换为byte类型,这样才可以和接收到的校验数据serv[6]做比较,在接收端的串口监视器中可以看到,每一秒都会接收到一组数据,和发送方传出的数据完全一致,收发功能顺利实现。

图1所示,Arduino中的串口传输非常简单方便,我们可以看到在程序中没有任何涉及蓝牙或者其他无线串口模块的特殊命令,本文中笔者使用的是基于SI4432芯片的无线串口透传模块,只需要两个配置相同的模块分别接在收发两端的Arduino上即可(模块和Arduino的RX和TX接叉连接),如果使用蓝牙模块,其电路接法与程序都不需要变化,只需要提前使用AT命令给2个蓝牙模块进行主从配对即可。

因为Arduino程序上传也是通过串口实现的,为了避免冲突,在更新程序时需要先把串口设备的RX/TX线断开,否则无法上传程序。

参考文献

[1]赵志,著.Arduino开发实战指南[M].机械工业出版社,2015.

[2]陈吕洲,著.Arduino程序设计基础[M].北京航天航空出版社,2014.

上一篇:中学语文教学对学生品格的培养研究 下一篇:电力配网系统无功优化方法研究