NodeMCU学习笔记(一):基于tmr模块定时读取dht22(AM2302)采集的温湿度数据

:近期研究ESP8266 NodeMCU的使用,面对lua语言比较陌生,基本是对照官网在线文档一步一步学习。 官网文档基于模块化独立说明,融合的例子较少(至少没看到)。因此,记录过程,一是加深印象,二是备查。

                                                                                                                                                                  快乐冻鱼  2018.10.17 中国.桂林

一、硬件连接

ESP-12N模块板一块, AOSONG AM2302传感器一只,用杜邦线按照图1所示的方式连接。引脚信号关系见表1。


图1 ESP8266与AM2302连接关系


表1 引脚信号连接关系

二、代码编写

NodeMCU平台: Lua 5.1.4 on SDK 2.2.1(6ab97e9)

开发软件:ESPlorer v0.2.0-rc5

程序其实比较简单,利用tmr模块和dht提供的api就可以快速实现应用代码。

思路是:开一个自动模式的定时器,在定时器回调函数里去读取传感器数据,并打印出来。

完整代码见图2,运行结果见图3。


图2 tmr定时读取DHT22温湿度代码(60秒采样一次)

关键函数:

tmr.alarm()

        此函数封装了tmr.register( )和tmr.start( ),使用比较简单,参数分别是:定时器时间(ms),定时器模式(tmr.ALARM_SINGLE, tmr.ALARM_SEMI, tmr.ALARM_AUTO,分别对应一次定时,半自动定时和自动重装定时),定时器回调函数。

        前两个参数比较好理解。后一个参数必须是function()  代码块  end。在代码块里调用写好的函数就可以。

dht_routine()是自定义的函数,其参数pin是与DHT22 DIO引脚连接的ESP8266的GPIO序号,默认是GPIO5。 

在dht_routine里调用了dht.read()函数。dht.read()函数返回status(状态码),temp(浮点的温度读数),temp_dec(温度的小数部分),humi(浮点的湿度读数),humi_dec(湿度的小数部分)。

          其实ESP8266从DHT22读到的是40位数据,只不过dht.read( )函数里进行了处理。 这就是使用api的好处,这令我开始爱上nodeMCU,哈哈。


图3 tmr定时读取DHT22温湿度调试结果




我是有底线的。

你可能感兴趣的:(NodeMCU学习笔记(一):基于tmr模块定时读取dht22(AM2302)采集的温湿度数据)