首页 / 行业
怎样在两个或更多Arduino板之间创建长距离串行通信
2019-07-26 14:37:00
我们知道Arduino有几条用于快速数据传输的内置总线。例如,显示器通常使用SPI总线。通常通过I2C总线连接各种传感器。还有流行的UART,它通常与USB接口一起使用以与计算机交换数据。但所有这些方法都有一个严重的缺点:它们不能在远距离工作。
想象一下我们需要从房屋顶部的传感器收集数据的情况,并且取决于传感器证词,在我们的地下室切换继电器。我们怎样才能成功呢?我们肯定需要一个强大的抗噪声接口 - 可以使用多年的接口。 RS-485模块可以顺利完成这项工作。
在本文中,我们将使用长电缆和RS-485接口连接两个Arduino电路板。
什么是RS-485?
RS-485是一个串行接口,是RS232的前身。这个模块因为在RS232接口上运行的旧计算机的COM端口而声名鹊起。
RS-485模块。
RS-485模块的最大范围是1200米,这意味着我们可以将信号扩展到1.2km。如果线路上有特殊放大器,它可以进一步扩展。这种长导线的传输速度约为60 kb/s,这是传输传感器数据的相对较好的速度。
RS-485电缆使用双绞线。该电缆仍用于以太网线路,使其易于使用。要在距离超过500米的地方传输数据,您需要一根屏蔽双绞线。 32个设备可以连接到一根电缆,但同时只有一个设备可以传输数据。
所需的硬件
2 x Arduino
2 x RS-485模块
面包板
部分电线
所有必需的硬件。
使用RS-485连接两个Arduinos的原理图
为了通过RS-485接口连接两个Arduino板,我们需要一个特殊的模块。通常,此类模块使用流行的MAX485芯片。
项目原理图。
长度为几米的电缆连接。
注意:在上图中,电线A和B是直的。如果距离很小,这就足够了。如果电缆连接长度为几米,则必须使用双绞线!
RS-485的接收器和发送器程序
正如我们已经注意到的,如果有多个设备连接到该线路,则一次只能有一个设备传输数据。我们需要以某种方式通知所有其他设备我们已准备好传输,并且它们必须保持沉默并倾听。这可以在联系人 DE 和 RE 的帮助下完成。
让我们编写两个程序。每隔500毫秒播放一次“ping”文本。另一个将收听广播,并在收到文本“ping”时,闪烁LED#13。
发射器程序
#define SerialTxControl 2 // contact # 2 will switch receiver / transmitter mode
#define RS485Transmit HIGH
#define RS485Receive LOW
void setup (void) {
Serial.begin (9600); // set the serial port to 9600baud speed
pinMode (SerialTxControl, OUTPUT);
digitalWrite (SerialTxControl, RS485Transmit); // put the device into transmitter mode
}
void loop (void) {
Serial.print (“ping”); // send text
delay (500);
}
接收方程序
#define SerialTxControl 2
#define RS485Transmit HIGH
#define RS485Receive LOW
char buffer [100];
byte state = 0;
void setup (void) {
Serial.begin (9600);
pinMode (13, OUTPUT);
pinMode (SerialTxControl, OUTPUT);
digitalWrite (SerialTxControl, RS485Receive); // put the device into receiver mode
}
void loop (void) {
int i = 0;
if (Serial.available ()) {// if any data came to the port
delay (5); // wait a bit for the entire data packet to be accepted by the port
while (Serial.available ()) {
buffer [i ++] = Serial.read (); // read data and write it to the buffer
}
}
if (i》 0) {// if there is something in the buffer
buffer [i ++] = ‘ 0’; // convert the buffer contents to a string by adding a null character
if (strcmp (buffer, “ping”)) {// if the accepted string is equal to the ping text
digitalWrite (13, state); // blink LED
state =! state;
}
}
}
将这两个程序加载到每个Arduino板上。如果一切正确组装并连接到电源,连接到引脚13的LED将在第二块板上开始闪烁。
的 结论
RS-485自90年代后期开始应用于各种工业系统中,这些系统需要在存在电磁干扰的情况下长距离传输数据。通常,RS-485接口与专用协议一起使用,例如ModBus或DMX512。
最新内容
手机 |
相关内容
从概念到生产的自动驾驶软件在环(Si
从概念到生产的自动驾驶软件在环(SiL)测试解决方案,测试,解决方案,自动驾驶,传感器,评估,车辆,自动驾驶软件在环(SiL)测试是一种在计算什么是带阻三极管,带阻三极管的基本
什么是带阻三极管,带阻三极管的基本结构、工作原理、电阻比率、常用型号、应用、检测、操作规程及发展历程,三极管,检测,工作原理,什么是高压接触器,高压接触器的组成
什么是高压接触器,高压接触器的组成、特点、原理、分类、常见故障及预防措施,高压,分类,闭合,用于,操作,损坏,AD694ARZ高压接触器是什么是射流继电器,射流继电器的基本
什么是射流继电器,射流继电器的基本结构、技术参数、工作原理、负载分类、如何选用、操作规程及发展历程,继电器,工作原理,分类,负什么是互感器,互感器的组成、特点、
什么是互感器,互感器的组成、特点、原理、分类、操作规程及发展趋势,发展趋势,分类,输入,计量,用于,信号,AD574AKD互感器是一种用于位移传感器结构类型及工作原理与应
位移传感器结构类型及工作原理与应用,工作原理,类型,结构,位移传感器,常见,效应,FDV302P位移传感器是一种用于测量物体位移或位置的加特兰毫米波雷达SoC芯片赋能室内
加特兰毫米波雷达SoC芯片赋能室内安防新应用,毫米波雷达,芯片,用于,稳定性,目标,感知,室内安防是一个重要的领域,随着技术的进步和人基于穿隧磁阻效应(TMR)的车规级电
基于穿隧磁阻效应(TMR)的车规级电流传感器,车规级,效应,导致,自旋,测量,电动汽车,随着电动汽车的快速发展和智能化驾驶技术的成熟,对