这篇文章的重点见:
树莓派3B+
树莓派3B+内置了一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。在树莓派3代中,由于板载蓝牙模块,硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO(14,15)。
树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,只能通过ssh或者远程桌面连接树莓派后进行控制。
默认值
serial0是GPIO引脚对应的串口,serial1是蓝牙对应的串口。serial0(GPIO串口)默认使用的是ttyS0(mini串口),serial1(蓝牙)使用的是ttyAMA0(硬件串口)
设置串口开关,使用sudo raspi-config命令进入树莓派系统配置界面。具体选项看以上内容原文吧。
将串口配置为我们的GPIO串口,对输入sudo vim /boot/config.txt命令,将下面两行内容添加到最后:
dtoverlay=pi3-miniuart-bt
force_turbo=1
重启,使用命令查看串口情况
ll -a /dev/ser*
可以看见serial0(GPIO引脚对应的串口)已经使用ttyAMA0(硬件串口)
代码我直接大片抄写以上博主的内容,详细代码请移步本参考内容。
接线,RX不接:
首先安装pynmea2,支持python3。
sudo pip3 install pynmea2
编写python代码
vi gps.py
import serial
import time
import string
import pynmea2
while True:
port="/dev/ttyAMA0"
ser=serial.Serial(port, baudrate=9600, timeout=0.5)
dataout = pynmea2.NMEAStreamReader()
newdata=ser.readline()
print(newdata)
保持,并运行:
python3 gps.py
运行结果见: