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温湿度调试结果




我是有底线的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 跟丘丘谈起以后生活的想法,我说:在二三线城市有自己的房子,有爱自己的丈夫,然后有活泼可爱的孩子,能够生活下...
    如水2016阅读 1,747评论 0 0
  • 核心在于对 layer 的处理 //设置开始和结束位置(设置渐变的方向) CAGradientLayer *gra...
    民谣里不是故事就是诗丶阅读 11,488评论 0 0

友情链接更多精彩内容