一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Adafruit Ultimate GPS模塊的使用教程

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-27 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

Adafruit Ultimate GPS模塊的使用教程

我們?cè)?a target="_blank">Adafruit商店中提供了幾種不同的GPS模塊,但是沒有一個(gè)能夠滿足我們的所有愿望-這就是為什么我們?cè)O(shè)計(jì)了這個(gè)小小的GPS接線板。我們認(rèn)為這是 Ultimate GPS模塊,因此我們將其命名為。它具有您想要的一切以及更多的功能:

-165 dBm靈敏度,10 Hz更新,66個(gè)通道

5V友好設(shè)計(jì)和僅20mA的電流消耗

易于使用的木板+兩個(gè)安裝孔

兼容RTC電池

內(nèi)置數(shù)據(jù)記錄

PPS固定輸出

內(nèi)置貼片天線+用于外部有源天線的u.FL連接器

固定狀態(tài)LED

此突破圍繞MTK3339芯片組構(gòu)建,這是毫無疑問的,高質(zhì)量GPS模塊,可以在66個(gè)頻道上跟蹤多達(dá)22顆衛(wèi)星,具有出色的高靈敏度接收器(-165 dB跟蹤?。┖蛢?nèi)置天線。它每秒最多可以進(jìn)行10個(gè)位置更新,以進(jìn)行高速,高靈敏度的記錄或跟蹤。功耗非常低,在導(dǎo)航期間僅為20 mA。

最終GPS分線板

面包板突破板隨附::超低壓降3.3V穩(wěn)壓器,因此您可以使用3.3-5VDC輸入,5V電平安全輸入和ENABLE引腳為其供電,從而可以使用以下方式關(guān)閉模塊:任何微控制器引腳或開關(guān),可選CR1220紐扣電池的占位面積,以保持RTC正常運(yùn)行并允許熱啟動(dòng)和微小的亮紅色LED。搜索衛(wèi)星時(shí),LED指示燈以大約1Hz的頻率閃爍,找到可節(jié)省電量的解決方案時(shí),它每15秒閃爍一次。如果您一直希望有一個(gè)LED,我們還會(huì)在引腳上提供FIX信號(hào),以便您可以將一個(gè)外部LED點(diǎn)亮。

最終GPS USB

USB Breakout板隨附: 4針USB Break板,用于直接焊接或連接到USB主機(jī),兩個(gè)黃色的接收/發(fā)送LED指示燈可讓您知道何時(shí)將數(shù)據(jù)發(fā)送到GPS模塊串行接口或從GPS模塊串行接口發(fā)送數(shù)據(jù);可選的CR1220紐扣電池的占用空間可保持RTC的運(yùn)行并允許熱啟動(dòng),并且還有一個(gè)很小的亮紅色LED指示燈。搜索衛(wèi)星時(shí),LED指示燈以大約1Hz的頻率閃爍,找到可節(jié)省電量的解決方案時(shí),它每15秒閃爍一次。如果您一直希望有一個(gè)LED,我們還會(huì)在引腳上提供FIX信號(hào),以便您可以將一個(gè)外部LED點(diǎn)亮。

天線使用情況

基于版本3 MTK3339的模塊真正突出的兩個(gè)功能是外部天線功能和內(nèi)置的數(shù)據(jù)記錄功能。該模塊具有標(biāo)準(zhǔn)的陶瓷貼片天線,可提供-165 dB的靈敏度,但是如果您想要更大的天線,則可以通過uFL連接器扣緊任何3V有源GPS天線。模塊將自動(dòng)檢測活動(dòng)的天線并進(jìn)行切換!大多數(shù)GPS天線使用SMA連接器,因此您可能需要使用我們的uFL到SMA適配器之一。

基于MTK3339的新模塊(我們已經(jīng)成功測試)的另一個(gè)很酷的功能是內(nèi)置的數(shù)據(jù)記錄功能。由于模塊內(nèi)部有一個(gè)微控制器,帶有一些空的閃存,因此,最新的固件現(xiàn)在允許發(fā)送命令以對(duì)該閃存進(jìn)行內(nèi)部記錄。唯一的事情是您確實(shí)需要讓微控制器發(fā)送“開始記錄”命令。但是,發(fā)送該消息后,微控制器可以進(jìn)入睡眠狀態(tài),并且無需喚醒即可與GPS通話以降低功耗。時(shí)間,日期,經(jīng)度,緯度和高度每15秒記錄一次,并且僅在有修正時(shí)記錄。內(nèi)部閃存可以存儲(chǔ)大約16個(gè)小時(shí)的數(shù)據(jù),它將自動(dòng)追加數(shù)據(jù),因此您不必?fù)?dān)心斷電會(huì)意外丟失數(shù)據(jù)。無法將記錄的內(nèi)容和記錄的頻率更改為已硬編碼到模塊中,但是我們發(fā)現(xiàn)這種安排涵蓋了許多最常見的GPS數(shù)據(jù)記錄要求。

今天在Adafruit商店提貨一個(gè)!

規(guī)格:

模塊規(guī)格:

衛(wèi)星:跟蹤22條,搜索66條

貼片天線尺寸:15mm x 15mm x 4mm

更新速率:1至10 Hz

位置精度:1.8米

速度精度:0.1米/秒

暖/冷啟動(dòng):34秒

采集靈敏度:-145 dBm

跟蹤靈敏度:-165 dBm

最大速度:515m/s

輸入電壓范圍:3.0-5.5VDC

MTK3339工作電流:25mA跟蹤,導(dǎo)航時(shí)消耗20mA電流

輸出:NMEA 0183,默認(rèn)9600波特率

支持DGPS/WAAS/EGNOS

符合FCC E911和支持AGPS(離線模式:EPO,有效期最長為14天)

多達(dá)210個(gè)PRN頻道

干擾檢測和減少

多徑檢測和補(bǔ)償

突破b詳情:

重量(不包括紐扣電池或支架):8.5g

尺寸(不包括紐扣電池或支架):25.5mm x 35mm x 6.5mm/1.0“ x 1.35” x 0.25“

如果您在2012年3月26日之前購買了模塊,并且絲網(wǎng)印刷版上顯示MTK3329,則您可以使用MT3329芯片組獲得此突破的PA6B版本。 MTK3329沒有內(nèi)置的數(shù)據(jù)記錄。如果您的模塊有沙皮筆標(biāo)記劃掉了MTK3329文本或沒有文本,則您的PA6C MTK3339具有數(shù)據(jù)記錄功能。如果名稱旁邊帶有“ v3”的版本,則說明PA6H具有PPS輸出并支持外部天線。

教程假定您使用的是‘3339類型的模塊。

插腳

普通的GPS分組接口旨在與具有3/5V UART且所有GPIO引腳暴露在底部0.1“接頭上的微控制器一起使用

USB版本沒有這些突破,而是只有一個(gè)USB串行端口。當(dāng)您要將其直接焊接到USB主機(jī)傳送器時(shí),右側(cè)有4個(gè)焊盤是USB引腳。

斷路器電源引腳

這些是與GPS供電有關(guān)的引腳。在右側(cè)是必需的電源引腳:

VIN -電源輸入,連接到3-5VDC。連接到干凈安靜電源很重要。 GPS非常敏感,因此您需要一個(gè)安靜的電源。如果可以避免的話,請(qǐng)不要連接到開關(guān)電源,否則LDO的噪音會(huì)減少!

GND -電源和信號(hào)地。連接到電源和微控制器接地。

然后,在左側(cè)是一些可選的電源引腳:

VBAT 輸入引腳-連接到GPS實(shí)時(shí)時(shí)鐘備用電池。我們建議使用背面的電池點(diǎn),但是如果您有一個(gè)項(xiàng)目要使用紐扣電池或其他類型的電池(且其電壓低于3.3V),則可以將其連接至VBAT引腳。 對(duì)于V1和V2模塊:如果要執(zhí)行此操作,請(qǐng)確保在RTC焊盤之間切掉背面的走線

EN 是啟用引腳,通過一個(gè)10K電阻將其拉高。當(dāng)該引腳接地時(shí),它將關(guān)閉GPS模塊。這對(duì)于非常低功耗的項(xiàng)目可能非常方便,在這些項(xiàng)目中您想輕松地長時(shí)間關(guān)閉模塊。如果禁用GPS,將會(huì)丟失修復(fù)程序;如果未安裝備用電池,則修復(fù)過程也將花費(fèi)很長時(shí)間。

3.3V 是輸出來自板載3.3V穩(wěn)壓器。如果您需要干凈的3.3V輸出,可以使用它!它可以提供至少100mA的輸出。

中斷串行數(shù)據(jù)引腳

接下來要使用的引腳是串行數(shù)據(jù)引腳:

TX -傳輸數(shù)據(jù)的引腳從GPS模塊到您的微控制器或計(jì)算機(jī)。它是3.3V邏輯電平。默認(rèn)情況下,數(shù)據(jù)以9600波特的速率輸出

RX -您可以使用該引腳向GPS發(fā)送數(shù)據(jù) 。您可以使用使用3.3V或5V邏輯,有一個(gè)邏輯電平轉(zhuǎn)換器。默認(rèn)情況下,它期望9600波特?cái)?shù)據(jù),并且記住您需要向其發(fā)送校驗(yàn)和的NMEA句子

中斷其他引腳

FIX 是輸出引腳-它與驅(qū)動(dòng)紅色LED的引腳相同。如果沒有解決辦法,F(xiàn)IX引腳將每秒上下脈沖一次。修復(fù)后,大部分時(shí)間該引腳處于低電平(0V),每15秒鐘將脈沖高電平200毫秒

PPS 是一個(gè)新的引腳輸出在V3模塊上。其“每秒脈沖數(shù)”輸出。多數(shù)情況下,它處于邏輯低電平(地),然后每秒脈沖高電平(3.3V),持續(xù)50-100ms,因此,微控制器應(yīng)該很容易地與之同步

備用電池

GPS具有內(nèi)置的實(shí)時(shí)時(shí)鐘,即使掉電且尚未修復(fù),它也可以跟蹤時(shí)間。如果您希望使用火焰狀電源連接(例如,您使用的是太陽能或類似產(chǎn)品),它還可以幫助減少修理時(shí)間。要使用RTC,我們需要安裝電池。 CR1220 尺寸的電池座背面有一個(gè)斑點(diǎn)。我們提供支架,但不包括電池。您可以使用任何12毫米硬幣電池-這些硬幣電池很受歡迎,我們也可以在Adafruit商店中使用它們。

通常,如果GPS斷電,它將恢復(fù)到出廠默認(rèn)的波特率,配置等。備用電池將意味著這些默認(rèn)值不會(huì)丟失!

備用實(shí)時(shí)時(shí)鐘電路消耗7 uA(0.007 mA),因此CR1220的使用壽命為40mAh/0.007mA = 5,714小時(shí)= 240天連續(xù)。備用電池僅在GPS沒有3V主電源時(shí)使用,因此,只要偶爾使用一次,就可以使用幾年

如果僅具有v1或v2模塊:在將電池插入電池盒之前,請(qǐng)先切割背面兩個(gè)焊墊之間的走線,標(biāo)記為RTC(這將VIN引腳與電池輸入斷開連接)使用萬用表進(jìn)行連續(xù)性檢查,以確保兩個(gè)焊盤不再連接在一起。

V3模塊沒有切割痕跡,它們具有內(nèi)置二極管

請(qǐng)記住, GPS不知道您處于哪個(gè)時(shí)區(qū)(即使知道您所在的位置,沒有大量查找表也無法輕松確定時(shí)區(qū)),因此所有日期/時(shí)間數(shù)據(jù)都采用UTC(又稱格林威治標(biāo)準(zhǔn)時(shí)間)-你會(huì)必須編寫將其轉(zhuǎn)換為您當(dāng)?shù)貢r(shí)區(qū)的代碼,并在需要時(shí)記入夏令時(shí)!由于這很復(fù)雜,因此大多數(shù)人都堅(jiān)持將所有內(nèi)容保留在UTC

外部天線

版本3中的新功能在Ultimate GPS突破中,我們現(xiàn)在支持可選的外部天線!該功能在v1或v2中不可用,因此,如果看不到uFL連接器,則說明該模塊的版本較舊,不支持天線

所有Ultimate GPS模塊具有內(nèi)置貼片天線-該天線提供-165 dBm的靈敏度,非常適合許多項(xiàng)目。但是,如果要將項(xiàng)目放在盒子中,則可能無法使天線指向上方,或者可能位于金屬屏蔽中,或者可能需要更高的靈敏度。在這些情況下,您可能需要使用外部有源天線。

有源天線會(huì)吸收電流,因此它們確實(shí)可以提供更大的增益,但會(huì)降低功耗。檢查天線數(shù)據(jù)表中的確切電流(通常為10-20mA)。大多數(shù)GPS天線使用流行且易于使用的SMA連接器。但是,SMA接頭在GPS突破口上會(huì)相當(dāng)大,因此我們選擇了uFL接頭-重量輕,體積小且易于制造。如果您不需要外部天線,則不會(huì)增加重量或空間,但是易于連接uFL-》 SMA適配器電纜。然后將GPS天線連接到電纜。

uFL連接器小巧,纖巧,沒有額定應(yīng)變或大量的連接/斷開。一旦您連接了uFL適配器,請(qǐng)使用應(yīng)力消除以避免剝落uFL

Ultimate GPS將自動(dòng)檢測到已連接外部有源天線并“切換” -您不需要發(fā)送任何命令。

有一個(gè)輸出語句可以告訴您天線的狀態(tài)。 $ PGTOP,11,x ,其中 x 是狀態(tài)號(hào)。如果 x 為 3 ,則表示它正在使用外部天線。如果 x 為 2 ,則使用內(nèi)部天線,如果 x 為 1 ,則表明天線短路或出現(xiàn)問題。

在較新的防護(hù)罩和模塊上,您需要告知要輸出此報(bào)告的固件,可以通過在同一時(shí)間添加 gps.sendCommand(PGCMD_ANTENNA)來做到這一點(diǎn)。設(shè)置更新率/句子輸出。

直接計(jì)算機(jī)接線

GPS模塊很棒,因?yàn)榇蜷_它們的那一刻,它們將開始吐出數(shù)據(jù),并嘗試獲取“修復(fù)”(位置驗(yàn)證)。就像現(xiàn)有的幾乎所有GPS一樣,Adafruit Ultimate GPS使用TTL串行輸出發(fā)送數(shù)據(jù),因此首先測試GPS的最佳方法是通過Arduino上的TTL串行到USB轉(zhuǎn)換器將其直接連接到計(jì)算機(jī)。您也可以使用FTDI Friend或其他TTL適配器,但在本演示中,我們將使用經(jīng)典的Arduino。

Leonardo用戶:本教程步驟不適用于Leonardo。繼續(xù)下一步,“ Arduino接線”,但是請(qǐng)回到這里進(jìn)行有關(guān)GPS數(shù)據(jù)的討論!

首先,將“空白”草圖加載到Arduino中:

下載:文件

復(fù)制代碼

// this sketch will allow you to bypass the Atmega chip

// and connect the Ultimate GPS directly to the USB/Serial

// chip converter.

// Connect VIN to +5V

// Connect GND to Ground

// Connect GPS RX (data into GPS) to Digital 0

// Connect GPS TX (data out from GPS) to Digital 1

void setup() {}

void loop() {} // this sketch will allow you to bypass the Atmega chip

// and connect the Ultimate GPS directly to the USB/Serial

// chip converter.

// Connect VIN to +5V

// Connect GND to Ground

// Connect GPS RX (data into GPS) to Digital 0

// Connect GPS TX (data out from GPS) to Digital 1

void setup() {}

void loop() {}

這將釋放轉(zhuǎn)換器,因此您可以直接接線并繞過Arduino芯片。上傳該草圖后,請(qǐng)按照以下步驟連接GPS。您的模塊外觀可能略有不同,但是只要您連接到正確的引腳名稱,它們?cè)谠摬糠值?a target="_blank">工作原理都是相同的

現(xiàn)在插入U(xiǎn)SB電纜,然后從Arduino IDE打開串行監(jiān)視器,并確保選擇 9600波特 中。您應(yīng)該看到如下文本:

這是模塊輸出的原始GPS“ NMEA語句”。 NMEA句子有幾種,人們最常用的是 $ GPRMC (( G lobal P 定位 R 推薦 M 至少 C 個(gè)坐標(biāo)或類似內(nèi)容)和 $ GPGGA 語句。這兩個(gè)提供時(shí)間,日期,緯度,經(jīng)度,高度,估計(jì)的陸地速度和定位類型。修復(fù)類型表示GPS是否已鎖定到衛(wèi)星數(shù)據(jù)上并接收到足夠的數(shù)據(jù)來確定位置(2D修復(fù))或位置+高度(3D修復(fù))。

有關(guān)NMEA語句以及它們的數(shù)據(jù)的更多詳細(xì)信息包含,請(qǐng)查看此站點(diǎn)

如果您在上面的窗口中查看數(shù)據(jù),您會(huì)發(fā)現(xiàn)其中有很多逗號(hào),而中間沒有數(shù)據(jù)。這是因?yàn)榇四K在我的桌子上,室內(nèi),并且沒有“修復(fù)”功能。要解決此問題,我們需要將該模塊放在外面。

GPS模塊將即使沒有修復(fù)程序,也始終發(fā)送數(shù)據(jù)!為了獲取“有效”(非空白)數(shù)據(jù),您必須將GPS模塊直接放在外面,方形陶瓷天線指向上方,并享有晴朗的天空。在理想條件下,該模塊可以在45秒內(nèi)得到修復(fù)。但是,取決于您的位置,衛(wèi)星配置,太陽耀斑,附近的高樓大廈,RF噪聲等,修復(fù)可能最多需要半小時(shí)(或更長時(shí)間)!這并不意味著您的GPS模塊已損壞,GPS模塊將始終盡可能快地工作以獲取修復(fù)。

如果您能獲得很長的USB線(或?qū)PS天線連接到v3模塊),然后將GPS伸出窗口,使其指向天空,最終GPS將得到修復(fù),窗口數(shù)據(jù)將轉(zhuǎn)換為傳輸有效數(shù)據(jù),如下所示:

查找以下內(nèi)容: $ GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412 ,,, A * 77

該行稱為RMC(建議的最低要求)句子,所有最有用的數(shù)據(jù)。每個(gè)數(shù)據(jù)塊都用逗號(hào)分隔。

第一部分 194509.000 是當(dāng)前時(shí)間 GMT (格林威治標(biāo)準(zhǔn)時(shí)間)。前兩個(gè)數(shù)字 19 表示小時(shí)(1900h,也稱為7pm),后兩個(gè)數(shù)字是分鐘,后兩個(gè)數(shù)字是秒,最后是毫秒。因此,截取該屏幕截圖的時(shí)間為7:45 pm和9秒。 GPS不知道您所在的時(shí)區(qū)或“夏令時(shí)”,因此您必須進(jìn)行計(jì)算才能將GMT轉(zhuǎn)換為您的時(shí)區(qū)

第二部分是“狀態(tài)代碼”,如果它是 V ,表示數(shù)據(jù)是 V oid(無效)。如果它是 A ,則表示其 A 功能(GPS可以獲取鎖定/修復(fù))

接下來的4個(gè)數(shù)據(jù)是地理位置數(shù)據(jù)。根據(jù)GPS,我的位置是 4042.6142,N (北緯40度,北42.6142分鐘)和 07400.4168,W 。 (西經(jīng)74度,西數(shù)0.4168,十進(jìn)制分鐘)要在Google地圖中查看此位置,請(qǐng)?jiān)贕oogle地圖搜索框中輸入 +40 42.6142’,-74 00.4168‘。不幸的是,gmaps要求您使用+/-而不是NSWE表示法。 N和E為正,S和W為負(fù)。

人們經(jīng)常會(huì)感到困惑因?yàn)镚PS正常工作,但“距5英里遠(yuǎn)”-這是因?yàn)镚PS不能正確解析經(jīng)緯度數(shù)據(jù)。盡管有外觀,但是地理位置數(shù)據(jù)并非以十進(jìn)制度為單位。格式為度和分鐘,格式如下:緯度:DDMM.MMMM(前兩個(gè)字符為度。)經(jīng)度:DDDMM.MMMM(前三個(gè)字符為度。)

下一個(gè)數(shù)據(jù)是地面速度(以節(jié)為單位)。我們要 2.03 結(jié)

在此之后是跟蹤角度,這意味著根據(jù)過去的行程來近似我們要駛向的“羅盤”方向

此后的一個(gè)是 160412 ,它是當(dāng)前日期(2012年4月16日)。

最后是 * XX 用作數(shù)據(jù)傳輸校驗(yàn)和的數(shù)據(jù)

使用GPS模塊獲得修復(fù)后,請(qǐng)使用Google地圖(或某些其他地圖軟件)驗(yàn)證您的位置。請(qǐng)記住,GPS通常只能精確到5-10米,如果您在室內(nèi)或被高大的建筑物包圍著,則更糟。

中斷Arduino接線

一旦您通過直接接線對(duì)GPS模塊進(jìn)行了測試,我們就可以將其接線到微控制器上。我們將使用Arduino,但您可以將我們的代碼改編為能夠以9600波特接收TTL串行的任何其他微控制器。

將 VIN 連接到+ 5V, GND 接地, RX 至數(shù)字2, TX 至數(shù)字3。

下一步,下載Adafruit GPS庫。該庫完成了從GPS模塊接收數(shù)據(jù)所需的許多“繁重工作”,例如在后臺(tái)中斷中讀取流數(shù)據(jù)并自動(dòng)對(duì)其進(jìn)行魔術(shù)解析。要下載它,請(qǐng)?jiān)L問GitHub存儲(chǔ)庫,或單擊下面的

從github下載Adafruit GPS庫

重命名未壓縮的文件夾 Adafruit_GPS 。檢查 Adafruit_GPS 文件夾是否包含 Adafruit_GPS.cpp 和 Adafruit_GPS.h

移動(dòng) Adafruit_GPS 到您的Arduino/Libraries文件夾,然后重新啟動(dòng)Arduino IDE。庫安裝是一個(gè)經(jīng)常遇到的障礙……如果您需要幫助,我們的《關(guān)于Arduino的所有圖書館指南》將其詳細(xì)說明!

萊昂納多和Micro用戶:我們?cè)贏dafruit_GPS庫中有特殊的示例草圖,可與Micro/Leo配合使用!

打開文件→示例→Adafruit_GPS→echo 草圖并將其上傳到Arduino。然后打開串行監(jiān)視器。該草圖僅從軟件串行端口(引腳2和3)讀取數(shù)據(jù),并將其輸出到連接到USB的硬件串行端口。

打開Arduino IDE串行控制臺(tái),并確保將串行波特率設(shè)置為 115200

您可以在 setup()過程中通過注釋/取消注釋行來配置所看到的GPS輸出。例如,我們可以要求GPS發(fā)送不同的句子,并更改其發(fā)送數(shù)據(jù)的頻率。最大速度為10 Hz(每秒10次),并且是大量數(shù)據(jù)。您可能無法以該速度輸出“所有數(shù)據(jù)”,因?yàn)?600波特率不夠快。

下載:文件

復(fù)制代碼

// You can adjust which sentences to have the module emit, below

// uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude

GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);

// uncomment this line to turn on only the “minimum recommended” data for high update rates!

//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);

// uncomment this line to turn on all the available data - for 9600 baud you’ll want 1 Hz rate

//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);

// Set the update rate

// 1 Hz update rate

//GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);

// 5 Hz update rate- for 9600 baud you‘ll have to set the output to RMC or RMCGGA only (see above)

GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);

// 10 Hz update rate - for 9600 baud you’ll have to set the output to RMC only (see above)

//GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ); // You can adjust which sentences to have the module emit, below

// uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude

GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);

// uncomment this line to turn on only the “minimum recommended” data for high update rates!

//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);

// uncomment this line to turn on all the available data - for 9600 baud you‘ll want 1 Hz rate

//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);

// Set the update rate

// 1 Hz update rate

//GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);

// 5 Hz update rate- for 9600 baud you’ll have to set the output to RMC or RMCGGA only (see above)

GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);

// 10 Hz update rate - for 9600 baud you‘ll have to set the output to RMC only (see above)

//GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);

通常,我們發(fā)現(xiàn)僅大多數(shù)項(xiàng)目需要RMC和GGA NMEA,因此除非您需要了解衛(wèi)星位置,否則您不需要ALLDATA。

突破性的Arduino解析

由于所有GPS的輸出NMEA語句(通常對(duì)于我們的項(xiàng)目,我們都需要從中提取實(shí)際數(shù)據(jù)),因此在使用Adafruit GPS庫。通過使庫在后臺(tái)中斷中讀取,存儲(chǔ)和解析數(shù)據(jù),可以輕松地查詢庫并獲取最新的更新信息,而無需進(jìn)行任何麻煩的解析工作。

打開文件→示例→Adafruit_GPS→解析草圖并將其上傳到Arduino。然后打開串行監(jiān)視器。

在此草圖中,我們?cè)谥餮h(huán)中不斷調(diào)用 GPS.read()(如果可以的話,請(qǐng)使其在中斷中運(yùn)行一毫秒)。然后在主循環(huán)中,我們可以通過調(diào)用 GPS.newNMEAreceived()來詢問是否已接收到新的數(shù)據(jù)塊,如果返回的結(jié)果是 true ,那么我們可以要求圖書館使用 GPS.parse(GPS.lastNMEA())解析數(shù)據(jù)。

我們確實(shí)必須在主循環(huán)中保持查詢和解析-不可能在中斷,因?yàn)槟菢拥脑捨覀儠?huì)意外丟失GPS數(shù)據(jù)。

一旦解析了數(shù)據(jù),我們就可以從庫中獲取數(shù)據(jù),例如 GPS.day , GPS .month 和 GPS.year 作為當(dāng)前日期。 GPS.fix 如果有修復(fù),將為1,如果沒有,則為0。如果我們有解決辦法,那么我們可以要求 GPS。緯度, GPS。經(jīng)度, GPS。速度(以節(jié)為單位,而不是mph或k/hr!), GPS.angle , GPS.altitude (以厘米為單位)和 GPS.satellites (衛(wèi)星數(shù))

這應(yīng)該使基于位置的項(xiàng)目更加容易。我們建議將更新速率保持在1Hz,并要求GPS僅輸出RMC和GGA,因?yàn)?a href="http://www.www27dydycom.cn/tags/解析器/" target="_blank">解析器始終無法跟蹤其他數(shù)據(jù)。

CircuitPython和Python設(shè)置

除Arduino外,您還可以輕松地將GPS模塊與Python或CircuitPython代碼一起使用。 Python代碼非常適合解析和處理從GPS模塊輸出的文本,此Adafruit CircuitPython GPS模塊可以為您處理大部分工作!

CircuitPython微控制器接線

首先請(qǐng)確保將GPS模塊連接到CircuitPython板,以便使用硬件UART引腳。這是Metro M0 Express的示例:

table》

Python計(jì)算機(jī)接線

由于您可以使用數(shù)十種Linux計(jì)算機(jī)/板,因此我們將顯示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

這里有兩個(gè)選項(xiàng):外部USB到串行轉(zhuǎn)換器,或Pi的TX/RX引腳上的內(nèi)置UART。下面是連接USB到串行轉(zhuǎn)換器的示例:

板5V 或 3.3V 到 GPS模塊VIN 。

板GND 到 GPS模塊GND 。

板串行TX 到 GPS模塊RX 。

板載串行RX 到 GPS模塊TX 。

GPS Vin 至 USB 5V 或 3V 》(USB控制臺(tái)電纜上的紅色電線)

GPS地面到 USB接地(黑線)

GPS RX 到 USB TX (綠線)

GPS TX 到 USB RX (白線)

如果是Raspberry Pi以外的單板計(jì)算機(jī),則串行端口可能已綁定到控制臺(tái),或者對(duì)用戶不可用。請(qǐng)參閱主板文檔以了解如何使用串行端口

您也可以跳過USB控制臺(tái)電纜,只需將Micro B電纜直接從計(jì)算機(jī)插入最終GPS USB

下面是使用Pi內(nèi)置UART的示例:

GPS Vin 至 3。 3V (紅線)

GPS接地到地面(黑線)

GPS RX 至 TX (綠線)

GPS TX 至 RX (白線)

如果要使用內(nèi)置UART,則需要禁用串行控制臺(tái),并在 raspi-config 中啟用串行端口硬件。有關(guān)如何執(zhí)行此操作的詳細(xì)說明,請(qǐng)參見《 Raspberry Pi上的CircuitPython指南》的“ UART/串行”部分。

CircuitPython安裝GPS庫

接下來,您需要在CircuitPython板上安裝Adafruit CircuitPython GPS庫。請(qǐng)記住,該模塊用于Adafruit CircuitPython固件,而不是用于MicroPython.org固件!

首先,請(qǐng)確保您的電路板正在運(yùn)行最新版本的Adafruit CircuitPython。

下一步,需要安裝必要的庫才能使用硬件。仔細(xì)按照以下步驟從Adafruit的CircuitPython庫捆綁包中查找和安裝這些庫。例如,Circuit Playground Express指南上有一個(gè)很棒的頁面,介紹了如何為Express和非Express板安裝庫包。

請(qǐng)記住Trinket M0,Gemma M0和Trinket M0等非Express板。 Feather/Metro M0 basic,您需要從捆綁包中手動(dòng)安裝必要的庫:

adafruit_gps.mpy

