1. 程式人生 > >樹莓派與arduino串列埠通訊實踐

樹莓派與arduino串列埠通訊實踐

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相連的埠。

三、連線樹莓派與Arduino

將Arduino通過USB線纜連線到樹莓派上,這時就可以在樹莓派的終端看到通過串列埠獲得的Arduino資料,資料為所測量到的溫度和溼度值。
樹莓派與Arduino通過USB串列埠通訊
樹莓派與Arduino通過USB串列埠通訊