樹莓派和Arduino使用USB進行通信基於Python——For初學者

樹莓派和Arduino之間的通信主要有三種方式,即USB對接,GPIO對接和I2C總線對接。本文主要學習一下使用USB進行對接。(以及GPIO的準備工作)。
硬件準備:

硬件 數量
Arduino UNO 一塊
Arduino UNO的USB接口線 一條
樹莓派3B+ 一塊
顯示器(視情況而定) 一塊
鼠標、鍵盤等(視情況而定) 各一個
樹莓派3B+的充電線 一條

環境搭配:
Arduino的IDE(我的版本是1.8.5的),樹莓派裏的系統(任何一個Linux均可,一般樹莓派有自己的),還有樹莓派中的Python環境(我的是2.7.13,建議是2.7以上的版本)。
以上的安裝我假定你們都完成了
那麼接下來就是這兩個硬件之間的通信需要的環境。
首先是安裝Python的兩個庫RPi.GPIO和serial,前一個是可控制LED、電機什麼的,後一個是串口通信,用於發送消息的。

#在普通用戶下進行操作(也可以是root,這樣下面的sudo就不用輸入了)
#下載GPIO庫
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.6.2.tar.gz   
#解壓
tar -xvzf RPi.GPIO-0.6.2.tar.gz    
#進入解壓後的目錄(文件夾)
cd RPi.GPIO-0.6.2
#安裝GPIO庫文件(權限不夠加sudo)
python setup.py install 

在這裏插入圖片描述
OK,接下來是serial庫

#一般現在的系統裏面都有這個庫
sudo apt-get install python-serial

接下來我們驗證一下是否裝好了這兩個庫

#新建一個test.py的測試文件
touch test.py
#使用vim進行編輯(vim可能要自己裝,sudo apt-get install vim)
vim test.py

輸入的內容如下:
在這裏插入圖片描述
vim的使用相信在座的各位都會。
接下來運行這個文件

#使用Python運行
python test.py

如果沒有報錯證明安裝成功了,如下:
在這裏插入圖片描述
那麼我們需要的環境配置就完成了,前戲結束,接下來就是正餐,即連接這兩大硬件了。
USB對接:
首先我們檢查一下端口:

#輸入如下命令
ls /dev/tty*

在這裏插入圖片描述
接下來我們把Arduino和樹莓派連接起來:
在這裏插入圖片描述
接着輸入上述的命令,我們會發現:
在這裏插入圖片描述
因此多了個這個/dev/ttyACM0(此ACM非彼ACM)端口。有這個說明可以通信了,接下來先給Arduino燒錄如下代碼:


void setup(){
   Serial.begin(9600); // 9600波特率
}

void loop() {
   if ( Serial.available())//判斷串口緩存區有沒有數據
    {
      if('s' == Serial.read())//有數據就用read來讀取並判斷是不是s
        Serial.println("Hello Raspberry,I am jiayu's Arduino.");//是的話就向串口打印這串字符
     }
}

(可以在樹莓派中下載Arduino的IDE進行燒錄,也可以在Windows上的IDE進行燒錄,在Linux裏的話需要下載Arduino的IDE命令也很簡單:sudo apt-get install arduino)。
在樹莓派中新建一個文件用來寫Python的程序:

#新建.py文件
touch communication.py
#使用vim進行編輯,和上面一樣
vim communication.py

輸入以下的代碼:

#-*-coding:UTF-8-*-
import serial    #導入serial庫
ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1);   #打開端口,每一秒返回一個消息
#try模塊用來結束循環(靠拋出異常)
try:
  while 1:
    ser.write('s');#寫s字符
    response = ser.readall();#用response讀取端口的返回值
    print response;#進行打印
except:
  ser.close();#拋出異常後關閉端口

保存退出即可(相信你已經會熟練使用vim了 )。
輸入命令運行程序就行了:

#如果權限不夠前面就加上sudo
python communication.py 

運行結果如下:(Ctrl+z結束,也就是代碼中的異常)
在這裏插入圖片描述
如此一來我們就完成了樹莓派和Arduino的第一個通信,本文也就接近尾聲了。
以上是我的總結至於Arduino的使用,樹莓派的安裝,樹莓派上Python的安裝,以及vim的一般使用,我都假定你們已經完成或者有基礎了。本文主要講解如何連接兩個硬件。由於本人能力有限,難免有疏漏錯誤之處,歡迎大家指正以及留言探討。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章