【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开发板上,串口又与蓝牙模块的串口相连,即该蓝牙模块又将串口中的温湿度值透传到手机上,实验效果如下图所示。

【DFRobot Bluno试用体验】功能篇(4)手机读取DH11温湿度传感器

二 二次封装

    官方提供的源码,只作了对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试用体验】功能篇(4)手机读取DH11温湿度传感器


【DFRobot Bluno试用体验】试用报告汇总

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子