序:近期研究ESP8266 NodeMCU的使用,面對lua語言比較陌生,基本是對照官網(wǎng)在線文檔一步一步學(xué)習(xí)。 官網(wǎng)文檔基于模塊化獨立說明莫换,融合的例子較少(至少沒看到)。因此骤铃,記錄過程拉岁,一是加深印象,二是備查惰爬。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 快樂凍魚? 2018.10.17 中國.桂林
一喊暖、硬件連接
ESP-12N模塊板一塊, AOSONG AM2302傳感器一只撕瞧,用杜邦線按照圖1所示的方式連接陵叽。引腳信號關(guān)系見表1。
二丛版、代碼編寫
NodeMCU平臺: Lua 5.1.4 on SDK 2.2.1(6ab97e9)
開發(fā)軟件:ESPlorer v0.2.0-rc5
程序其實比較簡單巩掺,利用tmr模塊和dht提供的api就可以快速實現(xiàn)應(yīng)用代碼。
思路是:開一個自動模式的定時器页畦,在定時器回調(diào)函數(shù)里去讀取傳感器數(shù)據(jù)锌半,并打印出來。
完整代碼見圖2寇漫,運行結(jié)果見圖3。
關(guān)鍵函數(shù):
? ? ? ? 此函數(shù)封裝了tmr.register( )和tmr.start( )殉摔,使用比較簡單州胳,參數(shù)分別是:定時器時間(ms),定時器模式(tmr.ALARM_SINGLE, tmr.ALARM_SEMI, tmr.ALARM_AUTO逸月,分別對應(yīng)一次定時栓撞,半自動定時和自動重裝定時),定時器回調(diào)函數(shù)。
? ? ? ? 前兩個參數(shù)比較好理解瓤湘。后一個參數(shù)必須是function()? 代碼塊? end瓢颅。在代碼塊里調(diào)用寫好的函數(shù)就可以。
dht_routine()是自定義的函數(shù)弛说,其參數(shù)pin是與DHT22 DIO引腳連接的ESP8266的GPIO序號挽懦,默認是GPIO5。?
在dht_routine里調(diào)用了dht.read()函數(shù)木人。dht.read()函數(shù)返回status(狀態(tài)碼)信柿,temp(浮點的溫度讀數(shù)),temp_dec(溫度的小數(shù)部分)醒第,humi(浮點的濕度讀數(shù))渔嚷,humi_dec(濕度的小數(shù)部分)。
? ? ? ? ? 其實ESP8266從DHT22讀到的是40位數(shù)據(jù)稠曼,只不過dht.read( )函數(shù)里進行了處理形病。 這就是使用api的好處,這令我開始愛上nodeMCU霞幅,哈哈漠吻。
我是有底線的。