1. 程式人生 > >樹梅派序列口通訊方法

樹梅派序列口通訊方法

前言:本文主要介紹樹莓派序列口通訊的主要方法和配製過程,以及注意事項。

一、樹莓派序列通訊的方法
 

    樹莓派的序列通訊的方式主要有兩種:一種是通過樹莓派GPIO口、一種是通過USB口。

二、莓派的串列埠(UART)配置和使用

1、樹莓派上UART埠的位置

    GND位於HEAD-6(也可選其他GND)

    TXD位於HEAD-8

    RXD位於HEAD-10

    樹莓派的第一排的第三,四,五分別,也就是下圖的6,8,10三個埠分別是地、TX與RX。注意在接線時,3根線都要接,首先裝置必須共地,樹莓派的TX要連線從裝置的RX,樹莓派的RX要連線樹莓派的TX。

 


圖. 樹莓派 UART位置

2、樹莓派的串列埠電平

說明:TTL電平與RS232電平的區別

1)TTL電平標準

    輸出 L:<0.8V ; H:>2.4V。

    輸入 L:<1.2V ; H:>2.0V

    TTL器件輸出低電平要小於0.8V,高電平要大於2.4V。輸入,低於1.2V就認為是0,高於2.0就認為是1。於是TTL電平的輸入低電平的噪聲容限就只有(0.8-0)/2=0.4V,高電平的噪聲容限為(5-2.4)/2=1.3V。

2)RS232標準

    邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,注意電平的定義反相了一次。

3、樹莓派的串列埠預設為一個控制檯,用於SSH除錯使用,若要使用串列埠需要修改兩處檔案。 具體的修改方法如下:

1)修改兩處檔案

【1】/boot/cmdline.txt

【輸入以下指令】

    sudo nano /boot/cmdline.txt

【刪除紅色部分】

    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4elevator=deadline rootwait

【最終變為】

    dwc_otg.lpm_enable=0 console=tty1root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait    

【2】/etc/inittab

【輸入以下指令】

    sudo nano /etc/inittab

【註釋最後一行內容】

    #T0:23:respawn:/sbin/getty -LttyAMA0 115200 vt100  

2)重新啟動系統

    sudo reboot

4、測試 

    配置完之後便可測試一下樹莓派的UART是否正常工作,而minicom便是一個簡單好用的工具。minicom是linux平臺串列埠除錯工具,相當於windows上的串列埠除錯助手。

【1】minicom安裝

    sudo apt-get install minicom

【2】minicom啟動

    minicom -b 9600 -o -D /dev/ttyAMA0

    -b代表波特率,-D代表埠,/dev/ttyAMA0 類似於windows中的COM1,-o功能暫時未知。


    圖. minicon介面

【3】minicom傳送內容

     直接在控制檯中輸入內容即可,如果minicom打開了回顯可在控制檯中觀察到輸出內容,如果回顯關閉則控制檯中沒人任何反應,千萬不要以為minicom沒有正常工作。

【4】minicom回顯控制

     先Ctrl+A,再E。可翻轉回顯狀態(原來回顯開啟則此事回顯關閉)

【5】minicom退出

     先Ctrl+A,再Q。

5、利用python程式通訊事例(利用pyserial,下載安裝方法見後文

import serial  

from time import sleep  

ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5)   

def recv(serial):    

    data  

    while True:    

        data =serial.read(30)    

        if data == '':    

            continue  

        else:  

            break  

        sleep(0.02)   

    return data    

while True:    

    data =recv(ser)    

         ser.write(data)

三、樹莓派的序列通訊(利用USB)配置和使用

    首先用RS232USB的轉接線連線樹莓派,即可完成硬體連線。對於串列埠通訊,可以通過pyserial實現。

1、安裝pyserial模組和測試

tar zxvf pyserial-2.7.tar.gz  

cd pyserial-2.7  

python setup.py install  

    通過命令lsusb檢視串列埠是否存在:

    

    通過命令python -m serial.tools.list_ports可以檢視大可用的埠:

    

2python通訊程式

    usb裝置:/dev/ttyUSB0

import serial  

from time import sleep  

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.5)   

def recv(serial):    

      data  

      while True:    

          data =serial.read(30)    

          if data == '':    

              continue  

          else:  

              break  

          sleep(0.02)   

      return data    

while True:    

         ser.write(data)  

     data =recv(ser)    

    總結:如果你使用的是usb Hub,那麼通訊的裝置就不一定是/dev/ttyUSB0,可能是/dev/ttyUSB1/dev/ttyUSB2/dev/ttyUSB3等,以此類推。