如何將GPS數(shù)據(jù)發(fā)送到手機(jī)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
電子學(xué)的主要應(yīng)用之一是它在地理定位方面的應(yīng)用。在本教程中,我們將了解如何通過(guò)互聯(lián)網(wǎng)將GPS數(shù)據(jù)發(fā)送到手機(jī)或其他設(shè)備。
關(guān)于NEO-6m
NEO-6M GPS模塊是一種受歡迎的GPS接收器,用于電子和DIY項(xiàng)目,因?yàn)樗膬r(jià)格實(shí)惠。要了解更多信息,請(qǐng)查看我不久前寫(xiě)的這篇文章。
硬件
NEO-6m接線(xiàn)如下:
注意:在某些版本的ESP32中,GPIO 16和GPIO 17被標(biāo)記為RXD2和TXD2。記住,Neo-6m上的TX會(huì)轉(zhuǎn)到ESP32上的RXD2。
您也可以使用I2C接口連接OLED顯示器
最后,將Neo-6m使用在開(kāi)闊的區(qū)域,可以看到天空(靠近窗戶(hù),陽(yáng)臺(tái),戶(hù)外等),以獲得最佳連接。
Arduino物聯(lián)網(wǎng)云設(shè)置
ESP32模塊非常通用,可以通過(guò)WiFi連接到各種不同的平臺(tái)來(lái)發(fā)送和接收數(shù)據(jù)。在本教程中,我們將使用Arduino的物聯(lián)網(wǎng)云平臺(tái)(這是完全免費(fèi)使用)與ESP32。有關(guān)Arduino IoT Cloud的更詳細(xì)概述,請(qǐng)查看此文檔。
什么是“東西”?
Arduino物聯(lián)網(wǎng)云中的事物代表一個(gè)物理設(shè)備(如Arduino板)以及您想要通過(guò)互聯(lián)網(wǎng)監(jiān)控或控制的變量和屬性。
你需要什么
?一個(gè)免費(fèi)的Arduino云帳戶(hù)
?兼容板(如Arduino Uno R4 WiFi、MKR1000、Nano 33 IoT、ESP32或ESP8266)
?安裝在計(jì)算機(jī)上的Arduino Create Agent(上傳代碼)
?互聯(lián)網(wǎng)連接和USB連接線(xiàn)
在A(yíng)rduino物聯(lián)網(wǎng)云上創(chuàng)建事物的步驟
1. 登錄Arduino物聯(lián)網(wǎng)云
?轉(zhuǎn)到cloud.arduino.cc,用你的Arduino帳戶(hù)登錄。如果你沒(méi)有,你可以免費(fèi)注冊(cè)。
2. 點(diǎn)擊“創(chuàng)建內(nèi)容”
?登錄后:
?轉(zhuǎn)到物聯(lián)網(wǎng)云選項(xiàng)卡。
?點(diǎn)擊儀表板上的“Create Thing”按鈕。
?這將生成一個(gè)可以稍后重命名的新Thing。
3. 連接設(shè)備
?在“設(shè)備”部分下:
?點(diǎn)擊“選擇設(shè)備”
?選擇“設(shè)置新設(shè)備”
?選擇ESP32
?保存設(shè)備ID和密鑰
?按照提示通過(guò)USB連接您的板
注意:如果您使用的是第三方板,Arduino Cloud會(huì)要求您安裝特殊代理并選擇板和端口。
4. 添加變量
變量是物聯(lián)網(wǎng)邏輯的核心。它們表示Thing發(fā)送或接收的數(shù)據(jù)。
?點(diǎn)擊“添加變量”,然后:
?為變量命名(例如temperature)
?選擇一個(gè)類(lèi)型(例如float, bool, int, String)
?設(shè)置其權(quán)限:只讀(例如傳感器值)或讀寫(xiě)(例如LED狀態(tài))
決定是根據(jù)變化進(jìn)行更新還是定期更新
注意:在物聯(lián)網(wǎng)云的免費(fèi)版本中,您只能向一個(gè)事物添加5個(gè)變量。
這個(gè)項(xiàng)目的變量
注意:選擇CloudLocation來(lái)存儲(chǔ)這個(gè)項(xiàng)目的經(jīng)緯度數(shù)據(jù)。
5. 配置網(wǎng)絡(luò)憑據(jù)
?選擇你的東西,進(jìn)入“設(shè)置選項(xiàng)卡”
?輸入您的SSID, WiFi密碼和密鑰(從設(shè)備)
?這些憑證在安裝過(guò)程中被安全地上傳到電路板上。
注意:SSID是大小寫(xiě)敏感的,所以鍵入它完全是。
6. 編寫(xiě)和編輯草圖
?Arduino Cloud會(huì)自動(dòng)為你的東西生成草圖。您可以:
?打開(kāi)“Sketch”選項(xiàng)卡
?直接在瀏覽器中編輯代碼(Web Editor)。
?您可以從這里直接上傳代碼。
7. 帶有儀表板的監(jiān)視器
?轉(zhuǎn)到“儀表板”選項(xiàng)卡。
?添加小部件(如開(kāi)關(guān)、圖形、地圖、儀表等)。
?將它們連接到您的東西中的云變量(按照提示操作)。
8. 向手機(jī)發(fā)送數(shù)據(jù)
?下載Arduino IoT Cloud Remote(支持iOS和Android)
?使用您的Arduino IoT Cloud帳戶(hù)登錄。
?選擇您的儀表盤(pán)&您準(zhǔn)備好了!
代碼
讓我們一段一段地看看代碼是怎么做的:
庫(kù)和初始化
?TinyGPS++:從GPS模塊中解析NMEA句子。
?U8g2lib:控制OLED顯示。
?h:保存你的Arduino IoT云變量和設(shè)備配置。
注:所有庫(kù)均預(yù)裝在物聯(lián)網(wǎng)云平臺(tái)上。
這將通過(guò)I2C初始化SH1106 OLED(通常是經(jīng)典0.96 OLED顯示器的最佳選擇)。
?在ESP32上設(shè)置UART2,使用GPIO16和GPIO17進(jìn)行GPS通信。
設(shè)置()函數(shù)
?啟動(dòng)與GPS和OLED的通信。
?在OLED上顯示啟動(dòng)信息。
?初始化物聯(lián)網(wǎng)云變量并連接到網(wǎng)絡(luò)。
循環(huán)()函數(shù)
?保持ESP32與云儀表板的連接和同步。
讀取GPS數(shù)據(jù)
?讀取新的GPS數(shù)據(jù)并更新有效的內(nèi)部變量。
重新連接處理
?如果2秒后GPS沒(méi)有收到數(shù)據(jù),設(shè)備就會(huì)通過(guò)OLED屏幕提醒用戶(hù)。
OLED顯示器- printAll()
這個(gè)函數(shù)做兩件事:
?更新云變量,如位置、高度和速度。
?在OLED顯示屏上顯示如下:
注意:顯示僅在有新數(shù)據(jù)可用時(shí)更新,避免閃爍或帶寬使用。
本文編譯自hackster.io