1. 程式人生 > >RaspberryPi2樹莓派USB轉串列埠連線Arduino

RaspberryPi2樹莓派USB轉串列埠連線Arduino

PI通過USB轉串列埠連線Arduino

我用樹莓派2連線Arduino,然後通過Arduino控制繼電器和其他裝置。
樹莓派連線Arduino大致有幾種方法:

  1. TTL串列埠直接連線,有人說需要轉電平,我沒有試。
  2. I2C或SPI連線,我沒有試。
  3. USB轉TTL後,TTL連線Arduino,我用的這種方法。

下面是用到的各種物件:

連線方法:

  1. 樹莓派通過PL2303,即USB口插樹莓派上,TTL串列埠插Arduino上。同時樹莓派(5V2A)可以給Arduino供電(5V30mA),樹莓派的電源是通過插線板的USB供電的。
  2. Arduino可以連線其他的模組,譬如無線繼電器,接收樹莓派的指令,控制開關的開啟和關閉,實現加熱的功能。還可以有其他的。

Arduino程式

Arduino上可以寫個簡單的ECHO串列埠程式,即收到資料時亮LED燈,同時將收到的資料傳送出來:

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  // now data from serial, turn off the LED.
  if (Serial.available() <= 0) {
    digitalWrite(13, LOW);
    delay(100);
    return;
  }

  // echo the serial data.
Serial.print((char)Serial.read()); digitalWrite(13, HIGH); delay(50); }

注意:我們使用的是115200波特率,如果使用Arduino的串列埠視窗,記得改成這個波特率。這個是樹莓派比較常用的波特率。
備註:可以使用Arduino的串列埠除錯視窗,將程式碼Upload,可以傳送字串給Arduino,如果能正常ECHO,那麼就沒有問題了。

Arduino連線PI2

PL2303的介面有五個:

  1. VCC5V: 這個是5V電源輸出,這個接Arduino的VIN(即外接電源入口)。下圖黃線。
  2. GND:這個接地,必須接Arduino的GND。下圖灰線。
  3. RX:接Arduino的TX,即引腳1. 下圖藍線。
  4. TX:接Arduino的RX,即引腳0. 下圖綠線。
  5. VCC3.3V:這個沒有用到。

接完後如下圖:

PL2303接線圖

來張大圖特寫:

PL2303接線

PI2讀USB串列埠

PL2303連線樹莓派,即USB插上樹莓派後,可以登入到樹莓派檢視裝置:

winlin@raspberrypi:~$ lsusb
Bus 001 Device 013: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

可以看到這個PL2303的USB裝置是有驅動的,可以直接用這個裝置:

winlin@raspberrypi:~$ ll /dev/ttyUSB0 
crw-rw---- 1 root dialout 188, 0 Jan 19 16:00 /dev/ttyUSB0

備註:可以讓樹莓派自動彙報IP,用WIFI登入上去。

再樹莓派上下載程式碼,和串列埠通訊:

git clone https://github.com/winlinvip/raspi-tools.git &&
sudo python raspi-tools/raspi-pl2303.py

可以看到輸出:

PI: Hello, Arduino, this is RaspberryPi 2.0~
. . . . . . . . . . . . . . . . . . . . . . .
Arduino: Hello, Arduino, this is RaspberryPi 2.0~

這個就是串列埠通訊完成了,可以將這兩個程式改成需要的方式,進行特定的控制了。

最後,來一張總影象:
PI2-Arduino

接下來就可以做具體的控制了。