樹莓派與arduino串列埠通訊實踐
阿新 • • 發佈:2019-01-23
Arduino具有豐富的外部介面,與樹莓派的IO口最大的不同在於Arduino具有模擬輸入介面,可以測量IO口上的模擬值。Arduino與Raspberry通過串列埠(Serial)通訊的方案一般有兩種,一是通過樹莓派GPIO串列埠通訊,第二種是通過USB串列埠通訊。
顯然,Arduino與Raspberry通過USB串列埠不僅穩定,而且不用連線複雜的線纜,本篇文章介紹樹莓派如何通過USB串列埠讀取arduino獲得感測器的數值。
在Arduino上連線DHT11感測器,用來獲取當前的溫度、溼度值,並通過串列埠傳送出來。
一、Arduino準備
本專案所需的.zip庫檔案點此下載: dht11
#include <dht11.h> dht11 DHT; #define DHT11_PIN 4 void setup(){ Serial.begin(9600); Serial.println("DHT TEST PROGRAM "); Serial.print("LIBRARY VERSION: "); Serial.println(DHT11LIB_VERSION); Serial.println(); Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); } void loop(){ int chk; Serial.print("DHT11, \t"); chk = DHT.read(DHT11_PIN); // READ DATA switch (chk){ case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } // DISPLAT DATA Serial.print(DHT.humidity,1); Serial.print(",\t"); Serial.println(DHT.temperature,1); delay(1000); }
將程式編譯下載到Arduino中,此時可以從Arduino串列埠獲取感測器測量到的資料。
二、樹莓派安裝串列埠除錯程式
minicom是linux平臺串列埠除錯工具,相當於windows上的串列埠除錯助手,可以用它來讀取Arduino通過USB串列埠傳送的感測器數值。(一)minicom安裝
sudo apt-get install minicom
(二)minicom啟動
minicom -b 9600 -D /dev/ttyACM0-b代表波特率,-D代表埠,/dev/ttyACM0 表示開啟與Arduino相連的埠。