raspi-3B+ && Neo-7M 读取GPS数据并解析

虽然工作量不大,但不知道为什么网络上的其他文章对我而言统统不管用,只好摸索出一条自己的实现道路

1.sudo nano /boot/firmware/config.txt

在底部加入如下代码

dtparam=spi=on

dtoverlay=pi3-disable-bt

core_freq=250

enable_uart=1

force_turbo=1

ctrl+x保存退出

2.sudo nano /boot/firmware/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

3.ls -s /dev/tty*

查询我们现在的串口映射关系,看看serial0对应的是ttyS0还是ttyAMA0

笔者用的是ttyS0,于是依次在命令行窗口输入以下指令
sudo systemctl stop serial-getty@ttys0.service
sudo systemctl disable serial-getty@ttys0.service
如果朋友们用的是AMA0那么就把S0改成AMA0就好了

然后输入以下指令:
sudo systemctl enable serial-getty@ttys0.service

4.sudo apt-get install minicom

5.sudo cat /dev/ttyAMA0

6.若串口cat数据接受无误则继续下一步,编写python代码解析nmea2格式的数据

import serial

def parse_loc_val(val, d):
    v = float(val) / 100
    v = int(v) + (v - int(v)) * 100 / 60
    if d == 'S' or d == 'W':
        v = -v
    return v

def parse_gprmc(data):
    li = data.decode().replace('$GPRMC,', '').strip().split(',')
    lat = log = speed = direct = None
    if li[1] == 'A':
        if li[2] and li[3]:
            lat = parse_loc_val(li[2], li[3])
        if li[4] and li[5]:
            log = parse_loc_val(li[4], li[5])
        if li[6]:
            speed = float(li[6]) * 1.852
        if li[7]:
            direct = float(li[7])
    return lat, log, speed, direct

def read_serial_data(port, baudrate):
    ser = serial.Serial(port, baudrate)

    while True:
        if ser.in_waiting > 0:
            data = ser.readline()
            lat, lon, speed, direction = parse_gprmc(data)
            if lat is not None and lon is not None:
                if lat > 1 and lon > 1: 
                    print("Latitude:", lat)
                    print("Longitude:", lon)
                    print("Speed:", speed)
                    print("Direction:", direction)

    ser.close()

# 调用函数并指定串口和波特率
read_serial_data('/dev/ttyS0', 9600)

最后输出得到的值应该就是我们的经纬度
下一步我们将利用requests库和flask技术完成第三方服务器接受数据并完成实时位置的传送与可视化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值