基于物聯(lián)網(wǎng)的自動(dòng)車(chē)輛事故和魯莽駕駛警報(bào)系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一個(gè)使用NodeMCU的明確和全面的車(chē)輛事故和魯莽駕駛識(shí)別和警報(bào)系統(tǒng)。與互聯(lián)網(wǎng)上的其他項(xiàng)目不同,它有一個(gè)功能齊全的獨(dú)立電路。它結(jié)合了Invensense的MPU6050, Ublox Neo-6M GPS模塊和NodeMCU的功能,達(dá)到了很好的效果。MPU6050是加速度計(jì)和陀螺儀的結(jié)合,兩個(gè)模塊在數(shù)據(jù)傳輸上互相幫助,克服了各自的缺點(diǎn)。加速度計(jì)記錄跨3個(gè)軸的加速度,而陀螺儀記錄跨軸的轉(zhuǎn)速。GPS模塊以NMEA格式對(duì)數(shù)據(jù)進(jìn)行編碼,可用于確定事故發(fā)生的確切位置。除此之外,郵件還通過(guò)嵌入google鏈接的API調(diào)用發(fā)送到注冊(cè)郵件id。一項(xiàng)名為IFTTT的服務(wù)將不同的服務(wù)連接起來(lái),幫助我們發(fā)送郵件。電子郵件傳遞信息,并將事故的位置發(fā)送給用戶(hù)。如果您想實(shí)時(shí)跟蹤車(chē)輛的位置,還可以查看基于物聯(lián)網(wǎng)的車(chē)輛跟蹤項(xiàng)目。
所需的材料
?NodeMCU
?MPU6050
?Ublox-Neo 6M GPS模塊
?16*2液晶顯示
?面包板
?跳線
MPU6050
MPU-6050設(shè)備同時(shí)使用加速度計(jì)和陀螺儀值跨3軸使用它的數(shù)字運(yùn)動(dòng)處理器電路。它具有寄存器,可以配置±250,±500,±1000和±2000°/秒(dps)的陀螺儀刻度,并且還提供了±2g,±4g,±8g和±16g的加速度計(jì)刻度。選擇組件的范圍選擇它的精度。它還包括一個(gè)內(nèi)置的溫度傳感器。
當(dāng)檢測(cè)到傳感器位置的變化時(shí),傳感器內(nèi)部的機(jī)械系統(tǒng)產(chǎn)生電壓,隨后連接到16位ADC并傳輸?shù)紽IFO緩沖區(qū)。數(shù)據(jù)是緩沖器通過(guò)I2C通信協(xié)議傳送給單片機(jī)的。
Neo 6M GPS模塊
NEO-6M模塊的封裝尺寸為16 x 12.2 x 2.4 mm。它有6個(gè)Ublox定位引擎,提供無(wú)與倫比的性能。它是一款性能良好的GPS接收機(jī),結(jié)構(gòu)緊湊,功耗低,內(nèi)存選項(xiàng)可靠。考慮到它的結(jié)構(gòu)和電力需求,它是電池供電的移動(dòng)設(shè)備的理想選擇。首次定位的時(shí)間不到1秒,這使得它幾乎可以立即找到衛(wèi)星。輸出是NMEA標(biāo)準(zhǔn)的格式,可以解碼以找到位置的坐標(biāo)和時(shí)間。
?電源:2.8V ~ 5V
?接口:RS232 TTL
?內(nèi)置EEPROM和外部天線
?默認(rèn)波特率為9600bps
NodeMCU
NodeMCU被配置為在Arduino IDE上作為開(kāi)源固件平臺(tái)工作。也有開(kāi)源的原型板設(shè)計(jì)可用。固件使用Lua編寫(xiě)腳本。它既可以作為獨(dú)立的微控制器,也可以作為物聯(lián)網(wǎng)生態(tài)系統(tǒng)中的節(jié)點(diǎn)。這里使用的模塊是一個(gè)基于ESP-12的NodeMCU模塊。
電子郵件警報(bào)和IFTTT
IFTTT是一個(gè)免費(fèi)的基于web的服務(wù),允許用戶(hù)用簡(jiǎn)單的條件語(yǔ)句創(chuàng)建小程序。它通常允許用戶(hù)使用if語(yǔ)句創(chuàng)建applet(如果發(fā)生這種情況,則執(zhí)行操作)。該事件通常由API調(diào)用觸發(fā)。API調(diào)用包含API密鑰、主機(jī)名、端口、事件名稱(chēng)和要傳遞的值。對(duì)于這個(gè)項(xiàng)目,用戶(hù)需要?jiǎng)?chuàng)建一個(gè)applet,該applet可以向車(chē)輛的所有者發(fā)送帶有其GPS位置的郵件。我們以前在樹(shù)莓派以及許多其他家庭自動(dòng)化和物聯(lián)網(wǎng)監(jiān)控項(xiàng)目中使用過(guò)IFTTT。
要?jiǎng)?chuàng)建applet,請(qǐng)遵循以下步驟:
步驟1:通過(guò)啟動(dòng)webhook創(chuàng)建applet。
轉(zhuǎn)到右上角的文檔,復(fù)制頂部的密鑰。
步驟2:通過(guò)點(diǎn)擊“+”圖標(biāo)并選擇webhooks創(chuàng)建一個(gè)applet,然后選擇“receive a web request”并給出事件名稱(chēng)。
然后點(diǎn)擊“+”符號(hào)并選擇郵件,點(diǎn)擊接收webmail。
步驟3:要在URL中包含谷歌map鏈接,請(qǐng)轉(zhuǎn)到這里附帶的鏈接,并復(fù)制下面附圖中突出顯示的鏈接。
然后將鏈接粘貼到消息正文中,并將兩個(gè)浮點(diǎn)數(shù)替換為‘ value1 ’和‘ value2 ’。然后創(chuàng)建applet。
電路圖及連接
車(chē)輛事故監(jiān)測(cè)系統(tǒng)的完整電路圖如下:
按照上面的電路連接每個(gè)模塊。
MPU6050和NodeMCU:主控板與MPU6050通過(guò)I2C通信。D1和D2引腳分別與SCL和SDA多路復(fù)用。MPU6050使用3.3V和來(lái)自NodeMCU的接地引腳供電。
Neo-6M GPS模塊和NodeMCU: GPS模塊采用異步串行通信。NodeMCU的Tx連接到模塊的Rx引腳,Rx引腳連接到模塊的Tx引腳。GPS模塊使用3.3V和NodeMCU的接地引腳供電。
16x2 LCD連接:Vdd和Vss連接到5V DC適配器。Vo從電位器(10Kohm)輸出(中心引腳)連接。鍋的另外兩個(gè)端子分別接5V和接地。其余引腳的連接方法如下表所示。在連接到陽(yáng)極之前,連接一個(gè)220歐姆的電阻來(lái)限制電流消耗。
液晶針
物聯(lián)網(wǎng)車(chē)輛事故監(jiān)測(cè)-代碼解釋
注意:在將代碼轉(zhuǎn)儲(chǔ)到nodeMCU之前,斷開(kāi)SCL、SDA、TX和RX引腳。
由于I2C使用恒定的從屬地址,因此需要使用特定地址對(duì)從屬地址進(jìn)行尋址。串行時(shí)鐘(SCL)和串行數(shù)據(jù)引腳也連接到NodeMCU的D1和D2引腳,應(yīng)該明確提到。將變量AccelScaleFactor的值設(shè)置為16384,以便將值縮放為+-2g加速度。這些值經(jīng)過(guò)校準(zhǔn)以達(dá)到三個(gè)軸上的零值。
得到的值除以比例因子得到+-1以?xún)?nèi)的值。三個(gè)軸的前一個(gè)值和當(dāng)前值的差值在變量dx, dy和dz中得到。當(dāng)這些值超過(guò)閾值時(shí),將調(diào)用location和mail函數(shù)。
一旦該值在初始規(guī)定的時(shí)間內(nèi)超過(guò)閾值,設(shè)備就會(huì)使用SSID和密碼連接到可用的WiFi網(wǎng)絡(luò)。
GPS模塊通過(guò)包含TinyGPS++庫(kù)進(jìn)行接口。函數(shù)GPS .location.lat()和GPS .location.lng()包含在庫(kù)中,并被調(diào)用以獲取浮點(diǎn)數(shù)形式的GPS坐標(biāo)值。
要使用IFTTT發(fā)送電子郵件,在開(kāi)始時(shí)定義主機(jī)、事件名稱(chēng)和API密鑰等參數(shù)。
板通過(guò)HTTP連接到主機(jī),然后生成API調(diào)用的URL,包含API調(diào)用的類(lèi)型、事件名稱(chēng)、API密鑰和要發(fā)送的坐標(biāo)等參數(shù)。
車(chē)輛意外警報(bào)系統(tǒng)的運(yùn)作
當(dāng)有一個(gè)低干擾(正常駕駛條件),有一個(gè)指示在液晶顯示“正常駕駛”,也值跨越三個(gè)階段。
低值顯示意味著最佳的駕駛條件和駕駛員是安全的。當(dāng)人工模擬干擾持續(xù)15-20秒時(shí),會(huì)有一個(gè)顯示顯示“高干擾”和發(fā)送郵件的指示。
本文編譯自iotdesignpro