Arduino | I2C練習(1):使用兩個Arduino做溝通


Arduino | I2C練習(1):使用兩個Arduino做溝通


千里始於足下,動手做才知道Arduino的好玩

I2C的原理

I2C的原理請參見<I2C原理參考>,黑修斯此篇只有簡單介紹。
I2C通訊是利用兩條實體線進行的通訊機制,分別為序列資料線(SDA) 與 序列時脈線(SCL),中間需要串聯上拉電阻。
  • 主控端數量:可以多個  
  • 連線速率: 100kbps標準模式 400Kbps快速模式 3.4Mbps高速模式 
  • 確認機制:有,收到資料會發送通知資料 

實驗器材

  1. Arduino UNO 開發板
  2. Arduino MEGA 2560  開發板
  3. 1.8K Ω 的電阻 2個 
  4. 杜邦線6條 

實驗項目

  1. 使用兩個Arduino 開發板做溝通---單方面回傳hello 
  2. 使用兩個Arduino 開發板做溝通---透過指令回傳 

1.使用兩個arduino做溝通---單方面回傳hello

程式是參考趙英傑老師的書<超圖解Arduino互動設計入門 第二版>,用來熟悉I2C的軟體端操作,另外I2C可不是只有透過程式可以操作,也可以使用硬體的方式才操作。

動作設定

主從端設定
Arduino UNO主端(Master)
Arduino MEGA 2560從端(Client)
接線設定
UNO GND <---> MEGA 2560 GND
UNO 5V <---> 1.8K Ω 的電阻 <---> UNO SDA <---> MEGA 2560 SDA
UNO 5V <---> 1.8K Ω 的電阻 <---> UNO SCL <---> MEGA 2560 SCL

動作說明

主端(Arduino UNO)不斷發送"hello"的字串,透過I2C給從端3號(為Arduino MEGA 2560,黑修斯設定為從端3號),並透過Serial印出。

開啟序列埠來觀察

將Arduino MEGA 2560與電腦連接,開啟序列埠觀察。

主端(Arduino UNO)程式碼:本人是設定給Arduino UNO
從端(Arduino MEGA 2560)程式碼:本人是設定給Arduino MEGA 2560,並定址為3號從端

最後,你可以觀察到,確定有收到主端Arduino UNO透過I2C發過來的訊號。



2.使用兩個arduino做溝通---透過指令回傳

實驗二與實驗一的線路接法相同,差別在這次將UNO跟MEGA2560上的USB通訊埠一同連接電腦,因為此次是透過電腦下達指令(透過serial port)給主端,主端發出對應訊號透過I2C給MEGA2560,而MEGA2560再透過serial port印出。



動作說明

主端等待電腦端透過Serial發出訊號,若是接收到對應的指令,會透過I2C將相關指令發給從端3號,而主端會透過Serial回傳"指令1已經發送",而從端3號收到來至主端的指令會透過Serial印出。

實驗二從端程式:跟實驗一程式一樣,主端發送什麼指令,從端就印出什麼指令。
(請複製實驗一的程式碼)

實驗二主端程式:

開啟序列埠來觀察

開啟兩個序列埠來輸入與監測,對主端發送101010,看看結果。


確實程式的動作都有完美執行。



使用PuTTy連線測試

那我們來用看看PuTTy連線呢?
動作也有完美執行。
關於PuTTy的操作,請見這篇



好書推薦

<超圖解Arduino互動設計入門 第三版,趙英傑,旗標>

對Arduino有濃厚的興趣,想要在深入了解原理的地方,請參考 "趙英傑"老師的書,目前出到第三版,而這本書是黑修斯大學時代,教授上課用的教科書本之一,這本書內容生動有趣,基礎原理講述清楚明白,非常適合入門初學與基礎打底。黑修斯自己更是從書中獲益良多,這本書被Arduino的創辦人看過之後,也連絡 "趙英傑"老師出版成國際英文版呢。

Reference

超圖解Arduino互動設計入門 第二版,趙英傑,旗標。(註:已經有第三版)
I2C bus 簡介 (Inter-Integrated Circuit Bus) @ 傑克! 真是太神奇了! :: 痞客邦 ::
黑修斯的GitHub_ArduinoHC_I2C (相關程式碼都在此)

轉貼本文時,需註明來自黑修斯隨手札記原創作者 hughes chen(黑修斯),及附上原文連結,同時 禁止修改,禁止商業使用 。

張貼留言

0 留言