樹莓派與Arduino串口通信實驗


目標:樹莓派通過串口發送字符'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的燈會閃爍。

參考文獻:

  1. 樹莓派3b與電腦串口互相通信進行數據傳輸的配置過程
  2. 樹莓派開發筆記(六):GPIO口的UART使用
  3. 樹莓派與arduino串行通信
  4. 兩大開源硬件之樹莓派與Arduino的USB串口通訊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM