27
2019
04

Arduino开源智能家居02《温湿传感器》什么样温湿度才适居

DIY这前先科普一下:最宜人的室内温湿度是:
1、冬天温度为18至25℃,湿度为30%至80%;
2、夏天温度为23至28℃,湿度为30%至60%,在此范围内感到舒适的人占95%以上。
3、在装有空调的室内,室温为19至24℃,湿度为40%至50%时,人会感到最舒适。如果考虑到温、湿度对人思维活动的影响,最适宜的室温度应是工作效率高。18℃,湿度应是40%至60%,此时人的精神状态好,思维最敏捷。

OK,今天就来教大家DIY《温湿传感器》,时时了解你家中的温湿度,看看是否合适居住吧!

看看我们需要的配件

1、zigbee开发板 30元
2、zigbee模块 45元
3、zigbee扩展板 15元
4、DHT11温湿传感器 8元




第一步:组合开发板和扩展板,连接等
一、DHT11温湿度接线

扩展板仿着面包板做的,记得DHT11的第2脚针要连P0.6。


连好后的效果,加入一个LED是为了方便查看是否正常(闪亮说明正常)。

二、插入到开发板上



注意:拿个东西隔离zigbee模块,如果压到上面的脚针可能会短路。


第二部份:为ZIGBEE模块刷代码。

一、插上SMARTRF04EB下载器(如果IAR 8.10不认的话,请看是否插正确/用笔戳RESET键)。





RESET重启键。


二、源代码解说

ZIGBEE模块源代码点这里下载:
http://pan.baidu.com/s/1nMd6Q

主要三个文件:SerialApp.c、DHT11.H、DHT11.C。(如果对源码结构不懂,请看这篇文章《Zigbee自组网
SerialApp.c是实现层,只要我们在这里调用相关的功能就可以。
DHT11.H、DHT11.C就是获取温湿度的类啦(通过小修改还可以用在其它单片机上哦)!

1、将DHT11.H、DHT11.C导入项目(这步源代码已经存在,可以不用操作)

然后直接“选择”再确定,就可以添加进来了!

2、在SerialApp.c引用DHT11.h。

添加:#include "DHT11.h"

3、设置获取温湿度间隔
#define INTERVAL  10000 //1000=1秒,获取温湿度间隔,建议大于10秒以上(采集越小耗能就越多)

4、在SerialApp_ProcessEvent启用:
osal_start_timerEx( SerialApp_TaskID, SERIALAPP_SAMPLE_EVT, INTERVAL);  //定时采样数据(这里就是启动)

5、采集代码部份


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
if ( events & SERIALAPP_SAMPLE_EVT )
  {
     
    uint8 *sendBuf="SERIALAPP_SAMPLE_EVT\n"
    HalUARTWrite(SERIAL_APP_PORT,sendBuf,osal_strlen(sendBuf));
     
    osal_memset(SerialApp_TxBuf, 0, SERIAL_APP_TX_MAX);
         
    //adc = GetAdc(); //设备自身湿度,可以不用
     
    uint8 W[3]={0};//温度
    uint8 S[3]={0};//湿度
    DHT11_TEST();//获取温湿度   
    W[0]=wendu_shi+48;//转为字符
    W[1]=wendu_ge+48;//转为字符
    
    S[0]=shidu_shi+48;//转为字符
    S[1]=shidu_ge+48;//转为字符
    
     
    if(S[0]=='0' && S[1]=='0')
    {
      //如果获取不到则不处理
    }
    else
    {
      //将获取到的温湿度传到网关
      uint8 SerialApp_Tx[SERIAL_APP_TX_MAX+1]={0};//声明发送字符串
      sprintf(SerialApp_Tx, "{ck001002%s.%s}", S, W);//温湿度写入字符串 //%4.3fV DEVID, adc   //%2d.%2d
      HalUARTWrite(SERIAL_APP_PORT,SerialApp_Tx,osal_strlen(SerialApp_Tx));//在串口打印,方便我们自己调式
       
      //使用无线发送到网关
      SerialApp_TxAddr.addrMode =(afAddrMode_t) Addr16Bit;
      SerialApp_TxAddr.addr.shortAddr = 0xFFFF;//0x0000
      SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT;
      AF_DataRequest(&SerialApp_TxAddr, (endPointDesc_t *)&SerialApp_epDesc,
                    SERIALAPP_CLUSTERID1, osal_strlen(SerialApp_Tx), SerialApp_Tx,  &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); 
      //发送完毕
    }
    HAL_TOGGLE_LED1();//点亮或关闭LED1 P1.0针脚
    osal_start_timerEx( SerialApp_TaskID, SERIALAPP_SAMPLE_EVT, INTERVAL);//等待间隔时间后,再使用定时器运行SERIALAPP_SAMPLE_EVT事件!
     
    return ( events ^ SERIALAPP_SAMPLE_EVT );
  }



6、点击编译


上面完成后,看到有绿色的调试,按F5就刷代码成功了!


第三步:连接电脑串口调试

一、插上CP2102 USB下载器

对应好再插入
DTR RX TX VCC CTS GND

二、电脑打开串口软件



三、手机打开http://m.znck007.com
在《智能创客手机控制端》里,家中环境-》家中温度,空气湿度,就可以看到当前的温湿度了!




那么这样,我们调试就成功了!


如果想让他单独运行,可以用CP2102再加上USB充电器供电(可为手机充电的)


切记:其它方式供电只能为v3.3,否则可能会烧坏zigbee模块!


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。