【DFRobot Bluno试用体验】功能篇(4)手机读取DH11温湿度传感器
-
-
gjianw217
- LV4工程师
-
| 2015-11-16 21:26:54
- 浏览量 935
- 回复:0
在DFRobot的官方维基上,有关温湿度传感器的介绍有很多,如下所示,今天在Bluno上测试DHT11这个模块。
一 源码测试
有关DHT11的模块及代码参考资料,在此直接下载官方提供的模板,打开工作文件,配置好DHT11的头文件后,只需要修改一处,即将这的通信引脚改成我们自己配置的引脚即可,如下代码所示:
//
// FILE: dht11_test1.pde
// PURPOSE: DHT11 library test sketch for Arduino
//
#include
dht11 DHT;
//#define DHT11_PIN 4
#define DHT11_PIN 8 //由于测试用的是庆科的3165扩展板模块,故将其修改为8
void setup(){
Serial.begin(9600);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Serial.println("Type,tstatus,tHumidity (%),tTemperature (C)");
}
void loop(){
int chk;
Serial.print("DHT11, t");
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,t");
break;
default:
Serial.print("Unknown error,t");
break;
}
// DISPLAT DATA
Serial.print(DHT.humidity,1);
Serial.print(",t");
Serial.println(DHT.temperature,1);
delay(1000);
}
由上面的代码可知,程序将采集到的温湿度值,连续不断的发送到串口。而在Bluno开发板上,串口又与蓝牙模块的串口相连,即该蓝牙模块又将串口中的温湿度值透传到手机上,实验效果如下图所示。
二 二次封装
官方提供的源码,只作了对DHT11的简单封装,即只完成了对DHT11的采集任务,而多数情况下,我们需要在第三方平台上进行功能的封装和转换,故需要在此基础上,进行代码的重构。本次代码的重构,主要实现通过手机来控制是否读取DHT11的温湿度值,即在原来的DHT11类中,增加一显示函数,如下代码所示,
void dht11::show(String &cmd)
{
if(cmd!=\'5\')return;
int chk;
Serial.print("DHT11, t");
chk = read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,t");
break;
default:
Serial.print("Unknown error,t");
break;
}
// DISPLAT DATA
Serial.print(humidity,1);
Serial.print(",t");
Serial.println(temperature,1);
}
即当串口发送命令5后,Bluno开始采集DHT11的上数据,并将采集到的数据反馈给手机。最后的效果如下所示:
【DFRobot Bluno试用体验】试用报告汇总
在DFRobot的官方维基上,有关温湿度传感器的介绍有很多,如下所示,今天在Bluno上测试DHT11这个模块。
一 源码测试
有关DHT11的模块及代码参考资料,在此直接下载官方提供的模板,打开工作文件,配置好DHT11的头文件后,只需要修改一处,即将这的通信引脚改成我们自己配置的引脚即可,如下代码所示:
//
// FILE: dht11_test1.pde
// PURPOSE: DHT11 library test sketch for Arduino
//
#include
dht11 DHT;
//#define DHT11_PIN 4
#define DHT11_PIN 8 //由于测试用的是庆科的3165扩展板模块,故将其修改为8
void setup(){
Serial.begin(9600);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Serial.println("Type,tstatus,tHumidity (%),tTemperature (C)");
}
void loop(){
int chk;
Serial.print("DHT11, t");
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,t");
break;
default:
Serial.print("Unknown error,t");
break;
}
// DISPLAT DATA
Serial.print(DHT.humidity,1);
Serial.print(",t");
Serial.println(DHT.temperature,1);
delay(1000);
}
由上面的代码可知,程序将采集到的温湿度值,连续不断的发送到串口。而在Bluno开发板上,串口又与蓝牙模块的串口相连,即该蓝牙模块又将串口中的温湿度值透传到手机上,实验效果如下图所示。
二 二次封装
官方提供的源码,只作了对DHT11的简单封装,即只完成了对DHT11的采集任务,而多数情况下,我们需要在第三方平台上进行功能的封装和转换,故需要在此基础上,进行代码的重构。本次代码的重构,主要实现通过手机来控制是否读取DHT11的温湿度值,即在原来的DHT11类中,增加一显示函数,如下代码所示,
void dht11::show(String &cmd)
{
if(cmd!=\'5\')return;
int chk;
Serial.print("DHT11, t");
chk = read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,t");
break;
default:
Serial.print("Unknown error,t");
break;
}
// DISPLAT DATA
Serial.print(humidity,1);
Serial.print(",t");
Serial.println(temperature,1);
}
即当串口发送命令5后,Bluno开始采集DHT11的上数据,并将采集到的数据反馈给手机。最后的效果如下所示:
【DFRobot Bluno试用体验】试用报告汇总