0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样在两个或更多Arduino板之间创建长距离串行通信

454398 来源:工程师吴畏 2019-07-26 14:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们知道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。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串行通信
    +关注

    关注

    4

    文章

    610

    浏览量

    37262
  • Arduino
    +关注

    关注

    191

    文章

    6534

    浏览量

    197657
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索 LTC4332 SPI 扩展器:长距离工业通信的理想之选

    探索 LTC4332 SPI 扩展器:长距离工业通信的理想之选 工业控制与传感器、照明和音响系统控制等领域,长距离、高噪声环境下的可靠通信
    的头像 发表于 05-12 16:55 322次阅读

    IDT VLX1000 PanelPort LinkXtend:长距离显示信号传输的理想解决方案

    IDT VLX1000 PanelPort LinkXtend:长距离显示信号传输的理想解决方案 电子设备的设计中,长距离传输显示信号一直是一具有挑战性的问题。信号
    的头像 发表于 04-13 18:05 432次阅读

    是否可以通过基于UART的DMA两个外部SRAM之间发送和接收数据?

    两个MPC5777C微控制器通过外部总线接口连接到两个外部SRAM。是否可以通过基于UART的DMA两个外部SRAM之间发送和接收数据?
    发表于 04-06 07:38

    两个RS485(Modbus RTU)主站与主站之间如何通讯

    本产品能很好解决Master-1主站向模块写入数据,Master-2主站读取数据;Master-2主站向模块写入数据,Master-1主站读取数据。由此解决两个主站之间的互相读通信难题。
    的头像 发表于 02-08 15:32 1003次阅读
    <b class='flag-5'>两个</b>RS485(Modbus RTU)主站与主站<b class='flag-5'>之间</b>如何通讯

    两个RS485-Modbus主站如何通讯

    本产品能很好解决Master-1主站向模块写入数据,Master-2主站读取数据;Master-2主站向模块写入数据,Master-1主站读取数据。由此解决两个主站之间的互相读通信难题。
    发表于 02-08 15:32 1次下载

    两个MCU之间快速传输数据的方法

    一、MCU之间通信的主要方式 1、采用硬件UART进行异步串行通信 这是一种占用口线少,有效、可靠的通信方式;但遗憾的是许多小型单片机没
    发表于 01-19 07:07

    单片机中的串口通讯串行同步通信串行异步通信

    串口是串行接口(serial port)的简称,也称为串行通信接口COM接口。串口通信是指采用串行
    发表于 01-15 08:06

    一文读懂:直线模组两个滑块距离能否调节?

    关键问题:直线模组中的两个滑块距离可以调节吗?答案并非绝对,而是要根据直线模组的具体类型、结构设计来综合判断,不同类型的直线模组滑块距离调节上有着截然不同的特性。​飞
    的头像 发表于 12-29 15:47 528次阅读
    一文读懂:直线模组<b class='flag-5'>两个</b>滑块<b class='flag-5'>距离</b>能否调节?

    无人机长距离通信技术革新和应用

    探索无人机长距离通信中的创新应用与未来潜力,揭示关键技术背后的秘密,打造高效、安全的空中通信新格局。
    的头像 发表于 12-03 12:03 528次阅读

    并行与串行的基本通信方式

    之间还有间隔,因此传输效率不高。单片机与单片机之间,单片机与计算机之间通信时,通常采用异步串行
    发表于 11-24 06:36

    长距离光模块直连短距离光纤:接收光器件的“隐形杀手”

    通信系统里,光模块是光信号传输的核心,其性能关乎网络稳定与可靠。但长距离光模块未经衰减直接接入短距离光纤时,接收端光器件易受损,背后涉及复杂的光功率管理与工程考量。
    的头像 发表于 10-10 17:12 1254次阅读

    长距离光模块直接安装导致器件损坏问题解析

    光纤通信系统中,长距离光模块因其高发射光功率特性,直接连接短距离光纤时极易引发接收端器件损坏。本文将从光功率过载机制、典型损坏场景、防护
    的头像 发表于 09-26 17:16 1428次阅读

    “爬电距离”与“电气间隙”是怎样计算的?

    之间的最短路径。 电气间隙 两个导电零部件之间或导电零部件与设备防护界面之间测得的最短空间距离
    的头像 发表于 09-10 17:29 3.9w次阅读
    “爬电<b class='flag-5'>距离</b>”与“电气间隙”是<b class='flag-5'>怎样</b>计算的?

    长距离传输新突破:山泽HDMI线确保信号稳定无损

    构建家庭影院、商业展示系统大型会议室时,长距离传输高清视频和音频信号常常面临一巨大的挑战——如何保证信号的稳定性和完整性?传统的HDMI线
    的头像 发表于 08-10 15:06 4474次阅读

    全面了解串行通信

    、核心概念 数据传输方式 : 串行通信 :数据单条线路上依次传输,每个时钟周期传输1位(01)。 并行通信 :数据通过多条线路同时传输多
    的头像 发表于 07-19 14:13 2268次阅读