差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
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() 
 + 
 +