【Espruino】NO.14 温湿度传感器DHT11

来源:互联网 发布:Linux改变所有文件权限 编辑:程序博客网 时间:2024/04/30 19:02

http://blog.csdn.net/qwert1213131/article/details/35828873

本文属于个人理解,能力有限,纰漏在所难免,还望指正!

【小鱼有点电】

【Espruino中文社区】

 

第10节演示过一个DS18B20温度传感器,这节引入可以同时检测温度和湿度的传感器DHT11,可检测温度范围0~50℃(精度为+/-1℃),湿度20~90%(精度为 +/- 4%)。DHT11有时不能识别触发脉冲,或偶尔不能读取正确的数据,因此使用校验和机制来验证所以接收到的数据。若连续20次无法得到响应或者校验失败,则返回{“temp”:-1,"rh":-1}。因此建议对返回的数据进行再次检查。

通讯方式跟DS18B20一致,采用单线模式,供电范围为3-5.5V,本板采用3.3V供电,通讯线连接到引脚C9,建议在通讯线长短于20米时使用5K上拉电阻,大于20米时请根据实际情况选用合适的上拉电阻。

对于DHT11已经有现成的模块文件可以直接调用,操作如下:

var dht = require("DHT11").connect(C11);dht.read(function (a) {console.log("Temp:"+a.temp.toString()+" RH:"+a.rh.toString());});

在espruino web IDE右边区域输入以上代码执行后,在左侧会显示温湿度,当然也可以使用setInterval函数来周期获得温湿度。

我们还可以综合LCD那节的内容,将数值显示在LCD上,代码如下,视频地址:

SPI1.setup({ sck:B3, mosi:B5, order: "lsb", baud: 2000000 });var g = require("MemoryLCD").connect(SPI1, B4/*SCS*/, C12/*EXTCOMIN*/,128/*width*/, 128/*height*/); g.clear();//清除缓冲区var dht = require("DHT11").connect(C9);temp="";rh="";setInterval(function(){  dht.read(function (a) {temp=a.temp;rh=a.rh;console.log(temp+""+rh);});  if(temp!==-1){    LED1.set(1);    g.setFontVector(30);    g.fillRect(0, 0, 128-1, 60-1);    g.setColor(0,0,0);    g.drawString("DHT11",4,12);    g.setFontVector(16);    g.setColor(1,1,1);    g.drawString("Temp: "+temp, 30, 70);    g.drawString("RH: "+rh, 30, 100);    g.flip();    g.clear();  }  else{    LED1.reset();  }},1000);save();


0 0
原创粉丝点击