基于NodeMCU ESP8266的物聯(lián)網(wǎng)智能停車(chē)系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
如今,在繁忙的地區(qū)找到停車(chē)位非常困難,而且沒(méi)有系統(tǒng)可以在線獲取可用停車(chē)位的詳細(xì)信息。想象一下,如果你可以在手機(jī)上獲得停車(chē)位的可用信息,而你不需要到處漫游來(lái)檢查可用性。這個(gè)問(wèn)題可以通過(guò)基于物聯(lián)網(wǎng)的智能停車(chē)系統(tǒng)來(lái)解決。使用基于物聯(lián)網(wǎng)的停車(chē)系統(tǒng),您可以通過(guò)互聯(lián)網(wǎng)輕松訪問(wèn)可用的停車(chē)位。該系統(tǒng)可以完全實(shí)現(xiàn)汽車(chē)停車(chē)系統(tǒng)的自動(dòng)化。從您的進(jìn)入到付款和退出都可以自動(dòng)完成。
因此,我們正在構(gòu)建一個(gè)基于物聯(lián)網(wǎng)的停車(chē)系統(tǒng),使用NodeMCU,五個(gè)紅外傳感器和兩個(gè)伺服電機(jī)。入口和出口入口處使用兩個(gè)紅外傳感器來(lái)檢測(cè)車(chē)輛,而三個(gè)紅外傳感器用于檢測(cè)停車(chē)位的可用性。伺服電機(jī)根據(jù)傳感器的值來(lái)開(kāi)啟和關(guān)閉閘門(mén)。在這里,我們使用Adafruit IO平臺(tái)來(lái)顯示發(fā)布在云上的數(shù)據(jù),可以從世界任何地方監(jiān)控。
組件的要求
硬件
?NodeMCU ESP8266
?紅外傳感器(5)
?伺服電機(jī)(2)
在線服務(wù)
?Adafruit IO
線路圖
下面給出了這個(gè)基于物聯(lián)網(wǎng)的智能停車(chē)系統(tǒng)項(xiàng)目的電路圖。
在這個(gè)使用物聯(lián)網(wǎng)的智能停車(chē)系統(tǒng)中,我們使用了五個(gè)紅外傳感器和兩個(gè)伺服電機(jī)。紅外傳感器和伺服電機(jī)連接到NodeMCU。NodeMCU控制整個(gè)過(guò)程,并將停車(chē)可用性和停車(chē)時(shí)間信息發(fā)送給Adafruit IO,以便使用該平臺(tái)從世界任何地方對(duì)其進(jìn)行監(jiān)控。進(jìn)出門(mén)處采用兩個(gè)紅外傳感器,可以檢測(cè)進(jìn)出門(mén)處的車(chē)輛,自動(dòng)開(kāi)啟和關(guān)閉大門(mén)。我們以前在許多物聯(lián)網(wǎng)項(xiàng)目中使用Adafruit IO云,點(diǎn)擊鏈接了解更多信息。
使用兩臺(tái)伺服電機(jī)作為進(jìn)出門(mén),因此每當(dāng)紅外傳感器檢測(cè)到汽車(chē)時(shí),伺服電機(jī)自動(dòng)從45°旋轉(zhuǎn)到140°,并在延遲后返回到初始位置。另外三個(gè)紅外傳感器用于檢測(cè)停車(chē)位是否可用或被占用,并將數(shù)據(jù)發(fā)送給NodeMCU。Adafruit IO儀表板也有兩個(gè)按鈕手動(dòng)操作入口和出口門(mén)。
以下是使用物聯(lián)網(wǎng)的智能停車(chē)系統(tǒng)的完整設(shè)置:
Adafruit IO設(shè)置物聯(lián)網(wǎng)停車(chē)系統(tǒng)
Adafruit IO是一個(gè)開(kāi)放的數(shù)據(jù)平臺(tái),允許您在云中聚合、可視化和分析實(shí)時(shí)數(shù)據(jù)。使用Adafruit IO,您可以在互聯(lián)網(wǎng)上上傳,顯示和監(jiān)控?cái)?shù)據(jù),并使您的項(xiàng)目啟用物聯(lián)網(wǎng)。您可以使用Adafruit IO控制電機(jī),讀取傳感器數(shù)據(jù),并通過(guò)互聯(lián)網(wǎng)制作酷的物聯(lián)網(wǎng)應(yīng)用程序。為了測(cè)試和嘗試,有一些限制,Adafruit IO是免費(fèi)使用的。我們以前也在樹(shù)莓派上使用過(guò)Adafruit IO。
1. 要使用Adafruit IO,首先,您必須在Adafruit IO上創(chuàng)建一個(gè)帳戶(hù)。要做到這一點(diǎn),請(qǐng)?jiān)L問(wèn)Adafruit IO網(wǎng)站,點(diǎn)擊屏幕右上方的“免費(fèi)開(kāi)始”。
2. 在完成帳戶(hù)創(chuàng)建過(guò)程后,登錄您的帳戶(hù)并單擊右上角的“AIO密鑰”以獲取您的帳戶(hù)用戶(hù)名和AIO密鑰。
當(dāng)你點(diǎn)擊“AIO密鑰”,一個(gè)窗口將彈出你的Adafruit IO AIO密鑰和用戶(hù)名。復(fù)制此密鑰和用戶(hù)名,稍后將在代碼中用到。
3. 現(xiàn)在,在此之后,您需要?jiǎng)?chuàng)建一個(gè)提要。要?jiǎng)?chuàng)建提要,請(qǐng)單擊“feed”。然后點(diǎn)擊“Actions”,然后點(diǎn)擊“Create a New Feed”,如下圖所示。
4. 在此之后,將打開(kāi)一個(gè)新窗口來(lái)輸入提要的名稱(chēng)和描述。書(shū)寫(xiě)描述是可選的。
5. 點(diǎn)擊“創(chuàng)建”,然后;您將被重定向到新創(chuàng)建的提要。
在這個(gè)項(xiàng)目中,我們?yōu)槌隹陂T(mén)、入口門(mén)、槽1入口和出口、槽2入口和出口以及槽3入口和出口創(chuàng)建了總共9個(gè)饋源。
創(chuàng)建提要之后,現(xiàn)在創(chuàng)建Adafruit IO儀表板,以便在單個(gè)頁(yè)面上顯示所有這些提要。要?jiǎng)?chuàng)建儀表板,請(qǐng)單擊dashboard選項(xiàng),然后單擊“Action”,然后單擊“create a New dashboard”。
在下一個(gè)窗口中,輸入儀表板的名稱(chēng)并單擊“Create”。
6. 隨著儀表板的創(chuàng)建,我們將向儀表板添加提要。要添加提要,請(qǐng)單擊右上角的“+”。
首先,我們將為進(jìn)出門(mén)添加兩個(gè)RESET按鈕塊,然后為停車(chē)細(xì)節(jié)添加七個(gè)TEXT塊。
要在儀表板上添加按鈕,請(qǐng)單擊RESET塊。
在下一個(gè)窗口中,它將要求您選擇提要,因此單擊入口門(mén)提要。
在最后一步,給你的塊一個(gè)標(biāo)題,并相應(yīng)地自定義它。將按下值從“1”更改為“ON”。因此,無(wú)論何時(shí)按下按鈕,它都會(huì)將“ON”字符串發(fā)送給NodeMCU,而NodeMCU將執(zhí)行進(jìn)一步的任務(wù)。如果你不想改變這里的按值,你可以改變程序中的條件。
在此之后,按照相同的步驟為出口門(mén)創(chuàng)建另一個(gè)塊。
要?jiǎng)?chuàng)建其余的塊,請(qǐng)遵循相同的過(guò)程,但不是創(chuàng)建RESET塊,而是創(chuàng)建TEXT塊,以便可以顯示停車(chē)詳細(xì)信息。
創(chuàng)建完所有的塊之后,我的儀表板如下所示。您可以通過(guò)單擊設(shè)置按鈕來(lái)編輯儀表板
物聯(lián)網(wǎng)停車(chē)系統(tǒng)的NodeMCU編程
要用Arduino IDE編程N(yùn)odeMCU,請(qǐng)進(jìn)入File - > preferences - >Settings。
在“附加板管理器URL”字段中輸入,然后單擊“確定”。
現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。
在板管理器窗口中,在搜索框中輸入esp, esp8266將在下面列出?,F(xiàn)在選擇最新版本的電路板并單擊install。
安裝完成后,進(jìn)入“工具>單板> NodeMCU 1.0(ESP-12E模塊)”?,F(xiàn)在您可以使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。
在這里我們一步一步地解釋程序,以便您可以輕松理解此代碼的工作。
首先,包括所有必需的庫(kù)。ESP8266 Wi-Fi和Servo.h庫(kù)已經(jīng)安裝在IDE中。您可以從以下鏈接下載NTP客戶(hù)端和Adafruit MQTT庫(kù):
NTPClient.h
Adafruit_MQTT.h
然后包括從Adafruit IO服務(wù)器復(fù)制的Wi-Fi和Adafruit IO憑據(jù)。這些將包括MQTT服務(wù)器、端口號(hào)、用戶(hù)名和AIO密鑰
設(shè)置你要發(fā)布內(nèi)容的提要。這里的農(nóng)業(yè)數(shù)據(jù)是飼料名稱(chēng)。
將進(jìn)、出口伺服電機(jī)連接到NodeMCU的D4、D5引腳上,選擇紅外傳感器的輸出引腳作為INPUT。
在void循環(huán)中,timeClient.update()函數(shù)用于在我們向NTP服務(wù)器請(qǐng)求時(shí)更新日期和時(shí)間。獲取數(shù)據(jù)后,我們將小時(shí)、分鐘和秒存儲(chǔ)為三個(gè)不同的整數(shù)。
數(shù)字讀取入口和出口紅外傳感器引腳,并檢查這些引腳是否高。如果引腳高,然后移動(dòng)伺服電機(jī)打開(kāi)入口和出口門(mén)。然后增加入口門(mén)的計(jì)數(shù),減少出口門(mén)的計(jì)數(shù),并將數(shù)據(jù)發(fā)布到Adafruit IO儀表板。
檢查1號(hào)槽位紅外傳感器。如果它是‘ 1 ’并且布爾函數(shù)為false,則從NTP服務(wù)器獲取條目時(shí)間并將其保存在EntryTimeSlot1變量中。將變量數(shù)據(jù)發(fā)布到Adafruit IO feed。
如果紅外傳感器引腳變?yōu)榱悴⑶也紶柡瘮?shù)為真,則將退出時(shí)間發(fā)布到Adafruit IO饋送。
對(duì)slot2和slo3傳感器執(zhí)行類(lèi)似的步驟。
在這里,我們直接檢查訂閱提要中的特定單詞,如果該單詞與我們指定的單詞匹配,即“ON”,它將旋轉(zhuǎn)伺服電機(jī)打開(kāi)門(mén)。
對(duì)出口門(mén)執(zhí)行類(lèi)似的步驟。
這就是如何在Adafruit IO儀表板上發(fā)布停車(chē)細(xì)節(jié)。它將顯示每個(gè)插槽的進(jìn)入時(shí)間和退出時(shí)間。這個(gè)儀表板也有兩個(gè)按鈕手動(dòng)打開(kāi)入口和出口大門(mén)。
這就是使用物聯(lián)網(wǎng)構(gòu)建智能停車(chē)系統(tǒng)的方法。你可以添加更多的傳感器來(lái)增加停車(chē)位,也可以添加一個(gè)支付系統(tǒng)來(lái)自動(dòng)支付停車(chē)費(fèi)。
本文編譯自iotdesignpro