基于物聯(lián)網(wǎng)的智能路燈使用NodeMCU ESP8266和ThingSpeak
掃描二維碼
隨時(shí)隨地手機(jī)看文章
大多數(shù)地方都有自動(dòng)路燈,可以感知白天和黑夜,并根據(jù)晝夜自動(dòng)打開和關(guān)閉。在這里,我們擴(kuò)展了這個(gè)項(xiàng)目,增加了一個(gè)額外的限制來(lái)打開燈,路燈只會(huì)在黑暗中發(fā)光,有人穿過(guò)街道。該項(xiàng)目的主要目標(biāo)是通過(guò)只在需要時(shí)發(fā)光路燈來(lái)減少電力消耗。在這個(gè)項(xiàng)目中,我們展示了智能路燈的原型,它有3個(gè)紅外傳感器,1個(gè)LDR傳感器和3個(gè)led,每個(gè)led代表一個(gè)路燈。我們還將更新LDR傳感器數(shù)據(jù)到ThingSpeak,并從世界任何地方通過(guò)互聯(lián)網(wǎng)控制led(路燈)。
組件的要求
?USB數(shù)據(jù)線
?發(fā)光二極管
?跳線
?紅外傳感器
?LDR傳感器
在繼續(xù)之前,讓我們了解一下項(xiàng)目中使用的組件。
ESP8266 NodeMCU
ESP8266 NodeMCU是一個(gè)開源的物聯(lián)網(wǎng)平臺(tái)。它包括運(yùn)行在expressif Systems低成本支持Wi-Fi的ESP8266 Wi-Fi SoC上的固件,以及基于ESP-12模塊的硬件。它具有GPIO, SPI, I2C, ADC, PWM和UART引腳,用于通信和控制附加到它的其他外設(shè)。板載NodeMCU具有提供USB到TTL功能的CP2102 IC。
紅外傳感器
紅外傳感器是一種通過(guò)感應(yīng)物體反射的紅外輻射來(lái)探測(cè)物體的電子設(shè)備。它主要由一個(gè)發(fā)射紅外LED和一個(gè)接收光電二極管組成。它可以探測(cè)波長(zhǎng)從700nm到1mm的紅外輻射。當(dāng)一個(gè)特定的正電壓施加在發(fā)射LED上時(shí),它就會(huì)發(fā)射紅外線。如果這些光線落在某個(gè)物體上,那么該物體就會(huì)將接收到的紅外線反射回去。接收器二極管在其兩端產(chǎn)生電壓,該電壓取決于物體反射的光的強(qiáng)度。通常紅外接收LED較暗(黑色),而發(fā)射器是透明的顏色。
LDR傳感器
LDR代表光相關(guān)電阻,也稱為光電阻。LDR對(duì)光很敏感,它的電阻隨光照強(qiáng)度的變化而變化。它由高阻半導(dǎo)體組成,在黑暗中電阻增大,在光明中電阻減小。當(dāng)入射到LDR上的光超過(guò)某個(gè)閾值時(shí),它會(huì)吸收光子,并允許電子躍入傳導(dǎo)帶。LDR產(chǎn)生可變電阻,這取決于落在它上面的光的強(qiáng)度。主要應(yīng)用于路燈、鬧鐘、自動(dòng)亮度、對(duì)比度控制等電路中。
Thingspeak
ThingSpeak是一個(gè)基于云的數(shù)據(jù)平臺(tái),使用HTTP協(xié)議實(shí)時(shí)發(fā)送和接收數(shù)據(jù)。它用于物聯(lián)網(wǎng)應(yīng)用,通過(guò)互聯(lián)網(wǎng)存儲(chǔ)和監(jiān)控來(lái)自世界任何地方的數(shù)據(jù)。以下是一些將ThingSpeak用作物聯(lián)網(wǎng)云的物聯(lián)網(wǎng)項(xiàng)目:
?物聯(lián)網(wǎng)無(wú)線氣象站使用Arduino, ESP8266和ThingSpeak
?基于物聯(lián)網(wǎng)的溫濕度監(jiān)測(cè),使用Arduino UNO和ESP8266
?基于物聯(lián)網(wǎng)的樹莓派氣象站,使用DHT11和BMP180傳感器
?基于物聯(lián)網(wǎng)的溫濕度監(jiān)測(cè)使用ThingSpeak和ESP8266
智能路燈電路圖及工作原理
基于物聯(lián)網(wǎng)的智能路燈電路圖如下:
該電路主要由ESP8266、LDR傳感器、IR傳感器和led組成。
在這里,LDR傳感器用于檢測(cè)是白天還是夜間。由于LDR傳感器根據(jù)落在其上的光量產(chǎn)生可變電阻,因此它必須像電位器一樣連接。LDR傳感器一端接5V,另一端接固定電阻,固定電阻再接地。NodeMCU有一個(gè)ADC引腳(A0),連接到固定電阻和LDR傳感器一端之間的點(diǎn),如圖所示。由于LDR傳感器提供可變電阻,因此根據(jù)落在LDR上的光量,將在A0處產(chǎn)生可變電壓。
紅外傳感器用于檢測(cè)是否有人在過(guò)馬路。它能探測(cè)到周圍的障礙物或運(yùn)動(dòng)。發(fā)射機(jī)將發(fā)射紅外線,如果它落在一些物體上,如人、動(dòng)物、車輛等,將被反射回來(lái)。反射的光線將被接收二極管接收,因此將確認(rèn)物體的存在,相應(yīng)的LED將發(fā)光。這種方法可以節(jié)省大量的電力,因?yàn)槁窡糁挥性诮稚嫌腥说臅r(shí)候才會(huì)亮。紅外傳感器有3個(gè)引腳,其中兩個(gè)是VCC和接地,一個(gè)是輸出引腳。如果檢測(cè)到某些物體的存在,紅外傳感器的輸出會(huì)變高。該引腳連接到NodeMCU的GPIO引腳,因此每當(dāng)紅外傳感器檢測(cè)到有人穿過(guò)街道時(shí),它就會(huì)觸發(fā)路燈。在我們的例子中,一個(gè)LED將被打開。
在Arduino IDE中安裝ThingSpeak庫(kù)
打開Arduino IDE并轉(zhuǎn)到Sketch ->包括庫(kù)->管理庫(kù)。
現(xiàn)在在庫(kù)管理器中搜索ThingSpeak并安裝MathWorks的ThingSpeak庫(kù)。
在ThingSpeak上上傳智能路燈數(shù)據(jù)
現(xiàn)在我們將把LDR傳感器、IR傳感器和led數(shù)據(jù)上傳到ThingSpeak上。如果你還沒有賬號(hào),就登錄注冊(cè)吧
現(xiàn)在點(diǎn)擊新建通道,然后給你的通道命名,然后填寫如下所示的字段。字段1用于LDR傳感器數(shù)據(jù),字段2至字段4用于紅外傳感器,字段5至字段7用于led。填寫詳細(xì)信息后,向下滾動(dòng)并單擊“保存通道”。
您的通道將被創(chuàng)建,現(xiàn)在您將能夠看到字段圖表。現(xiàn)在單擊API Keys并復(fù)制通道id,讀取和寫入API Keys并將它們粘貼到教程末尾給出的Arduino代碼中。現(xiàn)在將Arduino代碼上傳到NodeMCU。成功上傳后,通過(guò)將物體放在紅外傳感器前測(cè)試您的項(xiàng)目。您將能夠在ThingSpeak圖表中看到LDR, ir傳感器和led值的每一次變化。
使用ThingSpeak從任何地方控制路燈
現(xiàn)在我們必須通過(guò)互聯(lián)網(wǎng)使用ThingSpeak來(lái)控制led。點(diǎn)擊“分享”并選擇“與所有人分享頻道視圖”單選按鈕。
現(xiàn)在轉(zhuǎn)到API密鑰并復(fù)制“更新頻道提要”中給出的URL。我們必須編輯這個(gè)URL來(lái)改變LED的狀態(tài)。
我們的led字段是5,6和7?,F(xiàn)在編輯Url。
這里我們將字段5,字段6和字段7設(shè)置為1以打開led。復(fù)制此URL并將其粘貼到新選項(xiàng)卡中。它會(huì)在一些延遲時(shí)間內(nèi)打開led。你可以在場(chǎng)圖中觀察到變化。
代碼的解釋
在本教程的末尾給出了完整的代碼和演示視頻。代碼可以通過(guò)Arduino IDE在NodeMCU中上傳。這里我們將解釋代碼的幾個(gè)重要部分。
首先包括所有必需的庫(kù)。
將代碼中給出的SSID和密碼替換為Wi-Fi SSID和密碼。
如上所示,復(fù)制通道號(hào),從ThingSpeak讀取和寫入API密鑰。
定義變量的GPIO引腳的led和紅外傳感器,ADC通道
設(shè)置NodeMCU上led和IR傳感器引腳的pinMode。
初始化Wi-Fi和ThingSpeak
現(xiàn)在我們將紅外傳感器的數(shù)字值和LDR傳感器的模擬值存儲(chǔ)在變量中。
現(xiàn)在檢查L(zhǎng)DR傳感器的低光值。這里我設(shè)置值為700意味著如果LDR的模擬值低于700,那么它將是夜間或低光,因此如果紅外傳感器檢測(cè)到一些障礙物或運(yùn)動(dòng),它將打開led。如果LDR傳感器的模擬值超過(guò)700,則認(rèn)為是白天,即使紅外傳感器檢測(cè)到有人經(jīng)過(guò)街道,led也不會(huì)發(fā)光。
最后,使用函數(shù)ThingSpeak. writefield()將數(shù)據(jù)上傳到ThingSpeak云端。它需要通道號(hào),字段號(hào),數(shù)據(jù)(您想要在各自的字段中上傳)和編寫API密鑰。在這里,我們將LDR傳感器數(shù)據(jù)、IR傳感器數(shù)據(jù)和led數(shù)據(jù)上傳到ThingSpeak云。
下面是使用ThingSpeak改變led狀態(tài)的代碼。我們已經(jīng)在上面展示了改變led狀態(tài)的過(guò)程。Led_1, led_2, led_3使用ThingSpeak函數(shù)存儲(chǔ)來(lái)自ThingSpeak的led的最后狀態(tài)。readIntField,它接受通道號(hào),各自的字段號(hào)和讀API鍵。如果一些led的狀態(tài)為“1”,那么我們打開相應(yīng)的led,如果一些led的狀態(tài)為“0”,我們關(guān)閉相應(yīng)的led。
這就是智能路燈的工作原理,只有在夜間有人經(jīng)過(guò)街道時(shí),它才會(huì)發(fā)光。它也可以在世界任何地方使用ThingSpeak物聯(lián)網(wǎng)云進(jìn)行手動(dòng)控制。
本文編譯自iotdesignpro