回答

收藏

爱玩板卡+基于小e1开发板的室内温度智能检测系统

#线上活动 #线上活动 2532 人阅读 | 0 人回复 | 2017-06-30

冬季的到来,天气的变冷。使得各家各户对自家的取暖问题都比较关心。相对于成熟小区,供暖不成问题,而对于一些新小区,往往供暖问题就成了大问题。。。楼主本人所在城市,每年供暖期间都会出现一大批因供暖不良或者不达标而围堵城市道路的。不幸的是,楼主所住小区就是其中一只,供暖温度14~16度左右,晚上有时甚至物业会私自停暖。。。面对如此现象,所以有了利用小E开发板,检测屋内实时温度,并且进行记录的实验。
小E开发板本身自带温湿度传感器,所以,在小E本身的基础上进行修改即可实现。首先了解下小E开发板温度检测程序。小E开发板温度检测程序存在于et—user-app.c文件中
  • case TYPE_TEMP_HUM_SENSOR:
  •                                 {
  •                                         et_uchar temp_hum[HUM_DATA_SIZE]={0};
  •                                         if(DHT11_read_temp_hum(temp_hum, HUM_DATA_SIZE) != RETURN_OK)
  •                                         {
  •                                                 os_printf("DHT11_read_temp_hum error\n");
  •                                                 msg.len = ack_to_mqtt(msg_buf, msg.buf, ACK_DEV_FAILED);
  •                                                 rc = msg.len;
  •                                                 break;
  •                                         }
  •                                         msg.len = ack_temp_hum_to_mqtt(msg_buf, temp_hum, msg.buf, ACK_SUCCESS);
  •                                         rc = msg.len;
  •                                         if(mode == WORK_MODE_OLED)
  •                                         {
  •                                                 et_uchar display_temp[7]={0};
  •                                                 et_uchar display_hum[8]={0};
  •                                                 sprintf(display_temp, ":%d.%d", temp_hum[2], temp_hum[3]);
  •                                                 sprintf(display_hum, ":%d.%d%%", temp_hum[0], temp_hum[1]);
  •                                                 OLED_clear();     //clear oled
  •                                                 switch(type & 0x0F)
  •                                                 {
  •                                                         case TEMP_AND_HUM:
  •                                                         {
  •                                                                 //display tempeature and hummity, such as:
  •                                                                 //温度:20.08℃
  •                                                                 //湿度:60.89%
  •                                                                 OLED_show_chn(0, 0, 15);    //show 小e:
  •                                                                 OLED_show_str(18, 0, "e:", 2);
  •                                                                 OLED_show_chn(0, 2, 0); //温
  •                                                                 OLED_show_chn(18, 2, 1); //度
  •                                                                 OLED_show_str(36, 2, display_temp, 2);     //such as   :20.08
  •                                                                 OLED_show_chn(86, 2, 2);  //℃
  •                                                                 OLED_show_chn(0, 4, 3);    //湿
  •                                                                 OLED_show_chn(18, 4, 4);  //度
  •                                                                 OLED_show_str(36, 4, display_hum, 2);//such as :80.05%
  •                                                         }
  •                                                         break;
  •                                                         case TEMPERATUR:
  •                                                         {
  •                                                                 OLED_show_chn(0, 0, 15);    //show 小e:
  •                                                                 OLED_show_str(18, 0, "e:",2 );
  •                                                                 OLED_show_chn(0, 2, 0); //温
  •                                                                 OLED_show_chn(18, 2, 1); //度
  •                                                                 OLED_show_str(36, 2, display_temp, 2);     //such as   :20.08
  •                                                                 OLED_show_chn(86, 2, 2);  //℃
  •                                                         }
  •                                                         break;
  •                                                         case HUMMITY:
  •                                                         {
  •                                                                 OLED_show_chn(0, 0, 15);    //show 小e:
  •                                                                 OLED_show_str(18, 0, "e:", 2);
  •                                                                 OLED_show_chn(0, 2, 3);    //湿
  •                                                                 OLED_show_chn(18, 2, 4);  //度
  •                                                                 OLED_show_str(36, 2, display_hum, 2);//such as :80.05%
  •                                                         }
  •                                                         break;
  •                                                 }
  •                                         }
  •                                 }
  •                                         break;

[color=rgb(51, 102, 153) !important]复制代码

这个是自带程序,以此程序为基础进行修改。
由于采用的触摸屏显示温度,同时将温度画出曲线进行便于管理,所以需要将采集温度进行存储。
数据存储可采用利用数组采集,也可将数据存入存储器件中(断电保持)。
简单修改后部分程序
  • et_uchar display_temp[7]={0};
  •                                                 et_uchar display_hum[8]={0};
  •                                                 sprintf(display_temp, ":%d.%d", temp_hum[2], temp_hum[3]);
  •                                                 os_printf("温度 = %d\n", temp_hum[2]);
  •                                                 os_printf("湿度 = %d\n", temp_hum[0]);
  •                                                 wd[x]=temp_hum[2];
  •                                                 sd[x]=temp_hum[0];
  •                                                 sprintf(display_hum, ":%d.%d%%", temp_hum[0], temp_hum[1]);
  •                                                 OLED_clear();     //clear oled
  •                                                                 os_printf("第x%d次温度%d\n", x,wd[x]);
  •                                                                 os_printf("第x%d次湿度%d\n",x, sd[x]);
  •                                                                 OLED_show_chn(2, 0, 0); //温
  •                                                                 OLED_show_chn(20, 0, 1); //度
  •                                                                 OLED_show_str(38, 0, display_temp, 2);     //such as   :20.08
  •                                                                 OLED_show_chn(88, 0, 2);  //℃
  •                                                         //        OLED_show_chn(0, 2, 3);    //湿
  •                                                         //        OLED_show_chn(18, 2, 4);  //度
  •                                                         //        OLED_show_str(36, 2, display_hum, 2);//such as :80.05%
  •                                                                 DrawLineX(0,127,63);
  •                                                                 DrawLineY(0,63,0);
  •                                                                 for(y=0;y<=x;y++)
  •                                                                 {
  •                                                                         DrawPoint((y),(64-wd[y]));
  •                                                                         os_printf("第y%d次温度%d\n",y, wd[y]);
  •                                                                         if(x==127)
  •                                                                         {
  •                                                                                 x=0;
  •                                                                                 memset(wd,0,sizeof(wd));
  •                                                                                 memset(sd,0,sizeof(sd));
  •                                                                         }
  •                                                                 }


[color=rgb(51, 102, 153) !important]复制代码

为方便调试,程序加入串口打印,也可利用串口将程序保存。

这样可以使用电脑将温度导出保存。
触摸屏显示得就是温度的实时曲线

这样便直观的看到了温度曲线。。
总体而言,小E开发板本身自带的外设资源丰富,并且开发快的工作人员以及网站资料,技术支持都很到位。
对于程序来说,小E开发板自身所带的程序也算是比较全的,对于各个功能的重新进行更改移植还是比较方便的。总体上如果利用智能家居实现某一功能的话小E开发板的功能足够。
转载自网络,版权归原作所有。



分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条