RaspberryPi2樹莓派USB轉串列埠連線Arduino
阿新 • • 發佈:2018-12-30
PI通過USB轉串列埠連線Arduino
我用樹莓派2連線Arduino,然後通過Arduino控制繼電器和其他裝置。
樹莓派連線Arduino大致有幾種方法:
- TTL串列埠直接連線,有人說需要轉電平,我沒有試。
- I2C或SPI連線,我沒有試。
- USB轉TTL後,TTL連線Arduino,我用的這種方法。
下面是用到的各種物件:
連線方法:
- 樹莓派通過PL2303,即USB口插樹莓派上,TTL串列埠插Arduino上。同時樹莓派(5V2A)可以給Arduino供電(5V30mA),樹莓派的電源是通過插線板的USB供電的。
- 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的介面有五個:
- VCC5V: 這個是5V電源輸出,這個接Arduino的VIN(即外接電源入口)。下圖黃線。
- GND:這個接地,必須接Arduino的GND。下圖灰線。
- RX:接Arduino的TX,即引腳1. 下圖藍線。
- TX:接Arduino的RX,即引腳0. 下圖綠線。
- VCC3.3V:這個沒有用到。
接完後如下圖:
來張大圖特寫:
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~
這個就是串列埠通訊完成了,可以將這兩個程式改成需要的方式,進行特定的控制了。
最後,來一張總影象:
接下來就可以做具體的控制了。