从淘宝上入手的GPS接收端U-BLOX M8N,带UART串口连接线。
一.打开树莓派上的UART串口通信
1.下载pi3-miniuart-bt-overlay.dtb,并将dtb文件拷贝到/boot/overlays/目录下
下载地址:http://pan.baidu.com/s/1qXS0hoK
2.编辑/boot目录下的config.txt文件,增加两行
sudo nano /boot/config.txt
dtoverlay=pi3-miniuart-bt-overlay
force_turbo=1
3.编辑/boot目录下的cmdline.txt文件,删除console=serial1,115200
sudo nano /boot/cmdline.txt dwc_otg.lpm_enable=0console=tty1 root=/dev/mmcblk0p2 kgdboc=serial1,115200rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
4.关闭板载蓝牙的方法:
sudo systemctldisablehciuart
5.编辑/lib/systemd/system/hciuart.server 将 “ttyAMA0”修改为“ttyS0”
sudo nano /lib/systemd/system/hciuart.service ExecStart=/usr/bin/hciattach /dev/ttyS0 bcm43xx115200noflow -
6.更新并重启
sudo apt-get update
sudo apt-get upgrade
sudo reboot
二、连接UBLOX M8N-001接收端(002可以做基站也可以做移动端)
UART串口线插板子上的vvc,gnd,rxd, txd插板子上的PIN角(rxd, txd交叉插),对应的pin位分别为01,06,08,10
三、打开串口工具接收GPS数据:
我们可以使用树莓派下 minicom 进行测试
sudo apt-get install minicom
sudo minicom -D /dev/ttyAMA0 -b 115200
四、附GPS协议指令解析
GPS模块采用NMEA 0183协议,NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。
NMEA-0183协议采用ASCII码来传递GPS定位信息,我们称之为帧。
帧格式形如:$aaccc,ddd,ddd,„,ddd*hh(CR)(LF)
1、“$”:帧命令起始位
2、aaccc:地址域,前两位为识别符(aa),后三位为语句名(ccc)
3、ddd„ddd:数据
4、“*”:校验和前缀(也可以作为语句数据结束的标志)
5、hh:校验和,$与*之间所有字符ASCII码的校验和(各字节做异或运算,得到
校验和后,再转换16进制格式的ASCII字符)
6、(CR)(LF):帧结束,回车和换行符
在一般的项目中,最常用的指令是第4个,即$GPRMC ,推荐定位信息,长度70字节。$GPRMC(推荐定位信息,Recommended Minimum Specific GPS/Transit Data),$GPRMC语句的基本格式如下:
$GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)
(1) UTC时间,hhmmss(时分秒)
(2) 定位状态,A=有效定位,V=无效定位
(3) 纬度ddmm.mmmmm(度分)
(4) 纬度半球N(北半球)或S(南半球)
(5) 经度dddmm.mmmmm(度分)
(6) 经度半球E(东经)或W(西经)
(7) 地面速率(000.0~999.9节)
(8) 地面航向(000.0~359.9度,以真北方为参考基准)
(9) UTC日期,ddmmyy(日月年)
(10)磁偏角(000.0~180.0度,前导位数不足则补0)
(11) 磁偏角方向,E(东)或W(西)
(12) 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)
举例如下:
$GPRMC,023543.00,A,2308.28715,N,11322.09875,E,0.195,,240213,,,A*78