您還可以從Adafruit CircuitPython GPS版本頁面下載 adafruit_gps.mpy 文件。

在繼續(xù)之前,請(qǐng)確保您開發(fā)板的 lib 文件夾中的 adafruit_gps.mpy 文件復(fù)制過來。

GPS庫的Python安裝

您需要安裝 Adafruit_Blinka 庫,該庫在Python中提供了CircuitPython支持。這可能需要驗(yàn)證您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都有一些不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問Linux上的CircuitPython指南以使您的計(jì)算機(jī)準(zhǔn)備就緒!

完成后,從命令行運(yùn)行以下命令:

下載:文件

復(fù)制代碼

sudo pip3 install adafruit-circuitpython-gps sudo pip3 install adafruit-circuitpython-gps

CircuitPython和Python UART的用法

為演示在使用UART的CircuitPython中GPS模塊的用法,我們來看一個(gè)完整的程序示例 gps_simpletest.py 文件中的示例。

CircuitPython微控制器

使用CircuitPython微控制器,將該文件另存為 code.py 在您的板上,然后打開串行控制臺(tái)以查看其輸出。

具有Python的Linux/Computer/Raspberry Pi

如果您在Raspberry Pi(或任何計(jì)算機(jī))上運(yùn)行g(shù)ps_simpletest.py,則必須進(jìn)行一些更改。

在Raspberry Pi上,注釋掉uart = busio(。..)行,并取消注釋import serial和uart = serial.Serial(。..)行,將/dev/ttyUSB0更改為適當(dāng)?shù)男蛄刑?hào)港口?,F(xiàn)在,您可以使用以下命令運(yùn)行該程序:

下載:文件

復(fù)制代碼

python3 gps_simpletest.py python3 gps_simpletest.py

示例解析代碼

下載:Project Zip 或 gps_simpletest.py | 在Github上查看

復(fù)制代碼

# Simple GPS module demonstration.

# Will wait for a fix and print a message every second with the current location

# and other details.

import time

import board

import busio

import adafruit_gps

# Create a serial connection for the GPS connection using default speed and

# a slightly higher timeout (GPS modules typically update once a second)。

# These are the defaults you should use for the GPS FeatherWing.

# For other boards set RX = GPS module TX, and TX = GPS module RX pins.

uart = busio.UART(board.TX, board.RX, baudrate=9600, timeout=10)

# for a computer, use the pyserial library for uart access

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=9600, timeout=10)

# If using I2C, we’ll create an I2C interface to talk to using default pins

#i2c = busio.I2C(board.SCL, board.SDA)

# Create a GPS module instance.

gps = adafruit_gps.GPS(uart, debug=False) # Use UART/pyserial

#gps = adafruit_gps.GPS_GtopI2C(i2c, debug=False) # Use I2C interface

# Initialize the GPS module by changing what data it sends and at what rate.

# These are NMEA extensions for PMTK_314_SET_NMEA_OUTPUT and

# PMTK_220_SET_NMEA_UPDATERATE but you can send anything from here to adjust

# the GPS module behavior:

# https://cdn-shop.adafruit.com/datasheets/PMTK_A11.pdf

# Turn on the basic GGA and RMC info (what you typically want)

gps.send_command(b‘PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Turn on just minimum info (RMC only, location):

#gps.send_command(b‘PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Turn off everything:

#gps.send_command(b‘PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Tuen on everything (not all of it is parsed?。?/p>

#gps.send_command(b‘PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Set update rate to once a second (1hz) which is what you typically want.

gps.send_command(b‘PMTK220,1000’)

# Or decrease to once every two seconds by doubling the millisecond value.

# Be sure to also increase your UART timeout above!

#gps.send_command(b‘PMTK220,2000’)

# You can also speed up the rate, but don‘t go too fast or else you can lose

# data during parsing. This would be twice a second (2hz, 500ms delay):

#gps.send_command(b’PMTK220,500‘)

# Main loop runs forever printing the location, etc. every second.

last_print = time.monotonic()

while True:

# Make sure to call gps.update() every loop iteration and at least twice

# as fast as data comes from the GPS unit (usually every second)。

# This returns a bool that’s true if it parsed new data (you can ignore it

# though if you don‘t care and instead look at the has_fix property)。

gps.update()

# Every second print out current location details if there’s a fix.

current = time.monotonic()

if current - last_print 》= 1.0:

last_print = current

if not gps.has_fix:

# Try again if we don‘t have a fix yet.

print(’Waiting for fix.。.‘)

continue

# We have a fix! (gps.has_fix is true)

# Print out details about the fix like location, date, etc.

print(’=‘ * 40) # Print a separator line.

print(’Fix timestamp: {}/{}/{} {:02}:{:02}:{:02}‘.format(

gps.timestamp_utc.tm_mon, # Grab parts of the time from the

gps.timestamp_utc.tm_mday, # struct_time object that holds

gps.timestamp_utc.tm_year, # the fix time. Note you might

gps.timestamp_utc.tm_hour, # not get all data like year, day,

gps.timestamp_utc.tm_min, # month!

gps.timestamp_utc.tm_sec))

print(’Latitude: {0:.6f} degrees‘.format(gps.latitude))

print(’Longitude: {0:.6f} degrees‘.format(gps.longitude))

print(’Fix quality: {}‘.format(gps.fix_quality))

# Some attributes beyond latitude, longitude and timestamp are optional

# and might not be present. Check if they’re None before trying to use!

if gps.satellites is not None:

print(‘# satellites: {}’.format(gps.satellites))

if gps.altitude_m is not None:

print(‘Altitude: {} meters’.format(gps.altitude_m))

if gps.speed_knots is not None:

print(‘Speed: {} knots’.format(gps.speed_knots))

if gps.track_angle_deg is not None:

print(‘Track angle: {} degrees’.format(gps.track_angle_deg))

if gps.horizontal_dilution is not None:

print(‘Horizontal dilution: {}’.format(gps.horizontal_dilution))

if gps.height_geoid is not None:

print(‘Height geo ID: {} meters’.format(gps.height_geoid))

# Simple GPS module demonstration.

# Will wait for a fix and print a message every second with the current location

# and other details.

import time

import board

import busio

import adafruit_gps

# Create a serial connection for the GPS connection using default speed and

# a slightly higher timeout (GPS modules typically update once a second)。

# These are the defaults you should use for the GPS FeatherWing.

# For other boards set RX = GPS module TX, and TX = GPS module RX pins.

uart = busio.UART(board.TX, board.RX, baudrate=9600, timeout=10)

# for a computer, use the pyserial library for uart access

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=9600, timeout=10)

# If using I2C, we‘ll create an I2C interface to talk to using default pins

#i2c = busio.I2C(board.SCL, board.SDA)

# Create a GPS module instance.

gps = adafruit_gps.GPS(uart, debug=False) # Use UART/pyserial

#gps = adafruit_gps.GPS_GtopI2C(i2c, debug=False) # Use I2C interface

# Initialize the GPS module by changing what data it sends and at what rate.

# These are NMEA extensions for PMTK_314_SET_NMEA_OUTPUT and

# PMTK_220_SET_NMEA_UPDATERATE but you can send anything from here to adjust

# the GPS module behavior:

# https://cdn-shop.adafruit.com/datasheets/PMTK_A11.pdf

# Turn on the basic GGA and RMC info (what you typically want)

gps.send_command(b’PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Turn on just minimum info (RMC only, location):

#gps.send_command(b’PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Turn off everything:

#gps.send_command(b’PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Tuen on everything (not all of it is parsed!)

#gps.send_command(b’PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Set update rate to once a second (1hz) which is what you typically want.

gps.send_command(b’PMTK220,1000‘)

# Or decrease to once every two seconds by doubling the millisecond value.

# Be sure to also increase your UART timeout above!

#gps.send_command(b’PMTK220,2000‘)

# You can also speed up the rate, but don’t go too fast or else you can lose

# data during parsing. This would be twice a second (2hz, 500ms delay):

#gps.send_command(b‘PMTK220,500’)

# Main loop runs forever printing the location, etc. every second.

last_print = time.monotonic()

while True:

# Make sure to call gps.update() every loop iteration and at least twice

# as fast as data comes from the GPS unit (usually every second)。

# This returns a bool that‘s true if it parsed new data (you can ignore it

# though if you don’t care and instead look at the has_fix property)。

gps.update()

# Every second print out current location details if there‘s a fix.

current = time.monotonic()

if current - last_print 》= 1.0:

last_print = current

if not gps.has_fix:

# Try again if we don’t have a fix yet.

print(‘Waiting for fix.。.’)

continue

# We have a fix! (gps.has_fix is true)

# Print out details about the fix like location, date, etc.

print(‘=’ * 40) # Print a separator line.

print(‘Fix timestamp: {}/{}/{} {:02}:{:02}:{:02}’.format(

gps.timestamp_utc.tm_mon, # Grab parts of the time from the

gps.timestamp_utc.tm_mday, # struct_time object that holds

gps.timestamp_utc.tm_year, # the fix time. Note you might

gps.timestamp_utc.tm_hour, # not get all data like year, day,

gps.timestamp_utc.tm_min, # month!

gps.timestamp_utc.tm_sec))

print(‘Latitude: {0:.6f} degrees’.format(gps.latitude))

print(‘Longitude: {0:.6f} degrees’.format(gps.longitude))

print(‘Fix quality: {}’.format(gps.fix_quality))

# Some attributes beyond latitude, longitude and timestamp are optional

# and might not be present. Check if they‘re None before trying to use!

if gps.satellites is not None:

print(’# satellites: {}‘.format(gps.satellites))

if gps.altitude_m is not None:

print(’Altitude: {} meters‘.format(gps.altitude_m))

if gps.speed_knots is not None:

print(’Speed: {} knots‘.format(gps.speed_knots))

if gps.track_angle_deg is not None:

print(’Track angle: {} degrees‘.format(gps.track_angle_deg))

if gps.horizontal_dilution is not None:

print(’Horizontal dilution: {}‘.format(gps.horizontal_dilution))

if gps.height_geoid is not None:

print(’Height geo ID: {} meters‘.format(gps.height_geoid))

在代碼運(yùn)行時(shí),它將每秒打印一條消息,或者更新它仍在等待GPS修復(fù):

注意:由于與內(nèi)置天線相比,PA1010D微型GPS模塊可能需要比其他帶有永恒天線的GPS模塊更通暢的天空視野。對(duì)于任何GPS模塊,如果您在獲取修復(fù)程序時(shí)遇到問題,請(qǐng)嘗試將其移動(dòng)到更理想的位置。

一旦建立了修復(fù)程序,它將打印有關(guān)當(dāng)前位置和其他GPS數(shù)據(jù)的詳細(xì)信息:

讓我們更詳細(xì)地看一下代碼,以了解其工作原理。首先,該示例需要導(dǎo)入一些模塊,例如用于訪問串行端口和其他硬件的內(nèi)置busio和board模塊:

下載:文件

復(fù)制代碼

import board

import busio

import time import board

import busio

import time

接下來導(dǎo)入GPS模塊:

下載:文件

復(fù)制代碼

import adafruit_gps import adafruit_gps

現(xiàn)在已創(chuàng)建了串行UART,并將其連接到GPS模塊將使用的串行端口引腳,這是用于與GPS模塊通信

下載:文件

復(fù)制代碼

# Define RX and TX pins for the board’s serial port connected to the GPS.

# These are the defaults you should use for the GPS FeatherWing.

# For other boards set RX = GPS module TX, and TX = GPS module RX pins.

RX = board.RX

TX = board.TX

# Create a serial connection for the GPS connection using default speed and

# a slightly higher timeout (GPS modules typically update once a second)。

uart = busio.UART(TX, RX, baudrate=9600, timeout=3000)

# for a computer, use the pyserial library for uart access

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=9600, timeout=3000) # Define RX and TX pins for the board‘s serial port connected to the GPS.

# These are the defaults you should use for the GPS FeatherWing.

# For other boards set RX = GPS module TX, and TX = GPS module RX pins.

RX = board.RX

TX = board.TX

# Create a serial connection for the GPS connection using default speed and

# a slightly higher timeout (GPS modules typically update once a second)。

uart = busio.UART(TX, RX, baudrate=9600, timeout=3000)

# for a computer, use the pyserial library for uart access

#import serial

#uart = serial.Serial(“/dev/ttyUSB0”, baudrate=9600, timeout=3000)

一旦連接的GPS模塊可以使用UART對(duì)象,您就可以創(chuàng)建GPS解析類的實(shí)例。您需要將此類傳遞給UART實(shí)例,它將從內(nèi)部從與其連接的GPS模塊讀取新數(shù)據(jù):

下載:文件

復(fù)制代碼

gps = adafruit_gps.GPS(uart) gps = adafruit_gps.GPS(uart)

GPS示例代碼已解釋

在讀取GPS數(shù)據(jù)之前,該示例通過發(fā)送一些自定義的NMEA GPS命令來配置模塊數(shù)據(jù)量和速率。閱讀評(píng)論以查看一些用于調(diào)整數(shù)據(jù)速率和數(shù)據(jù)量的選項(xiàng),但是通常您希望默認(rèn)使用每秒一次的核心位置信息默認(rèn)值:

下載:文件

復(fù)制代碼

# Initialize the GPS module by changing what data it sends and at what rate.

# These are NMEA extensions for PMTK_314_SET_NMEA_OUTPUT and

# PMTK_220_SET_NMEA_UPDATERATE but you can send anything from here to adjust

# the GPS module behavior:

# https://cdn-shop.adafruit.com/datasheets/PMTK_A11.pdf

# Turn on the basic GGA and RMC info (what you typically want)

gps.send_command(b’PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Turn on just minimum info (RMC only, location):

#gps.send_command(b’PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Turn off everything:

#gps.send_command(b’PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Tuen on everything (not all of it is parsed?。?/p>

#gps.send_command(b’PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0‘)

# Set update rate to once a second (1hz) which is what you typically want.

gps.send_command(b’PMTK220,1000‘)

# Or decrease to once every two seconds by doubling the millisecond value.

# Be sure to also increase your UART timeout above!

#gps.send_command(b’PMTK220,2000‘)

# You can also speed up the rate, but don’t go too fast or else you can lose

# data during parsing. This would be twice a second (2hz, 500ms delay):

#gps.send_command(b‘PMTK220,500’) # Initialize the GPS module by changing what data it sends and at what rate.

# These are NMEA extensions for PMTK_314_SET_NMEA_OUTPUT and

# PMTK_220_SET_NMEA_UPDATERATE but you can send anything from here to adjust

# the GPS module behavior:

# https://cdn-shop.adafruit.com/datasheets/PMTK_A11.pdf

# Turn on the basic GGA and RMC info (what you typically want)

gps.send_command(b‘PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Turn on just minimum info (RMC only, location):

#gps.send_command(b‘PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Turn off everything:

#gps.send_command(b‘PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Tuen on everything (not all of it is parsed?。?/p>

#gps.send_command(b‘PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0’)

# Set update rate to once a second (1hz) which is what you typically want.

gps.send_command(b‘PMTK220,1000’)

# Or decrease to once every two seconds by doubling the millisecond value.

# Be sure to also increase your UART timeout above!

#gps.send_command(b‘PMTK220,2000’)

# You can also speed up the rate, but don‘t go too fast or else you can lose

# data during parsing. This would be twice a second (2hz, 500ms delay):

#gps.send_command(b’PMTK220,500‘)

如果需要,可以使用上面顯示的send_command功能將其他自定義命令發(fā)送到GPS模塊。您也不必?fù)?dān)心在命令中添加NMEA校驗(yàn)和,該函數(shù)將自動(dòng)執(zhí)行此操作(或者不自動(dòng)將add_checksum=False設(shè)置為參數(shù),并跳過校驗(yàn)和的添加)。

《現(xiàn)在,我們可以進(jìn)入一個(gè)主循環(huán),該循環(huán)不斷更新來自GPS模塊的數(shù)據(jù)并打印出狀態(tài)。此循環(huán)最重要的部分是調(diào)用GPS更新功能:

下載:文件

復(fù)制代碼

# Make sure to call gps.update() every loop iteration and at least twice

# as fast as data comes from the GPS unit (usually every second)。

# This returns a bool that’s true if it parsed new data (you can ignore it

# though if you don‘t care and instead look at the has_fix property)。

gps.update() # Make sure to call gps.update() every loop iteration and at least twice

# as fast as data comes from the GPS unit (usually every second)。

# This returns a bool that’s true if it parsed new data (you can ignore it

# though if you don‘t care and instead look at the has_fix property)。

gps.update()

就像注釋中提到的那樣,您必須在每次循環(huán)迭代中調(diào)用update,理想情況下必須多次調(diào)用次。每次調(diào)用update時(shí),它都會(huì)允許GPS庫代碼從GPS模塊讀取新數(shù)據(jù)并更新其狀態(tài)。由于GPS模塊始終在發(fā)送數(shù)據(jù),因此您必須注意不斷讀取數(shù)據(jù),否則可能會(huì)由于緩沖區(qū)已滿而丟失數(shù)據(jù)。

您可以檢查has_fix屬性,看看是否該模塊具有GPS定位功能,如果有,則可以讀取許多屬性,如latitude和longitude(以度為單位):

下載:文件

復(fù)制代碼

if not gps.has_fix:

# Try again if we don’t have a fix yet.

print(‘Waiting for fix.。.’)

continue

# We have a fix! (gps.has_fix is true)

# Print out details about the fix like location, date, etc.

print(‘=’ * 40) # Print a separator line.

print(‘Fix timestamp: {}/{}/{} {:02}:{:02}:{:02}’.format(

gps.timestamp_utc.tm_mon, # Grab parts of the time from the

gps.timestamp_utc.tm_mday, # struct_time object that holds

gps.timestamp_utc.tm_year, # the fix time. Note you might

gps.timestamp_utc.tm_hour, # not get all data like year, day,

gps.timestamp_utc.tm_min, # month!

gps.timestamp_utc.tm_sec))

print(‘Latitude: {} degrees’.format(gps.latitude))

print(‘Longitude: {} degrees’.format(gps.longitude))

print(‘Fix quality: {}’.format(gps.fix_quality))

# Some attributes beyond latitude, longitude and timestamp are optional

# and might not be present. Check if they‘re None before trying to use!

if gps.satellites is not None:

print(’# satellites: {}‘.format(gps.satellites))

if gps.altitude_m is not None:

print(’Altitude: {} meters‘.format(gps.altitude_m))

if gps.track_angle_deg is not None:

print(’Speed: {} knots‘.format(gps.speed_knots))

if gps.track_angle_deg is not None:

print(’Track angle: {} degrees‘.format(gps.track_angle_deg))

if gps.horizontal_dilution is not None:

print(’Horizontal dilution: {}‘.format(gps.horizontal_dilution))

if gps.height_geoid is not None: if not gps.has_fix:

# Try again if we don’t have a fix yet.

print(‘Waiting for fix.。.’)

continue

# We have a fix! (gps.has_fix is true)

# Print out details about the fix like location, date, etc.

print(‘=’ * 40) # Print a separator line.

print(‘Fix timestamp: {}/{}/{} {:02}:{:02}:{:02}’.format(

gps.timestamp_utc.tm_mon, # Grab parts of the time from the

gps.timestamp_utc.tm_mday, # struct_time object that holds

gps.timestamp_utc.tm_year, # the fix time. Note you might

gps.timestamp_utc.tm_hour, # not get all data like year, day,

gps.timestamp_utc.tm_min, # month!

gps.timestamp_utc.tm_sec))

print(‘Latitude: {} degrees’.format(gps.latitude))

print(‘Longitude: {} degrees’.format(gps.longitude))

print(‘Fix quality: {}’.format(gps.fix_quality))

# Some attributes beyond latitude, longitude and timestamp are optional

# and might not be present. Check if they‘re None before trying to use!

if gps.satellites is not None:

print(’# satellites: {}‘.format(gps.satellites))

if gps.altitude_m is not None:

print(’Altitude: {} meters‘.format(gps.altitude_m))

if gps.track_angle_deg is not None:

print(’Speed: {} knots‘.format(gps.speed_knots))

if gps.track_angle_deg is not None:

print(’Track angle: {} degrees‘.format(gps.track_angle_deg))

if gps.horizontal_dilution is not None:

print(’Horizontal dilution: {}‘.format(gps.horizontal_dilution))

if gps.height_geoid is not None:

注意,在讀取之前,已將某些屬性(如altitude_m)檢查為None。這是插入代碼的明智選擇,因?yàn)橛袝r(shí)GPS模塊不會(huì)發(fā)送這些屬性。如果模塊未發(fā)送屬性,則會(huì)為該屬性提供None/null值,并且在Python中嘗試打印或讀取該屬性將失敗。 latitude,longitude和timestamp的核心屬性通??偸强捎玫模ㄈ绻丛瓨邮褂檬纠?,但是如果您使用以下命令關(guān)閉了這些輸出,則它們可能不可用一個(gè)自定義的NMEA命令!

這是用CircuitPython代碼讀取GPS位置的全部內(nèi)容!

CircuitPython數(shù)據(jù)記錄

數(shù)據(jù)記錄示例

GPS的另一個(gè)便捷任務(wù)是將GPS模塊的所有原始輸出記錄到文件中。如果要將GPS數(shù)據(jù)導(dǎo)入到可以處理原始NMEA句子的工具(如Google Earth)中,這將非常有用。您可以使用CircuitPython非常輕松地執(zhí)行此數(shù)據(jù)記錄。

要存儲(chǔ)數(shù)據(jù),您需要選擇以下兩個(gè)選項(xiàng)之一:

將SD卡固定器連接到主板的SPI總線,或者使用內(nèi)置SD卡座的板,例如Feather M0 Adalogger。推薦的方法,因?yàn)樗鼮槟峁┝撕芏啻鎯?chǔ)數(shù)據(jù)的空間,并且您可以輕松地將數(shù)據(jù)復(fù)制到

將數(shù)據(jù)存儲(chǔ)在電路板的內(nèi)部文件系統(tǒng)中。這需要更多的設(shè)置,但是允許您保存到CircuitPython板的內(nèi)部文件系統(tǒng)上的文件中,緊挨代碼和其他數(shù)據(jù)文件的駐留位置。這是較為有限的,因?yàn)楦鶕?jù)您的主板,您可能只有幾個(gè)千字節(jié)或幾兆字節(jié)的可用空間,并且GPS句子將迅速累加(在記錄幾個(gè)小時(shí)內(nèi)輕松填充幾兆字節(jié))。

