DIY这前先科普一下:最宜人的室内温湿度是: 1、冬天温度为18至25°C,湿度为30%至80%; 2、夏天温度为23至28°C,湿度为30%至60%,在此范围内感到舒适的人占95%以上。 3、在装有空调的室内,室温为19至24°C,湿度为40%至50%时,人会感到最舒适。如果考虑到温、湿度对人思维活动的影响,最适宜的室温度应是工作效率高。18°C,湿度应是40%至60%,此时人的精神状态好,思维最敏捷。 OK,今天就来教大家DIY《温湿传感器》,时时了解你家中的温湿度,看看是否合适居住吧! 看看我们需要的配件 1、zigbee开发板 30元 2、zigbee模块 45元 3、zigbee扩展板 15元 4、DHT11温湿传感器 8元 本帖隐藏的内容一共是98元,时时监控你家中、室外、田地的温湿度,须与《网关》配合使用! 网关的两个下载器,都可以给它供电!切记:只能供3.3V否则烧! 第一步:组合开发板和扩展板,连接等一、DHT11温湿度接线 扩展板仿着面包板做的,记得DHT11的第2脚针要连P0.6。 连好后的效果,加入一个LED是为了方便查看是否正常(闪亮说明正常)。 二、插入到开发板上 注意:拿个东西隔离zigbee模块,如果压到上面的脚针可能会短路。 第二部份:为ZIGBEE模块刷代码。 一、插上SMARTRF04EB下载器(如果IAR 8.10不认的话,请看是否插正确/用笔戳RESET键)。 RESET重启键。 二、源代码解说 ZIGBEE模块源代码点这里下载: https://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、采集代码部份 [C] 纯文本查看 复制代码 ? 0102 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 //-.- HalUARTWrite(SERIAL_APP_PORT,SerialApp_Tx,osal_strlen(SerialApp_Tx));//在串口打印,方便我们自己调式 //使用无线发送到网关 SerialApp_TxAddr.addrMode