基礎知識之全球定位系統GPS模塊
1.什么是GPS?
GPS全稱(chēng)為Global Positioning System,是一種基于衛星系統的全球定位技術(shù)。它由一組衛星和地面接收設備組成,用于準確確定地球上的位置、速度和時(shí)間信息。GPS系統通過(guò)將地球上的衛星信號與接收設備之間的距離計算來(lái)確定位置。接收設備通過(guò)接收來(lái)自多顆衛星的信號,并使用三角定位原理計算自身的準確位置。GPS系統由美國政府的國防部負責維護和運營(yíng),目前由全球共有約30顆工作衛星,其中至少有4顆衛星同時(shí)可見(jiàn)任何地方。GPS接收設備可以是專(zhuān)用的GPS導航器、手機、智能手表、車(chē)載導航系統等,這些設備接收衛星信號,并提供定位和導航功能。
本文引用地址:http://dyxdggzs.com/article/202402/455608.htmGPS模塊是一種在手機或者機器的主板上結合的無(wú)線(xiàn)芯片模塊,可以和GPS聯(lián)絡(luò ),從而實(shí)現定位和導航。
2. GPS是如何工作的
GPS內有原子鐘用來(lái)計時(shí),它以原子共振頻率標準來(lái)計算時(shí)間。原子鐘是目前世界上最準確的衡量時(shí)間和頻率的標準,廣泛用于控制廣播頻率和衛星信號。
GPS定位原理: 當我們需要定位時(shí),我們可以從GPS衛星上接受一些信息,就是衛星的星歷,星歷里有衛星自己的空間坐標x1,y1,z1,衛星有原子鐘,所以可以獲得一個(gè)準取得時(shí)間t1,衛星會(huì )把這些信息發(fā)送給我們的設備上的GPS模塊。通過(guò)坐標和時(shí)間都可以算出GPS模塊和衛星之間的距離。 已知:衛星的空間坐標x1,y1,z1,時(shí)間t1 未知:設備的空間坐標x2,y2,z2,時(shí)間t2
四個(gè)未知數,所以需要4個(gè)這樣的方程,所以需要4個(gè)衛星,這樣就可以解出x2,y2,z2,t2 實(shí)際上,衛星定位的誤差還是較大,因為信號在大氣中傳輸速度會(huì )有損耗,一般會(huì )使用差分GPS技術(shù)來(lái)減小誤差。
差分GPS技術(shù): 在地面上建立位置已知的GPS基站,當定位時(shí),基站也可以接收到為我們提供位置信息的4顆衛星的信號,根據位置信號測出坐標值,與已知坐標比較,得出偏差量,將偏差量或者實(shí)時(shí)測得的載波相位,通過(guò)數傳鏈路或者移動(dòng)通信網(wǎng)絡(luò )發(fā)送給終端設備,然后終端設備根據這個(gè)信息進(jìn)行修正位置,得出比較精準的位置信息。
3. 如何應用GPS?
GPS可以在多個(gè)領(lǐng)域和應用中使用,下面是一些常見(jiàn)的應用GPS的示例:
4. 主要的GPS供應商
- Garmin
Garmin是一家總部位于美國的跨國科技公司,成立于1989年。該公司專(zhuān)注于設計、制造和銷(xiāo)售各種全球定位系統(GPS)產(chǎn)品,包括手持式導航設備、智能手表、運動(dòng)追蹤器、航空設備和汽車(chē)導航系統等。 Garmin的產(chǎn)品廣泛應用于航空、航海、汽車(chē)、戶(hù)外運動(dòng)和健身等領(lǐng)域。公司的產(chǎn)品以其高精度、可靠性和創(chuàng )新性而聞名,被廣泛使用于個(gè)人消費者、專(zhuān)業(yè)人士和軍事領(lǐng)域。
- UBlox
UBlox是一家瑞士的全球領(lǐng)先的無(wú)線(xiàn)通信和定位技術(shù)提供商。該公司成立于1997年,總部位于瑞士的蒙特勒。UBlox專(zhuān)注于提供高精度、高可靠性的定位和導航解決方案,包括全球衛星導航系統(GNSS)接收器、芯片組和軟件。 UBlox的產(chǎn)品廣泛應用于汽車(chē)導航、智能交通系統、物聯(lián)網(wǎng)、航空航天、農業(yè)、測繪、無(wú)人機等領(lǐng)域。公司的產(chǎn)品包括GNSS接收器、GNSS芯片組、GNSS模塊、GNSS天線(xiàn)、數據鏈路模塊、無(wú)線(xiàn)通信模塊等。
- NXP
NXP公司全稱(chēng)為恩智浦半導體公司,它成立于2006年,其前身是荷蘭飛利浦公司于1953年成立的半導體事業(yè)部。恩智浦總部位于荷蘭埃因霍溫,并在全球30個(gè)國家和地區設有辦事處,員工人數超過(guò)30000人。 恩智浦提供低成本、便攜式GPS設備完整解決方案,包括軟件和硬件方面。通過(guò)swGPS Personal軟件實(shí)現GPS計算,從而取代了一個(gè)GPS基帶處理器,降低了材料清單成本并支持現場(chǎng)升級。
- SiRF
SiRF公司是一家全球領(lǐng)先的定位芯片供應商,成立于1995年,總部位于美國加州的圣荷西市。SiRF專(zhuān)注于研發(fā)、制造和銷(xiāo)售GPS芯片和軟件產(chǎn)品,其GPS芯片和軟件產(chǎn)品廣泛應用于移動(dòng)設備、汽車(chē)、個(gè)人電腦、服務(wù)器和其他嵌入式設備中。SiRF公司在全球擁有眾多客戶(hù)和合作伙伴,包括GPS模塊廠(chǎng)商、移動(dòng)設備制造商、汽車(chē)制造商等。
5. 參考案例
下面是一項使用RP2040作為主控芯片,驅動(dòng)中科微電子的ATGM336H型號的傳感器的參考案例,通過(guò)UART進(jìn)行傳感器與主控之間的數據通信,當有數據回傳回來(lái)時(shí),將數據按照指定的流程分割好,找到其中的GPS坐標,并且通過(guò)ssd1306芯片驅動(dòng)的OLED屏幕打印出來(lái),主控芯片與OLED屏幕通過(guò)SPI協(xié)議進(jìn)行數據通信。
效果如圖所示:
代碼如下
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()
評論