安裝SD卡庫

如果要在SD卡上存儲(chǔ)數(shù)據(jù),您必須確保SD卡已連接至開發(fā)板上,并且已安裝Adafruit SD卡庫。幸運(yùn)的是,有完整的指南可供您學(xué)習(xí),以了解連接SD卡和安裝必要的庫的過程。請(qǐng)務(wù)必仔細(xì)按照指南進(jìn)行操作,以使卡已連接并已安裝了磁帶庫,并且可以確認(rèn)能夠從Python提示符下手動(dòng)將數(shù)據(jù)寫入卡。

啟用內(nèi)部文件系統(tǒng)寫入

如果要在內(nèi)部文件系統(tǒng)上存儲(chǔ)數(shù)據(jù),則必須仔細(xì)按照CPU溫度記錄指南中的步驟進(jìn)行操作,以允許寫入內(nèi)部存儲(chǔ)。如果要寫入SD卡,請(qǐng)?zhí)^這些步驟,然后繼續(xù)查看下面的數(shù)據(jù)記錄代碼。 在板上編輯 boot.py (如果不存在則創(chuàng)建它)并添加以下行:

下載:文件

復(fù)制代碼

import digitalio

import board

import storage

switch = digitalio.DigitalInOut(board.D5)

switch.direction = digitalio.Direction.INPUT

switch.pull = digitalio.Pull.UP

# If the D5 is connected to ground with a wire

# you can edit files over the USB drive again.

storage.remount(“/”, not switch.value) import digitalio

import board

import storage

switch = digitalio.DigitalInOut(board.D5)

switch.direction = digitalio.Direction.INPUT

switch.pull = digitalio.Pull.UP

# If the D5 is connected to ground with a wire

# you can edit files over the USB drive again.

storage.remount(“/”, not switch.value)

記住,一旦重新掛載(“/”),您將無法再通過USB驅(qū)動(dòng)器編輯代碼!這意味著您無法編輯 boot.py ,這有點(diǎn)難題。因此,我們將 boot.py 配置為基于開關(guān)或什至只是鱷魚夾接地而選擇性地將內(nèi)部文件系統(tǒng)安裝為可寫狀態(tài)。就像CPU溫度指南顯示的一樣。在此示例中,我們使用 D5 ,但選擇任何可用的引腳。

此代碼將在電路板啟動(dòng)時(shí)以及是否將其接地時(shí)查看D5數(shù)字輸入。鱷魚夾或電線,例如,將其從D5連接到電路板接地),它將禁用內(nèi)部文件系統(tǒng)寫操作,并允許您照常通過USB驅(qū)動(dòng)器編輯代碼。卸下鱷魚夾,重置板,然后 boot.py 會(huì)切換為以可寫方式安裝內(nèi)部文件系統(tǒng),以便您可以再次將映像記錄到該文件系統(tǒng)(但不要編寫任何代碼?。?。

請(qǐng)記住,當(dāng)您啟用USB驅(qū)動(dòng)器寫入(通過在啟動(dòng)時(shí)將D5接地)時(shí),您無法將文件寫入內(nèi)部文件系統(tǒng)以及您的 main.py 中的任何代碼嘗試這樣做(如下面的示例)將失敗。編輯代碼時(shí)請(qǐng)記住這一點(diǎn)-修改代碼后,您需要?jiǎng)h除鱷魚夾,將板重置為重新啟用內(nèi)部文件系統(tǒng)寫操作,然后查看程序的輸出。

如果遇到困難,可以按照https://learn.adafruit.com/cpu-temperature-如果需要返回并編輯代碼,請(qǐng)使用電路日志記錄python/write-to-the-filesystem從REPL中刪除boot.py!

數(shù)據(jù)記錄示例代碼

GPS庫示例具有數(shù)據(jù)記錄。 py 文件,您可以將其編輯并另存為 main.py 在板上:

下載:Project Zip 或 gps_computer_datalogging.py | 在Github上查看

復(fù)制代碼

Temporarily unable to load content:

Temporarily unable to load content:

默認(rèn)情況下,此示例希望將GPS NMEA句子記錄到內(nèi)部存儲(chǔ)系統(tǒng)上的文件中,該文件位于/gps.txt 。每次示例開始運(yùn)行時(shí),新句子都會(huì)添加到文件末尾。

如果您想改為寫入SD卡,請(qǐng)注意不要注釋注釋中提到的相應(yīng)行:

下載:文件

復(fù)制代碼

# Path to the file to log GPS data. By default this will be appended to

# which means new lines are added at the end and all old data is kept.

# Change this path to point at internal storage (like ’/gps.txt‘) or SD

# card mounted storage (’/sd/gps.txt‘) as desired.

#LOG_FILE = ’/gps.txt‘ # Example for writing to internal path /gps.txt

LOG_FILE = ’/sd/gps.txt‘ # Example for writing to SD card path /sd/gps.txt # Path to the file to log GPS data. By default this will be appended to

# which means new lines are added at the end and all old data is kept.

# Change this path to point at internal storage (like ’/gps.txt‘) or SD

# card mounted storage (’/sd/gps.txt‘) as desired.

#LOG_FILE = ’/gps.txt‘ # Example for writing to internal path /gps.txt

LOG_FILE = ’/sd/gps.txt‘ # Example for writing to SD card path /sd/gps.txt

以及下面的內(nèi)容:

都應(yīng)取消注釋,并與上面相同。這將配置代碼以將GPS NMEA數(shù)據(jù)寫入/sd/gps.txt 文件,并將新數(shù)據(jù)追加到文件末尾。

示例運(yùn)行方式為板上的 main.py 打開串行REPL,您應(yīng)該看到原始的NMEA語句已打印出來:

檢查 gps.txt 文件(位于根目錄下或/sd路徑,具體取決于您如何設(shè)置示例)在文本編輯器中,您將看到相同的原始NMEA語句:

太棒了!這就是使用GPS模塊和CircuitPython對(duì)NMEA句子進(jìn)行基本數(shù)據(jù)記錄的全部內(nèi)容!

內(nèi)置日志記錄

MTK3339的優(yōu)點(diǎn)之一是內(nèi)置的數(shù)據(jù)記錄器。這種基本的數(shù)據(jù)記錄功能可以將日期,時(shí)間,緯度,經(jīng)度和高度數(shù)據(jù)存儲(chǔ)到內(nèi)部的64K閃存芯片中。它不是高分辨率記錄器-修復(fù)后僅每15秒記錄一次-但對(duì)于99%的想要跟蹤位置的項(xiàng)目,這可能是一種低功耗的數(shù)據(jù)記錄方式-無需SD卡或其他EEPROM需要!它最多可以存儲(chǔ)16個(gè)小時(shí)的數(shù)據(jù)。

GPS模塊確實(shí)要求微控制器通過請(qǐng)求啟動(dòng)記錄儀來“啟動(dòng)”記錄儀。如果斷電,則需要重新啟動(dòng)。如果閃存中已經(jīng)有一些數(shù)據(jù),則將創(chuàng)建新的跟蹤(這樣就不會(huì)丟失舊數(shù)據(jù)),如果空間用完了,它只會(huì)停止并且不會(huì)覆蓋舊數(shù)據(jù)。盡管有這種煩惱,但它仍然是一個(gè)非常不錯(cuò)的附加功能,我們提供了一些庫支持來幫助您使用它。

