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