物聯(lián)網(wǎng)鬧鐘使用基于NodeMCU的專屬門戶
掃描二維碼
隨時(shí)隨地手機(jī)看文章
鬧鐘已經(jīng)使用了幾十年,但自從手機(jī)進(jìn)入市場后,人們更喜歡在手機(jī)上設(shè)置鬧鐘。這個(gè)鬧鐘項(xiàng)目一直很受電子愛好者的歡迎。今天,我們還使用NodeMCU構(gòu)建物聯(lián)網(wǎng)鬧鐘,您可以在沒有任何互聯(lián)網(wǎng)連接的情況下使用網(wǎng)頁設(shè)置鬧鐘時(shí)間。
這可以使用俘虜門戶來完成。強(qiáng)制門戶是向新連接Wi-Fi網(wǎng)絡(luò)的用戶顯示的網(wǎng)頁。我們可以使用NodeMCU創(chuàng)建一個(gè)強(qiáng)制門戶。NodeMCU有一個(gè)內(nèi)置的ESP8266 Wi-Fi屏蔽,這個(gè)Wi-Fi屏蔽可以用作Wi-Fi接入點(diǎn)(AP),并提供免費(fèi)的Wi-Fi網(wǎng)絡(luò),但它沒有互聯(lián)網(wǎng)接入。當(dāng)你連接到這個(gè)WiFI時(shí)它會(huì)重定向到你的鬧鐘網(wǎng)頁。
在這個(gè)基于NodeMCU的物聯(lián)網(wǎng)鬧鐘項(xiàng)目中,使用了四個(gè)主要組件- DS3231 RTC模塊,NodeMCU ESP8266, 16x2 LCD模塊和LCD I2C模塊。這里,NodeMCU用于從DS3231 RTC讀取時(shí)間,并將其顯示在16x2 LCD顯示屏上。蜂鳴器用于告警指示,當(dāng)告警激活時(shí)蜂鳴器發(fā)出蜂鳴聲。
組件的要求
?NodeMCU ESP8266
?DS3231 RTC模塊
?16×2液晶
?LCD I2C模塊
?蜂鳴器
物聯(lián)網(wǎng)鬧鐘電路圖
物聯(lián)網(wǎng)鬧鐘的完整電路圖如下所示。這很簡單,因?yàn)槲覀冎恍枰獙⒁粋€(gè)RTC模塊和一個(gè)LCD與我們的ESP NodeMCU板連接起來。
DS3231 RTC模塊和LCD I2C模塊的Vcc和GND引腳與NodeMCU的Vin和GND引腳相連。而DS3231和I2C模塊的SCL和SDA引腳分別與NodeMCU的D1和D2引腳相連。蜂鳴器連接在NodeMCU的D8引腳上,用于告警。
DS3231 RTC模塊
DS3231 RTC (Real Time Clock)模塊,顧名思義,是一個(gè)時(shí)鐘模塊。DS3231是一個(gè)六腳模塊,使用I2C接口。該模塊有電池連接,使模塊在沒有外部電源的情況下運(yùn)行,以跟蹤時(shí)間和日期。
RTC模塊提供秒、分、小時(shí)、日、月、年等數(shù)據(jù)。DS3231工作在24小時(shí)和12小時(shí)格式。它有兩個(gè)鬧鐘和溫度傳感器。在六個(gè)引腳中,該模塊的兩個(gè)引腳不是強(qiáng)制使用的。要使用此模塊,您需要做的就是將模塊的SDA和SCL引腳連接到控制器的SDA和SCL引腳。
代碼的解釋
這個(gè)物聯(lián)網(wǎng)鬧鐘的完整代碼在頁面底部,代碼也可以從這里下載。為了更好地理解,我在這里解釋代碼。
此代碼需要DNSServer.h, RtcDS3231.h, Wire.h和LiquidCrystal_I2C.h庫。你可從下列連結(jié)下載這些資料庫:
?RtcDS3231.h
?Wire.h
?LiquidCrystal_I2C.h
下載這些庫后,將它們添加到Arduino IDE中,并將所有庫包含在代碼中。
我們還需要為網(wǎng)頁界面設(shè)計(jì)一個(gè)HTML頁面。這里所有的HTML代碼都是在一個(gè)名為“style_details”的字符串中分配的。這部分代碼用于設(shè)置頁面的背景顏色、按鈕樣式、文本樣式等。
‘ home_screen ’字符串用于顯示網(wǎng)頁標(biāo)題和輸入鬧鐘時(shí)間的選項(xiàng)。當(dāng)提交報(bào)警時(shí)間時(shí),它會(huì)將用戶重定向到下一個(gè)屏幕,即confirmation_screen。
在void setup()中,我們將以05:45的格式從用戶獲取報(bào)警數(shù)據(jù),其中05為小時(shí),45為分鐘。此數(shù)據(jù)將保存在名為‘ new_time ’的字符串中。獲得數(shù)據(jù)后,我們必須將其分成小時(shí)和分鐘的形式,以便與當(dāng)前時(shí)間進(jìn)行比較。為了分割數(shù)據(jù),我們使用了‘ mystring ’。substring(from, to) ‘函數(shù),其中’ mystring '是一個(gè)String類型的變量,包含要分割的字符串。將字符串拆分為分鐘和小時(shí)字符串之后,現(xiàn)在是時(shí)候?qū)⒆址D(zhuǎn)換為整數(shù)了。對(duì)于“mystring. toint()”函數(shù),其中‘ mystring ’是您想要轉(zhuǎn)換為整數(shù)的字符串。
在void alarm()循環(huán)中,我們將從RTC模塊獲取時(shí)間數(shù)據(jù)并將其打印在LCD上。然后,將當(dāng)前時(shí)間與警報(bào)時(shí)間進(jìn)行比較,如果當(dāng)前時(shí)間與警報(bào)時(shí)間匹配,則啟動(dòng)蜂鳴器。
編程N(yùn)odeMCU
現(xiàn)在是時(shí)候?qū)⒋a上傳到NodeMCU,將NodeMCU與筆記本電腦連接并正確選擇板和端口,然后單擊upload按鈕。如果您不知道如何使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。您可以遵循我們之前的教程。
上傳代碼后,點(diǎn)擊筆記本電腦wifi圖標(biāo),連接“ESP8266 DNS Server”。
當(dāng)它連接到WiFi后,會(huì)打開一個(gè)網(wǎng)頁,或者你可以通過搜索“alarmclock.com”手動(dòng)打開網(wǎng)頁?,F(xiàn)在您可以通過網(wǎng)頁輸入鬧鐘時(shí)間,并點(diǎn)擊提交按鈕。
進(jìn)入鬧鐘后,它會(huì)帶你到下一個(gè)屏幕,你的鬧鐘時(shí)間將被打印在LCD顯示屏上?,F(xiàn)在,當(dāng)當(dāng)前時(shí)間與輸入的報(bào)警時(shí)間匹配時(shí),蜂鳴器將開始鳴叫一分鐘。
這就是不使用Wi-Fi路由器就可以輕松制作物聯(lián)網(wǎng)鬧鐘的方法。
本文編譯自iotdesignpro