差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
gps [2023/07/24 09:35] lijiran [1.什么是GPS?] |
gps [2023/07/25 09:40] (当前版本) lijiran [5. 参考案例] |
||
---|---|---|---|
行 6: | 行 6: | ||
--- | --- | ||
{{ :wiki:lalalalala.png?300 |}} | {{ :wiki:lalalalala.png?300 |}} | ||
+ | |||
GPS模块是一种在手机或者机器的主板上结合的无线芯片模块,可以和GPS联络,从而实现定位和导航。 | GPS模块是一种在手机或者机器的主板上结合的无线芯片模块,可以和GPS联络,从而实现定位和导航。 | ||
行 83: | 行 84: | ||
- [[https://github.com/traccar/traccar|https://github.com/traccar/traccar]] | - [[https://github.com/traccar/traccar|https://github.com/traccar/traccar]] | ||
- | - [[https://mc.dfrobot.com.cn/thread-304709-1-1.html|GPS开发板]] | + | |
- | - [[https://hackaday.com/blog/?s=GPS|GPS相关技术文章]] | + | |
+ | 下面是一项使用RP2040作为主控芯片,驱动中科微电子的ATGM336H型号的传感器的参考案例,通过UART进行传感器与主控之间的数据通信,当有数据回传回来时,将数据按照指定的流程分割好,找到其中的GPS坐标,并且通过ssd1306芯片驱动的OLED屏幕打印出来,主控芯片与OLED屏幕通过SPI协议进行数据通信。 | ||
+ | |||
+ | |||
+ | --- | ||
+ | 效果如图所示: | ||
+ | {{ :微信图片_20230725093622.jpg?300 |}} | ||
+ | |||
+ | |||
+ | 代码如下 | ||
+ | from machine import UART,Pin,SPI | ||
+ | import time | ||
+ | import uasyncio | ||
+ | from ssd1306 import SSD1306_SPI | ||
+ | import framebuf | ||
+ | from utime import sleep_ms | ||
+ | spi1_mosi = 11 | ||
+ | spi1_sck = 10 | ||
+ | spi1_dc = 9 | ||
+ | spi1_rstn = 8 | ||
+ | spi1_cs = 16 | ||
+ | spi = SPI(1, 100000, mosi=Pin(spi1_mosi), sck=Pin(spi1_sck)) | ||
+ | oled = SSD1306_SPI(128, 64, spi, Pin(spi1_dc),Pin(spi1_rstn), Pin(spi1_cs)) | ||
+ | uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5)) | ||
+ | flag = 0 | ||
+ | class GPS(): | ||
+ | buff = bytearray(270) | ||
+ | def __init__(self): | ||
+ | self.a = 0 | ||
+ | self.b = 0 | ||
+ | self.array2 = “” | ||
+ | def read_and_process(self): | ||
+ | buff = uart1.read(1) | ||
+ | if buff == None: | ||
+ | self.b = 0 | ||
+ | else: | ||
+ | if buff == b'\n': | ||
+ | self.a = 1 | ||
+ | if self.a == 1: | ||
+ | buff = uart1.read(270) | ||
+ | if buff != None: | ||
+ | self.array2 = buff[0:6] | ||
+ | if self.array2 == b'GNGGA,': | ||
+ | self.array2 = buff[7:44] | ||
+ | if self.array2[-1] == 44: ##ascii value ',' | ||
+ | flag = 1 | ||
+ | print(flag) | ||
+ | oled.fill(0) | ||
+ | oled.show() | ||
+ | oled.text(self.array2[10:22],0,0) | ||
+ | oled.text(self.array2[23:-1],0,32) | ||
+ | oled.show() | ||
+ | gps = GPS() | ||
+ | while 1: | ||
+ | gps.read_and_process() | ||
+ | |||
+ | |||