目標:樹莓派通過串口發送字符's',Arduino收到后字符's'后打印字符串'I AM CDQ',同時arduino自帶的13引腳LED燈會閃爍。
這篇寫的有點亂,有不清楚地方請向我反映,我會及時修改。
一、Arduino程序
在arduinoIDE中編寫程序
void setup()
{
Serial.begin(115200);
pinMode(13,OUTPUT);
}
void loop()
{
if(Serial.available())
{
if('s'==Serial.read())
Serial.println("I AM CDQ");
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
}
將程序燒寫到Arduino中,
然后將USB口從電腦上拔掉,插到樹莓派USB上,否則串口會被占用。
二、開啟樹莓派串口
樹莓派有兩個串口,一個是mini,一個是AMA0,mini是自帶晶振驅動的,穩定性不高,AMA0是外部晶振驅動的,穩定性高,因此這里將啟用AMA0串口。
使用nano編輯器打開啟動命令文本:
sudo nano /boot/cmdline.txt
將內容修改為:
ddwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=vator=deadline rootwait quiet splash plymouth.ignore-serial-consoles
Ctrl+x
y
回車
輸入:
sudo nano /etc/inittab
注釋最后一行,如果沒有則不用修改:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
查看串口是否啟用
ls -l /dev
如果沒成功,則參考【文獻1】再設置一遍。
三、下載串口調試助手minicom
不要指望他會有什么好看的畫面,哈哈哈。
安裝minicom
sudo apt-get install minicom
啟動minicom
minicom -b 115200 -o -D /dev/ttyAMA0
發送測試信息,如abc:
如果回顯開啟,則你輸入一個字母他也同樣輸出相同的字母,效果為aabbcc,
如果此時沒有出現aabbcc,則可能是回顯沒有打開,Ctrl+a,再按e,打開回顯,再次測試。
或者連接好樹莓派與arduino的串口后輸入s,看minicom是否有返回I AM CDQ
樹莓派與Arduino的接線方式為:
樹莓派 | arduino |
---|---|
8腳(TXD) | 0腳(RX) |
10腳(RXD) | 1腳(TX) |
usb口 | 下載線 |
四、樹莓派程序
在樹莓派桌面新建ser.py文件
import serial
ser=serial.Serial('/dev/ttyAMA0',115200,timeout=1)
try:
while 1:
ser.write('s')
response=ser.readall()
print (response)
except:
ser.close()
不要使用Thonny軟件運行此程序,因為看不到輸出。
/home/pi/Desktop
sudo python ser.py
此時應該就會看到:
同時,arduino的燈會閃爍。
參考文獻: