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