<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 基礎知識之全球定位系統GPS模塊

          基礎知識之全球定位系統GPS模塊

          作者:時間:2024-02-22來源:電子森林收藏

          1.什么是?

          全稱為Global Positioning System,是一種基于衛星系統的。它由一組衛星和地面接收設備組成,用于準確確定地球上的位置、速度和時間信息。系統通過將地球上的衛星信號與接收設備之間的距離計算來確定位置。接收設備通過接收來自多顆衛星的信號,并使用三角定位原理計算自身的準確位置。GPS系統由美國政府的國防部負責維護和運營,目前由全球共有約30顆工作衛星,其中至少有4顆衛星同時可見任何地方。GPS接收設備可以是專用的GPS導航器、手機、智能手表、車載導航系統等,這些設備接收衛星信號,并提供定位和導航功能。

          本文引用地址:http://www.ex-cimer.com/article/202402/455608.htm

          GPS模塊是一種在手機或者機器的主板上結合的無線芯片模塊,可以和GPS聯絡,從而實現定位和導航。


          GPS內有原子鐘用來計時,它以原子共振頻率標準來計算時間。原子鐘是目前世界上最準確的衡量時間和頻率的標準,廣泛用于控制廣播頻率和衛星信號。


          GPS定位原理: 當我們需要定位時,我們可以從GPS衛星上接受一些信息,就是衛星的星歷,星歷里有衛星自己的空間坐標x1,y1,z1,衛星有原子鐘,所以可以獲得一個準取得時間t1,衛星會把這些信息發送給我們的設備上的GPS模塊。通過坐標和時間都可以算出GPS模塊和衛星之間的距離。 已知:衛星的空間坐標x1,y1,z1,時間t1 未知:設備的空間坐標x2,y2,z2,時間t2


          四個未知數,所以需要4個這樣的方程,所以需要4個衛星,這樣就可以解出x2,y2,z2,t2 實際上,衛星定位的誤差還是較大,因為信號在大氣中傳輸速度會有損耗,一般會使用差分GPS技術來減小誤差。


          差分GPS技術: 在地面上建立位置已知的GPS基站,當定位時,基站也可以接收到為我們提供位置信息的4顆衛星的信號,根據位置信號測出坐標值,與已知坐標比較,得出偏差量,將偏差量或者實時測得的載波相位,通過數傳鏈路或者移動通信網絡發送給終端設備,然后終端設備根據這個信息進行修正位置,得出比較精準的位置信息。


          GPS可以在多個領域和應用中使用,下面是一些常見的應用GPS的示例:

          • 1. 位置導航和車輛導航:GPS在導航系統中被廣泛應用。使用GPS接收設備,可以確定當前位置,并根據目的地提供導航指引,幫助人們準確到達目標地點。車輛導航系統將GPS技術與地圖和交通信息結合使用,提供實時的車輛導航和路線規劃。
          • 2. 航空和航海導航:在航空和航海領域,GPS在飛行員和船員導航中起著重要作用。它可以提供飛機、船只或無人機的準確位置和航向信息幫助導航員進行飛行路徑劃、定位和導航。
          • 3. 運輸和物流管理:GPS在運輸和物流管理中用于車隊管理、貨物追蹤和路線優化。通過實時地跟蹤車輛位置,管理者可以監控車輛的行駛情況,優化路線和交付時間,提高運輸效率和物流管理。
          • 4. 戶外運動和健身追蹤:GPS可用于追蹤戶外運動活動,如跑步、騎行、徒步等。通過攜帶GPS設備或智能手表,可以記錄運動軌跡、距離和速度等數據,并提供實時和后期分析,幫助人們追蹤運動活動的進展和提高個人健身效果。
          • 5. 地震監測和地質研究:GPS技術被用于地殼運動監測、地震研究和地質勘探中。通過在地球上的多個接收點上放置GPS設備,可以監測地殼的運動和變形,并幫助科學家研究地質活動和地震風險。

          - Garmin

          Garmin是一家總部位于美國的跨國科技公司,成立于1989年。該公司專注于設計、制造和銷售各種全球定位系統(GPS)產品,包括手持式導航設備、智能手表、運動追蹤器、航空設備和汽車導航系統等。 Garmin的產品廣泛應用于航空、航海、汽車、戶外運動和健身等領域。公司的產品以其高精度、可靠性和創新性而聞名,被廣泛使用于個人消費者、專業人士和軍事領域。

          - UBlox

          UBlox是一家瑞士的全球領先的無線通信和定位技術提供商。該公司成立于1997年,總部位于瑞士的蒙特勒。UBlox專注于提供高精度、高可靠性的定位和導航解決方案,包括全球衛星導航系統(GNSS)接收器、芯片組和軟件。 UBlox的產品廣泛應用于汽車導航、智能交通系統、物聯網、航空航天、農業、測繪、無人機等領域。公司的產品包括GNSS接收器、GNSS芯片組、GNSS模塊、GNSS天線、數據鏈路模塊、無線通信模塊等。

          - NXP

          NXP公司全稱為恩智浦半導體公司,它成立于2006年,其前身是荷蘭飛利浦公司于1953年成立的半導體事業部。恩智浦總部位于荷蘭埃因霍溫,并在全球30個國家和地區設有辦事處,員工人數超過30000人。 恩智浦提供低成本、便攜式GPS設備完整解決方案,包括軟件和硬件方面。通過swGPS Personal軟件實現GPS計算,從而取代了一個GPS基帶處理器,降低了材料清單成本并支持現場升級。

          - SiRF

          SiRF公司是一家全球領先的定位芯片供應商,成立于1995年,總部位于美國加州的圣荷西市。SiRF專注于研發、制造和銷售GPS芯片和軟件產品,其GPS芯片和軟件產品廣泛應用于移動設備、汽車、個人電腦、服務器和其他嵌入式設備中。SiRF公司在全球擁有眾多客戶和合作伙伴,包括GPS模塊廠商、移動設備制造商、汽車制造商等。

          • https://github.com/traccar/traccar

          下面是一項使用RP2040作為主控芯片,驅動中科微電子的ATGM336H型號的的參考案例,通過UART進行與主控之間的數據通信,當有數據回傳回來時,將數據按照指定的流程分割好,找到其中的GPS坐標,并且通過ssd1306芯片驅動的OLED屏幕打印出來,主控芯片與OLED屏幕通過SPI協議進行數據通信。


          效果如圖所示:

          代碼如下

            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()


          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();