在树莓派3B+里启用串口,并通过UART读取GPS模块的数据帧。
树莓派3启用UART
#####先更新系统
sudo apt-get update
sudo apt-get upgrade
sudo raspi-config
在raspi-config中设置:
- disable login shell over serial
- enable serial hardware port
#####然后重启
sudo reboot
#####编辑配置文件
sudo nano /boot/config.txt
在最后一段加上:
dtparam=spi=on
dtoverlay=pi3-disable-bt
core_freq=250
enable_uart=1
force_turbo=1
然后编辑cmdline.txt
sudo cp boot/cmdline.txt boot/cmdline_backup.txt
sudo nano /boot.cmdline.txt
将cmdline.txt的内容替换为:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
#####禁用树莓派Serial Getty服务
sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service
重启系统
sudo reboot
#####激活ttyAMAO 上一步我们禁用了ttyS0,现在我们启用ttyAMA0.
sudo systemctl enable serial-getty@ttyAMA0.service
好了到了现在,我们已经启用了树莓派的串口,并可以通过/dev/ttyAMA0来访问串口设备。
树莓派的串口引脚
树莓派的引脚定义图如下所示:
UART的收发引脚分别为:
- Tx ——GPIO14(pin8)
- Rx ——GPIO15(pin10)
连接串口设备并测试
我们使用GPS串口设备进行测试,GPS模块有如下5个引脚:
- VCC
- GND
- TX
- RX
- PPS
GPS模块和树莓派连接方式如下:
- VCC ——pin01
- GND——pin06
- TX——pin10
其他引脚可以不连接。
使用cat或者minicom调试GPS串口:
cat /dev/ttyAMA0
#或者
minicom -D /dev/ttyAMA0 -b 9600
能够读取到类似下边的串口输出:
$GPTXT,01,01,01,ANTENNA OK*35
$GNGGA,115810.475,,,,,0,00,25.5,,,,,,*70
$GNGLL,,,,,115810.475,V,M*6D
$GPGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*02
$BDGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*13
$GPGSV,3,1,09,05,05,121,,10,25,314,27,12,14,138,,13,13,058,16*73
$GPGSV,3,2,09,15,49,043,32,20,53,321,18,21,52,249,,24,77,090,*77
$GPGSV,3,3,09,32,11,265,*40