序:近期研究ESP8266 NodeMCU的使用,面对lua语言比较陌生,基本是对照官网在线文档一步一步学习。 官网文档基于模块化独立说明,融合的例子较少(至少没看到)。因此,记录过程,一是加深印象,二是备查。
快乐冻鱼 2018.10.17 中国.桂林
一、硬件连接
ESP-12N模块板一块, AOSONG AM2302传感器一只,用杜邦线按照图1所示的方式连接。引脚信号关系见表1。
二、代码编写
NodeMCU平台: Lua 5.1.4 on SDK 2.2.1(6ab97e9)
开发软件:ESPlorer v0.2.0-rc5
程序其实比较简单,利用tmr模块和dht提供的api就可以快速实现应用代码。
思路是:开一个自动模式的定时器,在定时器回调函数里去读取传感器数据,并打印出来。
完整代码见图2,运行结果见图3。
关键函数:
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,哈哈。
我是有底线的。