介紹
前面已經寫過一篇關於樹莓派3B+的GPIO測試相關的博客,詳情請移步《樹莓派3B+使用GPIO實現串口通信》。本篇繼續講關於GPIO串口的相關操作。
硬件
樹莓派3B
系統
Ubuntu mate 16.04
配置步驟
安裝raspi-config
在使用《樹莓派3B+使用GPIO實現串口通信》中同樣的方法配置GPIO時發現,純淨的Ubuntu mate 16.04系統是沒有sudo raspi-config命令的,因此需要先安裝raspi-config。
1、下載raspi-config.deb文件
wget http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20170926_all.deb
2、解決依賴問題
sudo apt install whiptail parted lua5.1 alsa-utils psmisc
3、安裝軟件
dpkg -i raspi-config_20170926_all.deb
4、運行raspi-config,需要sudo或以上權限
sudo raspi-config
5、raspi-config能夠運行的還有一個重要前提,boot分區已被正常掛載
先查看一下boot分區所在設備號
fdisk -l
再把它掛載到/boot上(以下是示例,不一定是mmcblk0p6,需根據實際情況決定)mount /dev/mmcblk0p6 /boot
首先大家可以使用命令看一下樹莓派3b+支持的GPIO串口
ls -la /dev/
配置GPIO串口
1、啓用串口ttyS0
打開串口/dev/ttyS0
sudo rasp-config
打開系統配置界面如下圖,選擇Inerfacing Options
然後選擇 serial
選擇No
然後Yes
最後選擇保存,退出即可。
這個時候在輸入下面的命令就可以看到串口ttyS0,但是還是不能用,繼續配置。
ls -la /dev/
2、關閉Console
在終端中輸入:
sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service
然後,重啓
重啓之後輸入,就可以啦
sudo systemctl mask serial-getty@ttyS0.service
修改樹莓派CPU頻率
這樣理論上完成了,但是我在實際測試中發現,
- 串口發送時偶爾可以發送一條正常字符串,大部分情況下是亂碼
- 串口接收數據時,出現**\xe8 \xe9**之類的數據。
各方查找資料後,發現有網友說可能是因爲樹莓派工作頻率不對造成的,連接在此
Raspberry Pi 3 login via UART on GPIO Baud Rates broken,有興趣的朋友可以自己去看看。下面介紹修改方法:
sudo vim /boot/config.txt
查找下這句話 core_freq=250 是否啓用,如果沒有的話就將這句話前面的 # 號去掉,也可以在最下面添加上 core_freq=250 ,搞定。
測試
連線
樹莓派串口接線如下圖所示:
記得TX接RX,RX接TX
編輯文件
vim test.py
輸入下面的代碼(注意這裏配置的串口波特率是9600):
import serial
serialport = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=3.0)
while True:
serialport.write("rnSay something:")
rcv = serialport.read(10)
serialport.write("rnYou sent:" + repr(rcv))
運行代碼
運行代碼之前,需要先提升串口/dev/ttyS0的讀寫權限
sudo chmod 666 /dev/ttyS0
然後在運行代碼
pythoin test.py
ttyS0串口權限
前面雖然已經把串口配置好,但是每次使用串口時需要運行sudo chmod 666 /dev/ttyS0
給串口權限,爲了方便,下面介紹如何把串口/dev/ttyS0自動獲取權限
編寫.rulrs
規則
sudo vim /etc/udev/rules.d/90-local.rules
然後在裏面加上:
KERNEL=="ttyS0*", OWNER="root", GROUP="tty", MODE="0666"
這裏簡單解釋下,其中KERNEL
是串口的名字,OWNER
是擁有者,對應下圖中紅色框,GROUP
是所屬的羣,對應下圖中的藍色框
然後,重啓,完事兒~
如果想修改藍牙和串口之間的映射,請參考下面的連接
參考文獻
How to setup the UART on Raspberry Pi 3
樹莓派——安裝raspi-config
Raspberry Pi 3 login via UART on GPIO Baud Rates broken