1070|7

650

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

【得捷电子Follow me第1期】第四帖 GPS定位 [复制链接]

 

Pico W是一款低成本的微控制器开发板,可用于物联网和嵌入式系统开发。要使用Pico W和GPS模块实现定位,我们需要遵循以下步骤:
1. 连接GPS模块:大多数GPS模块都使用UART串口通信协议。因此,我们需要将GPS模块的VCC和GND引脚接到Pico W的相应引脚,将TX和RX引脚接到Pico W的UART引脚,然后使用Micropython库中的UART库打开串口,以从GPS模块接收数据。
2. 解析GPS数据:GPS模块将实时地发送位置、时间和其他信息。首先,我们需要将GPS数据流解析为可读的数据。通常,GPS数据流是NMEA语句,包括GPGGA、GPRMC、GPVTG、GPGSA等语句。我们可以使用Micropython库中的UART库读取串口数据,并使用Python的字符串分析和处理方法来解析每个语句中的位置、时间和卫星信息。
3. 显示位置信息:在解析GPS数据流之后,我们可以使用SSD1306 OLED屏幕显示位置信息。我们可以使用Micropython的GPIO库来控制OLED屏幕,并使用SSD1306库来处理图形和字符。在OLED屏幕上,可以显示当前位置、经度、纬度和其他相关信息。
4. 扩展(待完成):上传位置信息:如果我们想要将定位数据上传到云端或其他设备,我们可以使用HTTP或其他网络协议将数据打包并上传到服务器端。我们可以使用Python的库,如requests、urllib等,来连接Web服务,并将GPS数据上传到服务器端。

GPS调试需要把天线放室外,否则很难定位,我这里是用了一根延长天线放到室外。

具体代码如下:

from machine import UART, Pin
import time
import hashlib
from micropyGPS import MicropyGPS
from machine import Pin

import time

from machine import PWM

from machine import I2C

from ssd1306 import SSD1306_I2C
import framebuf


WIDTH  = 128                            

HEIGHT = 64

i2c = I2C(1)

oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)



                                         # Init I2C using I2C0 defaults, SCL=Pin(GP9), SDA=Pin(GP8), freq=400000


uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

time.sleep(0.1)
rxData = bytes()
my_gps = MicropyGPS()
while True:
    if uart0.any():
        stat = my_gps.update(uart0.read(1).decode('ascii')) # Note the conversion to to chr, UART outputs ints normally
        if stat:
            oled.fill(0)
            lat_disp = my_gps.latitude_string()
            oled.text(lat_disp,5,10)
            lon_disp = my_gps.longitude_string()
            oled.text(lon_disp,5,30)
            time_disp = my_gps.date_string('s_dmy')
            oled.text(time_disp,5,50)
            oled.show()
            print('Latitude:', my_gps.latitude_string())
            print('Longitude:', my_gps.longitude_string())
            print('Speed:', my_gps.speed_string('kph'), 'or', my_gps.speed_string('mph'), 'or', my_gps.speed_string('knot'))
            print('Date (Long Format):', my_gps.date_string('long'))
            print('Date (Short D/M/Y Format):', my_gps.date_string('s_dmy'))
            print('timestamp (Short [H,M,S] Format):', my_gps.timestamp)
           
            stat = None




最后效果如下图:

最新回复

MicropyGPS 还要自己解析NMEA?   详情 回复 发表于 2023-5-17 11:16
点赞 关注
 
 

回复
举报

6837

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

想知道,如果天线正常,这种开始启动GPS定位 到获取当前位置、经度、纬度和其他相关信息

这段时间有多长

点评

如果天线在室外,不管冷启动还是热启动,1分钟内就能定位的。  详情 回复 发表于 2023-5-17 08:49
 
 
 

回复

650

帖子

8

TA的资源

纯净的硅(初级)

板凳
 
Jacktang 发表于 2023-5-17 07:26 想知道,如果天线正常,这种开始启动GPS定位 到获取当前位置、经度、纬度和其他相关信息 这段时间有多长 ...

如果天线在室外,不管冷启动还是热启动,1分钟内就能定位的。

 
 
 

回复

7069

帖子

11

TA的资源

版主

4
 
要放室外呀,我还以为我的设备有问题呢。

点评

基本上放窗户边就可以  详情 回复 发表于 2023-5-17 09:57
 
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
lugl4313820 发表于 2023-5-17 09:36 要放室外呀,我还以为我的设备有问题呢。

基本上放窗户边就可以

 
 
 

回复

7069

帖子

11

TA的资源

版主

6
 
感谢大佬的分享,可以找得到星了。
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

7
 

MicropyGPS 还要自己解析NMEA?

点评

用的库解析  详情 回复 发表于 2023-5-17 11:34
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

650

帖子

8

TA的资源

纯净的硅(初级)

8
 
freebsder 发表于 2023-5-17 11:16 MicropyGPS 还要自己解析NMEA?

用的库解析

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表