基于物聯(lián)網(wǎng)的車輛跟蹤系統(tǒng),使用NodeMCU和Arduino IDE
掃描二維碼
隨時隨地手機看文章
如今,安全是我們最關(guān)心的問題,無論是與我們的資產(chǎn),如車輛,房屋還是我們的孩子有關(guān)。在這種情況下,GPS跟蹤設(shè)備是非常有用的。它們可以很容易地用于跟蹤車輛或資產(chǎn)的實時位置,以防發(fā)生任何緊急情況,如盜竊、事故等。他們也可以和孩子們在一起,追蹤他們的位置。
在這里,我們正在建造同樣的GPS跟蹤設(shè)備,從任何地方監(jiān)控車輛的實時位置。在這里,ThingSpeak物聯(lián)網(wǎng)云將用于存儲車輛經(jīng)過的位置歷史。我們之前使用NodeMCU ESP8266與GPS接口,并在網(wǎng)頁上顯示位置坐標。在這個物聯(lián)網(wǎng)車輛跟蹤系統(tǒng)中,我們還將在網(wǎng)頁上顯示一個鏈接,該鏈接將帶用戶到顯示車輛位置的谷歌地圖。
組件的要求
?ESP8266 NodeMCU - 1
?NE06M GPS接收機- 1
?16*2 LCD - 1
?16*2 LCD I2C模塊- 1
?電路試驗板
?連接器
?電力供應(yīng)
NEO6M GPS模塊
NEO-6M GPS模塊是一種流行的GPS接收器,內(nèi)置陶瓷天線,提供強大的衛(wèi)星搜索能力。該接收器能夠通過跟蹤多達22顆衛(wèi)星來感知位置,并確定世界上任何地方的位置。通過板載信號指示燈,可以監(jiān)控模塊的網(wǎng)絡(luò)狀態(tài)。它有一個數(shù)據(jù)備份電池,當主電源意外關(guān)閉時,模塊可以保存數(shù)據(jù)。
GPS接收器模塊內(nèi)部的核心是u-blox的NEO-6M GPS芯片。它可以在50個頻道上跟蹤多達22顆衛(wèi)星,并且具有非常令人印象深刻的靈敏度水平-161 dBm。這款50通道u- blox6定位引擎擁有不到1秒的首次定位時間(TTFF)。支持波特率4800 ~ 230400bps,默認波特率為9600。
特點:
?工作電壓:(2.7 ~ 3.6)V DC
?工作電流:67ma
?波特率:4800-230400 bps(默認9600)
?通訊協(xié)議:NEMA
?接口:UART
?外部天線和內(nèi)置EEPROM。
GPS模塊輸出:
VCC:模塊輸入電壓引腳
GND:接地引腳
RX、TX:與單片機的UART通信引腳
車輛跟蹤系統(tǒng)電路圖
以下是基于物聯(lián)網(wǎng)的車輛監(jiān)控系統(tǒng)的電路圖:
為物聯(lián)網(wǎng)車輛跟蹤系統(tǒng)設(shè)置ThingSpeak帳戶
根據(jù)上述電路圖成功完成硬件后,現(xiàn)在是時候建立物聯(lián)網(wǎng)平臺了,其中存儲了GPS坐標。在這里,我們使用ThingSpeak將緯度和經(jīng)度數(shù)據(jù)存儲在云上,并以圖形方式可視化GPS數(shù)據(jù)。
ThingSpeak是一個非常流行的基于物聯(lián)網(wǎng)的云平臺,我們以前使用ThingSpeak構(gòu)建了許多基于物聯(lián)網(wǎng)的項目。下面是設(shè)置ThingSpeak云的步驟。
第一步:注冊ThingSpeak
首先,如果你以前沒有Mathworks帳戶,請登錄并創(chuàng)建一個新的免費Mathworks帳戶。
第二步:登錄ThingSpeak
用你的憑證登錄ThingSpeak,然后點擊“新頻道”。現(xiàn)在填寫項目的詳細信息,如名稱、字段名稱等。這里我們必須創(chuàng)建兩個字段名,如Latitude和Longitude。然后點擊“保存頻道”。
步驟3:記錄憑據(jù)
選擇已創(chuàng)建的通道并記錄以下憑據(jù)。
通道ID,它在通道視圖的頂部。
編寫一個API密鑰,可以在通道視圖的API Keys選項卡上找到。
車輛跟蹤系統(tǒng)的NodeMCU編程
成功完成硬件連接和ThingSpeak設(shè)置后,現(xiàn)在是時候?qū)SP8266 NodeMCU進行編程了。下面給出了完整代碼的逐步解釋。
要使用Arduino IDE將代碼上傳到NodeMCU,請遵循以下步驟:
1. 打開Arduino IDE,然后進入File - >Preferences - >Settings。
2. 在“附加板管理器URL”字段中鍵入,然后單擊“確定”。
3. 現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。在“單板管理器”窗口中,在搜索框中輸入ESP8266,選擇最新版本的單板,單擊“安裝”。
4. 安裝完成后,進入“Tools ->Board ->”,選擇“NodeMCU 1.0(ESP-12E Module)”?,F(xiàn)在您可以使用Arduino IDE對NodeMCU進行編程。
在Arduino IDE中設(shè)置好NodeMCU后,將代碼上傳到NodeMCU中。完整的代碼在本教程的末尾給出;這里我們一步一步地解釋代碼。
通過在代碼中包含所有所需的庫文件來啟動代碼,例如ESP8266WiFi.h用于ESP8266板,LiquidCrystal_I2C.h用于LCD, Wire.h用于I2C通信等。
在這里,增加了ThingSpeak.h庫來使用ThingSpeak平臺與NodeMCU和TinyGPS++.h庫用于使用GPS接收器模塊獲取GPS坐標。這個庫可以從這里下載。
對于16x2字母數(shù)字LCD使用I2C模塊,請使用LiquidCrystal_I2C類進行配置。這里我們必須傳遞地址、行號和列號,在我們的示例中分別是0x27、16和2。
現(xiàn)在,聲明網(wǎng)絡(luò)憑據(jù)——即SSID和密碼。需要將NodeMCU連接到互聯(lián)網(wǎng)。
現(xiàn)在,聲明GPS模塊的連接引腳,它是默認波特率,在我們的例子中是9600。
接下來,聲明ThingSpeak帳戶憑據(jù),如通道號和之前記錄的寫入API。
然后聲明TinyGPSPlus和wiificlient類的對象。為了使用WiFiServer屬性,服務(wù)器對象被定義為端口號80。
在setup()中,聲明所有輸入引腳和輸出引腳。然后在LCD上打印歡迎信息,該信息將在項目初始化期間顯示。
要將NodeMCU連接到互聯(lián)網(wǎng),請調(diào)用WiFi。開始并傳遞網(wǎng)絡(luò)SSID和密碼作為參數(shù)。使用WiFi.status()檢查網(wǎng)絡(luò)連接是否成功,連接成功后,在LCD上打印帶有IP地址的消息。
然后使用保存的憑證連接到ThingSpeak平臺。為這個事情說話。使用Begin。
在loop()中,encode()用于確保接收到有效的GPS語句。當encode()返回“true”時,一個有效的句子剛剛改變了TinyGPS對象的內(nèi)部狀態(tài)。當encode()返回true時,調(diào)用兩個函數(shù)displaydata()和display網(wǎng)頁()。
在displaydata()函數(shù)中,isValid()方法用于確保有效的緯度和經(jīng)度接收,并將它們存儲在各自的變量中。然后將這些數(shù)據(jù)發(fā)送到ThingSpeak,使用setField()方法設(shè)置字段,并使用writeFields()方法將這些數(shù)據(jù)發(fā)送到云。
在display網(wǎng)頁()中,編寫HTML代碼,并使用client.print()以字符串格式發(fā)送到客戶端。此HTML代碼包含一個超鏈接,單擊該鏈接將帶您到指向履帶式車輛位置的谷歌地圖。
基于物聯(lián)網(wǎng)的車輛監(jiān)控系統(tǒng)測試
連接硬件并上傳代碼后,只需接通電路,您將在LCD上看到一些通知消息。現(xiàn)在打開web瀏覽器,輸入NodeMCU的IP地址。將有一個鏈接,將帶你到谷歌地圖與車輛的當前位置顯示在上面的圖片。Wi-Fi連接成功后,LCD上會顯示NodeMCU的IP地址。下面給出的視頻演示了完整的工作。
同時,ThingSpeak還將記錄車輛的經(jīng)度和緯度,并將其顯示在下圖中:
本文編譯自iotdesignpro