ESP32使用北斗/GPS模块ATK1218-BD

ESP32

ATK1218-BD

接线:三根线即可

模块连接关系
ATK-MO1218 模块
VCCGNDTX
ESP325V(19号脚)GNG(1号脚)GPIO16(12号脚)

代码:

from machine import UART,Pin,I2C,Timer
import time

#ATK-MO1218 模块 默认波特率38400,使用默认值即可
#串口通信 UART 1 系统默认,不可以使用
uart2 = UART(2, baudrate=38400, tx=17, rx=16)#115200

#print(uart2)
'''
GPS原始数据
$GNGGA,084924.000,3016.5234,N,11957.6334,E,1,10,3.9,9.5,M,6.6,M,,0000*7B
$GNGLL,3016.5234,N,11957.6334,E,084924.000,A,A*49
$GNGSA,A,3,27,08,04,16,09,31,28,18,,,,,4.0,3.9,1.0*25
$GNGSA,A,3,207,210,,,,,,,,,,,4.0,3.9,1.0*25
$GNRMC,084924.000,A,3016.5234,N,11957.6334,E,000.0,001.0,061223,,,A*7B
$GNVTG,001.0,T,,M,000.0,N,000.0,K,A*12
$GNZDA,084924.000,06,12,2023,00,00*4D
'''
#获取GPS定位信息,时间,经度,纬度 ['20231207015215.000', 30.1645, 'N', 119.5764, 'E']
def getpos(relxbuf):
    lists = [0,1,2,3,4]
    if (relxbuf.find("GNRMC")>=0) :
        data = relxbuf.split("$") # 解析数据
        for val in data:
            #print(len(val))
            if (len(val) > 70 and val.find("GNRMC")>=0) :
                #print(val)
                posstr = val.split(",")
                
                lists[0] = '20'+posstr[9][4]+posstr[9][5]+posstr[9][2]+posstr[9][3]+posstr[9][0]+posstr[9][1]+posstr[1]
                lists[1] = float(posstr[3])/100
                lists[2] = posstr[4]
                lists[3] = float(posstr[5])/100
                lists[4] = posstr[6]
                #print(lists)
        return lists
    return []

while True:
    if uart2.any():
        buf = uart2.read()
        buf = buf.decode('utf-8')
        #print(buf)
        arr = getpos(buf)
        print(arr)
        time.sleep(1)
        print("\n------------------\n")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值