有關(guān)更多詳細(xì)信息,請(qǐng)查閱LOCUS(內(nèi)置數(shù)據(jù)記錄系統(tǒng))用戶指南

首先,我們應(yīng)該嘗試運(yùn)行記錄器。打開文件→示例→Adafruit_GPS→locus_start 草圖。這將演示如何啟動(dòng)記錄器(稱為LOCUS)

關(guān)鍵部分在這里:

下載:文件

復(fù)制代碼

Serial.print(“STARTING LOGGING.。..”);

if (GPS.LOCUS_StartLogger())

Serial.println(“ STARTED!”);

else

Serial.println(“ no response :(”);

delay(1000); Serial.print(“STARTING LOGGING.。..”);

if (GPS.LOCUS_StartLogger())

Serial.println(“ STARTED!”);

else

Serial.println(“ no response :(”);

delay(1000);

,您應(yīng)該啟動(dòng)記錄儀,然后檢查響應(yīng):

記錄狀態(tài)

GPS可以記錄日志,您可以加載狀態(tài)草圖,這還將為您提供更多數(shù)據(jù)。上載文件→示例→Adafruit_GPS→locus_status

此輸出為您提供了更多信息。第一個(gè)條目是日志號(hào)。這是內(nèi)存中有多少日志跟蹤。每次啟動(dòng)并保存數(shù)據(jù)時(shí),都會(huì)創(chuàng)建一個(gè)新日志。完全停止意味著記錄器一旦內(nèi)存用完,它將停止。接下來的輸出表明我們僅在修復(fù)數(shù)據(jù)期間并以設(shè)置的間隔進(jìn)行記錄,間隔延遲為15秒。我們不是根據(jù)距離或速度進(jìn)行記錄。當(dāng)前狀態(tài)為LOGGING(活動(dòng)),還有我們存儲(chǔ)的記錄數(shù)。每條記錄都是帶有時(shí)間戳的位置。我們每15秒記錄一次,您可以在此處看到記錄從344增加到345的過程。最后,我們可以看到內(nèi)部閃存的使用量,目前只有4%

在實(shí)際使用中,您可能希望開始記錄,然后讓微控制器進(jìn)入睡眠狀態(tài)保留電源,有時(shí)會(huì)醒來以檢查日志記錄狀態(tài)。

下載數(shù)據(jù)

最后,完成記錄后,我們需要提取數(shù)據(jù)。為此,我們需要首先從閃存中獲取原始數(shù)據(jù),然后對(duì)語句進(jìn)行解碼。將文件→示例→Adafruit_GPS→locus_dump 上傳到Arduino,并打開串行監(jiān)視器

請(qǐng)注意:請(qǐng)具有2K RAM緩沖區(qū)的Arduino處理64KB FLASH數(shù)據(jù)并將其從GPS吐出有時(shí)會(huì)給處理器增加負(fù)擔(dān)。如果遇到打h,請(qǐng)查看下面的GPS工具說明

將所有文本復(fù)制并粘貼到“-”之后(以 $ PMTKLOX,0,86 * 67 開頭 $ PMTK001,622,3 * 36 ),然后將其粘貼到此頁面上的框中

,您可以嘗試使用該工具請(qǐng)捐贈(zèng)給社區(qū)!

GPS工具

如果您在使用Arduino/javascript工具時(shí)遇到困難,也可以嘗試使用GPS工具。該工具僅在Windows下運(yùn)行,但功能非常強(qiáng)大。

將GPS模塊連接到Arduino(與Direct Wiring示例連接),F(xiàn)TDI適配器或其他TTL轉(zhuǎn)換器,然后下載GPS工具-通過COM連接到GPS Arduino/FTDI/TTL電纜的端口。然后,您可以查詢,轉(zhuǎn)儲(chǔ)和刪除日志存儲(chǔ)器

資源

數(shù)據(jù)表

MTK3329/MTK3339命令集表,用于更改固定數(shù)據(jù)速率,波特率,句子輸出等!

PMTK“完整”數(shù)據(jù)表(與上面類似,但具有更多命令)

PA6B(MTK3329)GPS模塊本身的數(shù)據(jù)表

PA6C(MTK3339)GPS模塊本身的數(shù)據(jù)表

PA6H(MTK3339)GPS模塊本身的數(shù)據(jù)表

MT3339 GPS PC工具(僅限Windows)和PC工具手冊(cè)

LOCUS內(nèi)置記錄器的示例代碼和規(guī)格表

LOCUS(內(nèi)置內(nèi)置數(shù)據(jù)記錄系統(tǒng))用戶指南

迷你GPS工具(僅適用于Windows)

更多閱讀:

Trimble的GPS教程

Garmin的GPS教程

用于Arduino的Adafruit GPS庫

https://github.com/adafruit/Adafruit-GPS -Library/

用于AGPS的EPO文件

EPO文件的數(shù)據(jù)格式

MTK_EPO_Nov_12_2014.zip

常見問題解答

終極GPS可以用于高海拔嗎?我怎么知道?

2013年以上出廠的模塊(許多2012年下半年開始安裝)固件已通過40公里GPS工廠的仿真測試。

您可以通過發(fā)送固件查詢命令 $ PMTK605 * 31 來告訴您擁有什么固件(您可以使用echo演示將自定義語句發(fā)送到GPS)

如果您的模塊回復(fù)了 AXN_2.10_3339_2012072601 5223 ,這意味著您具有版本#5223,這是40Km支持的固件版本。如果數(shù)量大于5223,則其數(shù)量甚至更近,并且還應(yīng)包括40Km支持

但是,這些模塊不是專門為高空氣球使用而設(shè)計(jì)的。人們已經(jīng)成功使用了它們,但是由于我們(在Adafruit)尚未對(duì)它們進(jìn)行高空使用的親自測試,因此我們不以任何方式保證它們適合高海拔使用。

請(qǐng)不要要求我們“證明”它們適合高海拔使用,我們沒有任何辦法

如果您想使用GPS測量高海拔,請(qǐng)找到可以保證/保證高空功能的模塊

終極GPS是否受2019周轉(zhuǎn)期問題影響?

終極GPS( 20110922_GTOP_EVK01_A2.10 和更高-在2011年以后出售的任何產(chǎn)品)都經(jīng)過了測試,直到2019年都可以正常工作。

它們沒有通過2038過渡測試,因此您可能需要從現(xiàn)在到2038之間更新固件。這不會(huì)影響他的2019年展期(每20年有一次)

好,我想要最新的固件!

此處是5632固件的二進(jìn)制文件,您可以使用此工具通過FTDI或USB-TTL電纜(或直接接線)上傳FTDI)。我們沒有更新固件的教程,如果您更新固件并以某種方式使GPS變磚,我們將不提供替代產(chǎn)品!在執(zhí)行更新過程之前,請(qǐng)記住這一點(diǎn)!

我修改了示例代碼,但我的GPS NMEA句子都亂碼且不完整!

我們使用SoftwareSerial從GPS讀取數(shù)據(jù),這是對(duì)“ bitbang” UART的支持。它在Arduino上不是很好,并且可以工作,但是添加太多的delay()且未足夠調(diào)用GPS數(shù)據(jù)解析器將導(dǎo)致其阻塞數(shù)據(jù)。

如果您使用的是Leonardo(或Micro/Flora/ATmega32u4)或Mega,請(qǐng)考慮使用HardwareSerial端口而不是SoftwareSerial!

我的GPS正在給我數(shù)據(jù),但位置不正確!

由于GPS是工作正常,但“相距5英里”-這是因?yàn)樗鼈儧]有正確解析經(jīng)緯度數(shù)據(jù)。盡管有外觀,但是地理位置數(shù)據(jù)并非以十進(jìn)制度為單位。格式為度和分鐘,格式如下:緯度:DDMM.MMMM(前兩個(gè)字符為度。)經(jīng)度:DDDMM.MMMM(前三個(gè)字符為度。)

為什么我無法使GPS以10Hz的頻率輸出?

GPS的默認(rèn)波特率為9600-這只能以10Hz的頻率發(fā)送RMC消息。如果要輸出更多數(shù)據(jù),可以提高GPS波特率(例如,達(dá)到57600)或采用2或5Hz的頻率。您希望GPS輸出更多數(shù)據(jù),GPS波特率,Arduino緩沖區(qū)/處理能力和更新率之間存在權(quán)衡!

可能需要進(jìn)行實(shí)驗(yàn)才能獲得最佳結(jié)果。我們建議RMC僅在10Hz進(jìn)行測試,因?yàn)樗呀?jīng)過測試。

為什么不能使用Adafruit RTC庫設(shè)置RTC?

GPS中的實(shí)時(shí)時(shí)鐘不可“寫入”,也無法從Arduino訪問。它僅在GPS中!一旦安裝了電池,并且GPS首次從衛(wèi)星接收數(shù)據(jù),它將設(shè)置內(nèi)部RTC。然后,只要安裝了電池,就可以照常從GPS讀取時(shí)間。即使沒有適當(dāng)?shù)摹?gps修復(fù)”,時(shí)間也將是正確的。

時(shí)區(qū)無法更改,因此您必須基于UTC計(jì)算本地時(shí)間!

所有GPS模塊是否同時(shí)發(fā)出PPS脈沖?

在理想條件下,GPS模塊在每個(gè)GPS秒開始的10ns內(nèi)發(fā)出PPS信號(hào)。

實(shí)際上,每個(gè)GPS模塊與GPS時(shí)鐘系統(tǒng)的同步取決于修復(fù)的質(zhì)量,GPS模塊修復(fù)了多長時(shí)間以及一組該模塊用于修復(fù)的衛(wèi)星。我們已經(jīng)觀察到剛剛獲得修復(fù)的模塊之間的偏移約為300ns,在模塊具有良好的修復(fù)后,偏移減少到不到100ns(模塊用于修復(fù)的衛(wèi)星的信噪比高于20)持續(xù)十分鐘。

