2015年7月1日 星期三

Arduino 之間的溝通 (一) 通訊方式

在 arduino 上, 雖然都算有十幾個 I/O, 但係左接右接, 有時都唔係好夠用.
特別係如果想 arduino 板之間要傾計, 就更加有問題了.

如果只係兩塊, 最簡單就係用串口, 或者 經 softwareSerial 都 OK.  RX 接 TX, 詳情唔駛講了.

不過, 如果有幾塊 arduino 板想傾計, 就唔同咁講了, 呢個 Topic 主要都係想講呢樣.
基本上我聽過又或者識既, 有以下既方法:

1. 串口通訊

優點: 簡單, 不用太多資源, 支援任何兩片之間通訊
缺點: 發送時間比較慢, 由於每片 arduino 有自己的工作, 如果由第 n 塊發給第 n-1 塊, 就要浪費很多次通訊了.

如果用 Serial, 由於 Serial 係點對點連線, 要串通哂都唔係易.
加上每塊 arduino 既串口有限, mega 都係得 4 個, 一般只係得一個, 點連?
最簡單可以用 ring 既連接, 當每塊板有編號, 第 n 塊既 RX 接 第 n-1 塊既 TX, 一直串落去, 最後一塊接番上第一塊.
而每個 request 都有發送同接收地址, 收到唔係自己既就 pass 比下一位, 如此類推.
當收到比自己既就處理並停止發送, 如果收番自己發出既就當無人又停止.


詳情請看.....(未發表, 老作中, 遲下更新)

2. i2c (Inter-Integrated Circuit, I2C or IIC)

優點: 速度快
缺點: 一切通訊由 master 發起, slave 只可以跟 master 通訊, 只有一個 master 可以接其他 i2c device,

呢個係我自己比較喜歡既方式, 優點係速度快同簡單. 暫時仲未研究到一塊 arduino 點樣可以接上兩個 i2c bus, 所以當某塊 arduino 以 slave 身份加入 i2c 後, 就唔可以用佢去接其他 i2c device 了.
如果有需要分開去接唔同既 i2c device, 就用唔到呢個方法了.
詳情請看.....(未發表, 老作中, 遲下更新)


3. SPI (Serial Peripheral Interface)

優點: 未知
缺點: 未知

有點似 i2c, 但仲未掌握到, 知道有咁既野先, 又遲下再研究.

4. Network IP (by network module, e.g W5100)

優點: 支援任何兩片之間通訊
缺點: 另購硬件, 網路的庫比較大, 耗資源, 需要額外的網路裝置

如果話用 IP (玩開PC, 最簡單就係 IP 了), 每塊 arduino 板都有裝埋 network.
而且, 個 network 既 library 都唔細, 唔化算.  呢個我都無去研究了.

5. Network IP (by serial connection, e.g.ESP8266)

優點: 支援任何兩片之間通訊, 相對簡單, 無線通訊
缺點: 另購硬件, 需要無線網路配合

我都唔知應該點叫, 由於 ESP8266 之類既 card, network 部份在 module 之內, 對 arduino 而言, 只係 serial communization.
呢個可能係一個幾好既方案, 而且仲要係無線通訊.
但係家陣 ESP8266 既庫未算完善, 而且仲要有一個 wireless 既 router 配合, 都係遲下再研究.

6. 藍牙

優點: 點對點無線通訊
缺點: 另購硬件, (未試過, 唔知得唔得)

藍牙基本上又係無線既 serial 連綠, 但手上無咁多藍牙模塊可以試, 不知是否可以 pair 多個 device...
如果可以, 不知如何分辨了...


7. (見到有新既就再加)

沒有留言:

張貼留言