在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    579

    瀏覽量

    35614
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    188052
收藏 人收藏

    評論

    相關推薦

    RS-485和RS-232長距離電纜傳輸解決方案

    ? ? ? 工業自動化和監控系統中,數據傳輸的穩定性和可靠性至關重要。RS-485和RS-232作為種常見的串口通信標準,各自具有獨特的優勢和局限性。特別是
    的頭像 發表于 01-21 17:17 ?188次閱讀
    RS-485和RS-232<b class='flag-5'>長距離</b>電纜傳輸解決方案

    兩個不同頻率晶振靠的近會怎樣

    晶振的振蕩本質上是一種機械振動(壓電晶體層面)。當兩個晶振靠得很近時,它們的機械振動可能會相互影響。一晶振的振動可能會通過電路或者外殼等介質傳遞給另一
    的頭像 發表于 01-20 13:55 ?1073次閱讀
    <b class='flag-5'>兩個</b>不同頻率晶振靠的近會<b class='flag-5'>怎樣</b>

    差分信號與串行通信的關系 差分信號接收器的工作原理

    數據傳輸方式,它將數據按位順序逐個傳輸。串行通信中,差分信號被用來提高信號的抗干擾能力和傳輸距離。差分信號通過比較兩個信號
    的頭像 發表于 12-26 09:22 ?415次閱讀

    如何使用Arduino實現CAN總線通信

    的硬件模塊實現CAN總線通信。 硬件需求 Arduino :任何支持Arduino IDE的板子都可以,例如Arduino Uno、Meg
    的頭像 發表于 12-23 09:06 ?589次閱讀

    如何使用Arduino實現CAN總線通信

    CAN總線(Controller Area Network)是一種多主控制的串行通信協議,廣泛應用于汽車電子、工業自動化等領域。它以其高可靠性、實時性和靈活性而受到青睞。Arduino作為一
    的頭像 發表于 11-12 10:09 ?1417次閱讀

    ad如何設置兩個元器件的距離

    Altium Designer(簡稱AD)中設置兩個元器件之間距離,主要是通過設置元器件間的安全間距(Clearance)規則來實現的。這個規則定義了元器件
    的頭像 發表于 09-02 15:31 ?8952次閱讀

    如何使用SPIUART連接兩個ESP模塊?

    /metalphreak/esp8266_spi_driver. 但是誰能建議我,我如何使用SPI與兩個ESP模塊進行通信。 我怎樣才能將一ESP設為主服務器,另一
    發表于 07-19 16:08

    如何使用AT SAVETRANSLINK命令兩個設備(2 esp-07)之間創建橋接?

    如何使用 AT SAVETRANSLINK 命令兩個設備(2 esp-07)之間創建透明橋接?還是到目前為止是不可能的?
    發表于 07-17 06:53

    兩個ESP8266模塊之間如何進行TCP通信

    嗨,我有兩個ESP8266模塊,我希望它們之間進行TCP通信。 我已經編寫了固件,將一 ESP 配置為 AccessPoint,另一
    發表于 07-12 06:26

    使用UDP廣播兩個ESP8266之間進行通信,發送會存在延遲是怎么回事?

    我正在使用 UDP 廣播兩個ESP8266 (wemos) 之間進行通信。 作為測試,我只是從第一設備發送 10 個字節,第二
    發表于 07-11 06:27

    如何使用freeRTOS兩個任務之間傳輸任務數據?

    /溫度。 我想創建 CSV 文件來記錄一段時間內的數據。 我創建 I2C 任務的方法與示例中的 emFIlesystem 任務相同。 者都在運行,做著它們應該做的事情,但我覺得它
    發表于 07-03 07:55

    兩個PLC之間如何交互信號

    工業自動化系統中,PLC(Programmable Logic Controller,可編程邏輯控制器)是核心的控制設備。許多復雜的應用場景中,需要兩個多個PLC
    的頭像 發表于 06-14 16:57 ?4960次閱讀

    兩個銅片可以形成原電池嗎

    兩個銅片本身不能形成原電池,因為原電池的工作原理依賴于兩個不同電位的電極材料之間的氧化還原反應。
    的頭像 發表于 05-21 16:23 ?1204次閱讀

    CAN總線的傳輸距離與采樣點、傳輸時延之間的關系,你弄明白了嗎?

    CAN總線的最大傳輸距離與波特率、采樣點、傳輸時延之間存在什么樣的關系呢?如何理論計算出最大傳輸距離呢?本文將詳細解答這兩個問題。延時原理分析影響CAN
    的頭像 發表于 03-06 08:23 ?1081次閱讀
    CAN總線的傳輸<b class='flag-5'>距離</b>與采樣點、傳輸時延<b class='flag-5'>之間</b>的關系,你弄明白了嗎?

    CYW4373E是否支持BLE長距離LE編碼的PHY?

    你好,CYW4373E 是否支持 BLE 長距離 LE 編碼的 PHY?
    發表于 02-29 06:34
    主站蜘蛛池模板: 美国bj69 video18| 999毛片| 欧美性猛交xxxx免费看久久 | 凸输偷窥xxxx自由视频 | 久久亚洲成人 | 网络色综合久久 | 欧美色a电影精品aaaa | 日本三级黄色录像 | 欧美区在线播放 | 俺来也俺来也天天夜夜视频 | 日韩高清特级特黄毛片 | 99久久免费精品国产免费高清 | 国产chinesetube| 色婷婷婷婷 | 99pao在线视频精品免费 | 成年人在线网站 | 男人的天堂在线精品视频 | 一级全免费视频播放 | 亚洲成人网在线播放 | 在线欧美色 | 天天操天天摸天天射 | 天天天天天天操 | 在线观看www日本免费网站 | 亚洲天堂一区二区三区 | 国产九色在线 | 天天色综合社区 | 四虎永久免费地ww4hu57 | 久久国产午夜精品理论篇小说 | 天天久久影视色香综合网 | 免费爱爱视频网站 | 午夜亚洲视频 | 免费午夜不卡毛片 | 97视频免费上传播放 | 婷婷99视频精品全部在线观看 | 亚洲迅雷 | 一区二区三区在线看 | 黄黄视频在线观看 | 婷婷激情小说网 | 乱欲小说又粗又大 | 深爱婷婷 | 精品手机在线视频 |