當(dāng)兩個(gè)GPS模塊使用同一組衛(wèi)星進(jìn)行定位時(shí),一旦模塊獲得定位,PPS脈沖之間的偏移就小于30ns。

如何讀取Ultimate GPS USB上的PPS信號(hào)?

PPS線連接到串行端口 RI (環(huán)形指示器)引腳。您可以使用串行端口接口代碼來閱讀。例如,這是使用pyserial的Python版本:

import serial

ser = serial.Serial(’/dev/ttyS34‘) # open serial port

print(ser.name) # check which port was really used

last_ri = ser.ri

while True:

if ser.ri != last_ri:

last_ri = ser.ri

if last_ri:

print(“ ---------- Pulse high ----------”)

else:

print(“ ---------- Pulse low ----------”)

if ser.in_waiting:

print(ser.read(ser.in_waiting).decode(’utf-8‘), end=“”)

下載

文件

MTK3329/MTK3339命令集表,用于更改固定數(shù)據(jù)速率,波特率,句子輸出等!

LOCUS(內(nèi)置數(shù)據(jù)記錄系統(tǒng))用戶指南

PA6B(MTK3329)GPS模塊本身的數(shù)據(jù)表-在該模塊的版本1中使用

PA6C(MTK3339)GPS模塊本身的數(shù)據(jù)表-在該模塊的版本2中使用

PA6H(MTK3339)GPS模塊本身的數(shù)據(jù)表-在該模塊的版本3中使用

MT3339 GPS PC工具(僅限Windows)和PC工具手冊(cè)

小型GPS工具(僅限Windows)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對(duì)象

最終GPS v3原理圖

U精確的GPS加工打印

英寸尺寸

最終GPS USB原理圖

最終GPS USB構(gòu)造打印

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gps
    gps
    +關(guān)注

    關(guān)注

    22

    文章

    2986

    瀏覽量

    169331
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    低噪聲放大器前端模塊,帶有 GPS/GNSS/BDS 預(yù)濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低噪聲放大器前端模塊,帶有 GPS/GNSS/BDS 預(yù)濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有低噪聲放大器前端模塊,帶有 GPS/GNSS/BDS 預(yù)濾波器的引腳圖
    發(fā)表于 06-12 18:31
    低噪聲放大器前端<b class='flag-5'>模塊</b>,帶有 <b class='flag-5'>GPS</b>/GNSS/BDS 預(yù)濾波器 skyworksinc

    低噪聲放大器前端模塊,帶有BDS/GPS/GNSS 預(yù)濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低噪聲放大器前端模塊,帶有BDS/GPS/GNSS 預(yù)濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有低噪聲放大器前端模塊,帶有BDS/GPS/GNSS 預(yù)濾波器的引腳圖、接
    發(fā)表于 06-10 18:31
    低噪聲放大器前端<b class='flag-5'>模塊</b>,帶有BDS/<b class='flag-5'>GPS</b>/GNSS 預(yù)濾波器 skyworksinc

    低噪聲放大器前端模塊,帶有 GPS/GNSS 預(yù)濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低噪聲放大器前端模塊,帶有 GPS/GNSS 預(yù)濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有低噪聲放大器前端模塊,帶有 GPS/GNSS 預(yù)濾波器的引腳圖、接線圖、封裝手
    發(fā)表于 06-09 18:33
    低噪聲放大器前端<b class='flag-5'>模塊</b>,帶有 <b class='flag-5'>GPS</b>/GNSS 預(yù)濾波器 skyworksinc

    低噪聲放大器前端模塊,帶有 BDS/GPS/GNSS 預(yù)濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低噪聲放大器前端模塊,帶有 BDS/GPS/GNSS 預(yù)濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有低噪聲放大器前端模塊,帶有 BDS/GPS/GNSS 預(yù)濾波器的引腳圖
    發(fā)表于 06-05 18:34
    低噪聲放大器前端<b class='flag-5'>模塊</b>,帶有 BDS/<b class='flag-5'>GPS</b>/GNSS 預(yù)濾波器 skyworksinc

    GPS/GNSS/BDS 前置濾波器的屏蔽式低噪聲放大器前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()帶 GPS/GNSS/BDS 前置濾波器的屏蔽式低噪聲放大器前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有帶 GPS/GNSS/BDS 前置濾波器的屏蔽式低噪聲放大器前端模塊
    發(fā)表于 05-09 18:34
    帶 <b class='flag-5'>GPS</b>/GNSS/BDS 前置濾波器的屏蔽式低噪聲放大器前端<b class='flag-5'>模塊</b> skyworksinc

    SKY65728-11: 帶 GPS L5 預(yù)濾波器的屏蔽式低噪聲放大器前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()SKY65728-11: 帶 GPS L5 預(yù)濾波器的屏蔽式低噪聲放大器前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有SKY65728-11: 帶 GPS L5 預(yù)濾波器的屏蔽式
    發(fā)表于 05-09 18:32
    SKY65728-11: 帶 <b class='flag-5'>GPS</b> L5 預(yù)濾波器的屏蔽式低噪聲放大器前端<b class='flag-5'>模塊</b> skyworksinc

    GPS北斗定位模塊問題及解決辦法

    GPS北斗定位模塊使用上大多需要配置和設(shè)置下的,因此出現(xiàn)應(yīng)用方面的問題也是可以理解的。以下是常見的問題及其解決辦法: 一、搜不到信號(hào) 問題描述: 在家或個(gè)別位置無法接收到GPS或北斗定位模塊
    的頭像 發(fā)表于 03-30 07:37 ?1083次閱讀

    天馬供折疊屏!傳音TECNO三折概念機(jī)PHANTOM ULTIMATE 2亮相MWC

    3月4日,全球矚目的 MWC(世界移動(dòng)通信大會(huì))在西班牙巴塞羅那盛大開幕,再度成為科技領(lǐng)域的焦點(diǎn)。作為傳音旗下TECNO首款三折疊產(chǎn)品——PHANTOM ULTIMATE 2概念機(jī)震撼亮相。憑借行業(yè)
    發(fā)表于 03-07 09:39

    CW32模塊使用 EC-01G NBIOT+GPS模塊

    。 3.1查看資料 NBIOT模塊使用網(wǎng)絡(luò)是通過物聯(lián)網(wǎng)卡提供流量,物聯(lián)網(wǎng)卡請(qǐng)自行到淘寶購買。 說明 使用GPS定位時(shí),不可在室內(nèi),室內(nèi)很難定位。需要
    的頭像 發(fā)表于 01-23 13:12 ?496次閱讀
    CW32<b class='flag-5'>模塊</b>使用 EC-01G NBIOT+<b class='flag-5'>GPS</b><b class='flag-5'>模塊</b>

    CW32模塊使用 NEO-6M GPS模塊

    NEO—6M/7M GPS模塊,具有高靈敏度、低功耗、小型化、高追蹤靈敏度,大大擴(kuò)大了其定位的覆蓋面,在普通GPS接收模塊不能定位的地方,如狹窄都市天空下、密集的叢林環(huán)境,NEO-6M
    的頭像 發(fā)表于 01-23 13:06 ?866次閱讀
    CW32<b class='flag-5'>模塊</b>使用 NEO-6M <b class='flag-5'>GPS</b><b class='flag-5'>模塊</b>

    6050 Ultimate Channel Strip介紹

    的所有模塊。額外的模塊包括門、擴(kuò)展器、信號(hào)飽和器和專門濾波器。 6050 Ultimate Channel Strip有輸入和輸出階段,圍繞著3個(gè)模塊艙,在其中可以插入超過25個(gè)
    的頭像 發(fā)表于 01-22 10:29 ?458次閱讀
    6050 <b class='flag-5'>Ultimate</b> Channel Strip介紹

    6020 Ultimate EQ說明

    6020 Ultimate EQ是采用流行的模塊格式、借助 McDSP 二十年設(shè)計(jì)經(jīng)驗(yàn)的十種均衡器模型的集合。所有6020 Ultimate EQ模塊均由 McDSP 設(shè)計(jì),汲取了過去
    的頭像 發(fā)表于 01-21 09:49 ?404次閱讀
    6020 <b class='flag-5'>Ultimate</b> EQ說明

    PNT、GNSS與GPS:衛(wèi)星定位導(dǎo)航技術(shù)的清晰區(qū)分

    會(huì)把定位導(dǎo)航終端叫做GNSS模塊,也會(huì)叫做GPS模塊。 但是實(shí)際上他們之間是有一些重要的區(qū)別。伴隨著技術(shù)發(fā)展與越發(fā)深入,我們有必要對(duì)這三個(gè)詞匯做以清晰的區(qū)分。 ? 一、 什么是GPS?
    的頭像 發(fā)表于 01-13 15:42 ?1086次閱讀
    PNT、GNSS與<b class='flag-5'>GPS</b>:衛(wèi)星定位導(dǎo)航技術(shù)的清晰區(qū)分

    芯伯樂產(chǎn)品在GPS定位模塊上的設(shè)計(jì)方案

    模塊方框圖01產(chǎn)品介紹及應(yīng)用ProductIntroductionandApplicationGPS是英文GlobalPositioningSystem(全球定位系統(tǒng))的簡稱。利用GPS定位衛(wèi)星,在
    的頭像 發(fā)表于 10-15 08:07 ?614次閱讀
    芯伯樂產(chǎn)品在<b class='flag-5'>GPS</b>定位<b class='flag-5'>模塊</b>上的設(shè)計(jì)方案

    X1G005441020416晶振昂首挺進(jìn)GPS模塊高端市場

    全球定位系統(tǒng)(GPS模塊在現(xiàn)代通信、導(dǎo)航和定位技術(shù)中扮演著重要角色。高精度和高穩(wěn)定性的晶振是確保GPS模塊性能的關(guān)鍵。EPSON的TG2016SMN X1G00544102041
    發(fā)表于 08-02 16:31 ?0次下載