ESP32
ATK1218-BD
接线:三根线即可
模块 | 连接关系 | ||
ATK-MO1218
模块
| VCC | GND | TX |
ESP32 | 5V(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")