【OneNET麒麟座开发板试用体验】12、夏季高温预警

  • MATLAB
  • 坐标轴
  • 炎热指数
  • 科学研究
  • 高温预警
  • xukejing
  • LV5工程师
  • |      2017-06-25 22:22:33
  • 浏览量 1146
  • 回复:0
本帖最后由 xukejing 于 2017-6-28 00:57 编辑 夏天到了,天气也热起来了。 今天我们来做一个基于OneNet的高温预警器。 既然是要表征体感炎热程度,那么就要用到温度。 当然,还要考虑湿度因素。 所以,这儿引入炎热指数的概念。 炎热指数是衡量气象条件对人体影响的判别指标,是一种舒适度指标,是温湿指数的一种表示方法,能准确反映出人体在相对湿度与气温共同作用下的实际感受。 炎热指数的模型是这样的: 因为数学公式不太直观,所以我们画个图表示一下。 介绍一个科学研究的神器,matlab。小伙伴们业余时间可以自学一下。 在matlab里,按下图把代码敲上 于是,炎热指数的3D曲面就显示出来了。 底部是xy平面,也是温湿度平面。 y轴往左0到1是湿度,x轴往右20到40是温度。 竖轴z轴,60到110就是炎热指数的坐标轴。 可以看出,温度和湿度是有协同效应的。有文献记载,当炎热指数达到86的时候,人的体感就是很热了。 有了表征体感温度的炎热指数,为了做高温预警,我们还需要一个表征与86的距离的安全裕度模型。 这个热裕度模型可以用当前炎热指数与86的差来表示。 另外,因为气温小于20度时(此时炎热指数小于60),体感凉爽,所以可以认为是预警下限。 所以,我们可以建立一个高温预警模型,把60到86这个区间的裕度值标准化到1至0的范围。 程序代码可以在我第10篇的onenet文章的基础上改。 首先是增加热指数与热裕度的变量,变量类型float,另外再添加一个字符串用来存上传到平台的数据。
float heat_index;//热指数

float t_m;//热裕度

char t_m_Str;       //字符串格式温度

char h_i_Str;       //字符串格式热指数

然后,SHT20获取玩温湿度以后,用我们的模型计算一下热裕度,并把float型数据打印为字符串。
 /* 获取温湿度 */

    SHT2x_MeasureHM(SHT20_Measurement_T_HM, &temp);

    mDelay(500);

    SHT2x_MeasureHM(SHT20_Measurement_RH_HM, &humi);

                

                heat_index=(float)temp*0.81+46.3+(float)humi*((float)temp*0.99)/100.0-(float)humi*14.3/100.0;

                if(heat_index>86)

                        t_m=0;

                else if(heat_index>60)

                        t_m=(86.0-heat_index)/26.0;

                else

                        t_m=1;

                sprintf(t_m_Str, "%f", t_m);

                sprintf(t_m_Str, "%f", t_m);

最后把这个字符串上传到OneNet平台。
strcat(send_buf, "tm,");

                sprintf(text,"%s",t_m_Str);

                strcat(send_buf, text);

                strcat(send_buf, ";");

strcat(send_buf, "hi,");

                sprintf(text,"%s",h_i_Str);

                strcat(send_buf, text);

                strcat(send_buf, ";");
好了,这样就结束了。。。。 编译,烧写。 当然,也别忘了去Onenet页面上把数据流给填上 然后在应用里把数据流接到曲线图或仪表上 显示一切正常! 完事!收工!
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

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

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