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