本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、简介
因为之前想通过GPS模块来获取经纬度进行区域的划分,就买了NEO-6M GPS模块,但后来发现误差较大,且只能用于室外,有些鸡肋。不过买都买了,怎么也得试一试。
二、硬件准备
1、元器件清单
名称 | 数量 |
---|---|
树莓派4B | 1 |
MINI NEO-6M GPS模块 | 1 |
SMA有源天线(3米) | 1 |
MINI NEO-6M GPS模块:
SMA有源天线:
2、接线说明
因为我们只用到了RXD来读取GPS信息,所以GPS模块中的RXD也可以不接。
树莓派 | NEO-6M |
---|---|
5V | VCC |
TXD | RXD |
RXD | TXD |
GND | GND |
三、软件准备
1、安装Python2
由于目前市面上提供的测试代码都是通过Python2来运行的,所以我们需要提前安装一下Python2。
sudo apt-get install idle-python2.7
idle-python2.7
2、安装pynmea2库
通过 pymea2库来解析gps数据。
pip3 install pynmea2
也可以在编译器中搜索安装。
3、配置mini串口
4、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()
if newdata[0:6] == "$GPRMC":
newmsg=pynmea2.parse(newdata)
lat=newmsg.latitude
lng=newmsg.longitude
gps = "Latitude=" + str(lat) + "and Longitude=" + str(lng)
print(gps)
四、知识准备
1、GPS数据解析
GPS数据一共有七种,每种都有自己的数据格式,这里只展示最常用的两种,其余的大家可以自己去查手册。