HaaS年度经典案例:HaaS抗疫测温仪

1、背景

在新冠舆情肆虐的今天,人们从来没有如此关注自己和身边人的体温,只要一听到有人发高烧那必定远远躲开。现在去公共场所,在入口的地方也必定需要进行测温。那作为工程师,就想到DIY一个云端一体测温仪。

能持续不断地监控家庭成员 和 到访朋友的温度哦,如果温度异常蜂鸣器就会警报,并且可推送消息到您的手机端。

2、方案

2.1、硬件选型

硬件就选用HaaS EDU K1做为一个主要模块。HaaS EDU K1集成阿里专用高性能MCU-HaaS1000,支持双频2.4G/5G Wi-Fi, BT5.0/BLE5.0,丰富的传感器,包含9轴运动传感器,磁力计,温湿度,大气压,光照,声音等传感器,双屏配置,适应各种场景,自带1200mA可充电锂电池,可脱离外接电源使用,标配type-c接口,充电/烧录/串口调试一口搞定。更重要的是有外接扩展接口,非常方便的可以扩展外部的传感器或其他器件。

同样的选用HaaS100的话,除了需要单独外接屏幕外,其他都是完全一致的。

由于HaaS EDU K1内置的温湿度只能测量内部的温度,无法测量人的体温。所以这里选用GY-906红外测温传感器模块,他是开源硬件平台上常用的红外测温模块。

这样的话,HaaS EDU K1搭配GY-906就形成一个简单的红外测温仪。

2.2、原理

测温方式一般可分为接触式和非接触式,接触式测温只能测量被测物体与测温传感器达到热平衡后的温度,所以响应时间长,且极易受环境温度的影响。而红外测温是根据被测物体的红外辐射能量来确定物体的温度,不与被测物体接触,具有影响动被测物体温度 分布场,温度分辨率高、响应速度快、测温范围广、不受测温上限的限制、稳定性好等特点。

由于物体红外辐射能量的大小和波长的分布与其表面温度关系密切,因此通过对物体自身红外辐射的测量,能准确地确定其表面温度,红外测温就是利用这一原理测量温度的。红外测温器由光学系统、光电探测器、信号放大器和信号处理及输出等部分组成。

GY-906红外测温传感器模块内部有一个MLX90614模块,他是一个通用的红外测温模块,他在出厂前改模块已进行了校验及线性化,具有非接触,体积小,精度高,成本低等优点。非常适合用在手持设备及医疗设备中。

3、制作

3.1、物料

材料清单

图片

购买链接

HaaS EDU K1

即将上市开售

GY-906红外测温传感器模块 

购买链接

杜邦线

母对母10CM:链接1链接2链接3

3.2、组装

GY-906的管脚只有四个,名称和功能如下

名称

功能

VIN

电源, 可直接使用3.3伏供电

SCL

SMBus接口的时钟信号

SDA

PWM或者SMBus接口的时钟信号

GND

电源地

MLX90614支持PWM和SMBus方式,实际使用中, 发现SMBus能和I2C协议兼容,可以直接接CPU的I2C。本文中就采用SMBus方式。

HaaS EDU K1扩展接口中有I2C1接口,可以直接用,完整的接线如下所示

HaaS EDU K1 引脚

GY-906引脚

VCC_3V3 (2)

VIN

GND(30)

GND

I2C_SCL1(15)

SCL

I2C_SDA1(17)

SDA

3.3、云端配置

参考文章《阿里云物联网平台快速入门实践》创建一个名叫“HaaS抗疫测温仪”的产品,并添加一个设备“HaaS_Temp0”,并且有人体温度这个属性。

3.4、软件编码

HaaS EDU K1开源代码中有一个application/exaple/edu_demo,里面是出厂时随机示例程序的代码。本案例直接在此代码上新增软件编码。

3.4.1 读取温度

新增一个mlx90614.h和mlx90614.c, 读取温度的代码在mlx90614.c中

#include <stdio.h>

#include <stdlib.h>

#include "aos/hal/i2c.h"

#include "mlx90614.h"



static i2c_dev_t i2c_dev;



void mlx90614_init(void)

{

   i2c_dev.port                 = 1;

   i2c_dev.config.address_width = I2C_HAL_ADDRESS_WIDTH_7BIT;

   i2c_dev.config.freq          = I2C_BUS_BIT_RATES_100K;

   i2c_dev.config.mode          = I2C_MODE_MASTER;

   i2c_dev.config.dev_addr      = SLAVE_ADDR;

   hal_i2c_init(&i2c_dev);

}



uint16_t mlx90614_readreg(uint8_t regAddr) {

   uint16_t data;

   uint8_t in_buff[3];

   int32_t ret0 = -1;



   ret0 =  hal_i2c_mem_read(&i2c_dev, i2c_dev.config.dev_addr, regAddr,

                       1, in_buff, 3, 1000);

   data = (in_buff[1] <<8 | in_buff[0]);



   return data;

}



float mlx90614_readtemp(uint8_t regAddr) {

   float temp;

   uint16_t data;



   data = mlx90614_readreg(regAddr);

   temp = data*0.02 - 273.15;



   return temp;

}

3.4.2 本地显示

用于本地OLED显示的代码在thermometer.c中,按HaaS EDU K1示例框架代码增加thermometer_task 这个任务,里面每隔1秒去读取温度的值。并提供对外的获取温度的接口,外部需要比每次一秒更加高的频率来获取温度。而且可以增加当温度超过正常值蜂鸣器报警等功能。

void thermometer_task(void)

{

   float temp;

   uint8_t temp_str[10];



   while (1)

   {

       temp = mlx90614_readtemp(RAM_TOBJ1);

       sprintf(temp_str, "T : %5.1fC", temp);



       OLED_Icon_Draw(14, 4+20, &icon_thermo_24_24, 0);

       OLED_Show_String(42, 8+20, temp_str, 16, 1);

       OLED_Refresh_GRAM();



       temp_notify = temp;

       aos_msleep(1000);

   }

}



float get_temp()

{

   return temp_notify;

}

3.4.3 上传云端

HaaS EDU K1上传数据到阿里云物联网平台只要是使用Linkkit这个SDK。这个每个600ms去读取一次温度,并上报到云端,在这里为了避免数据太多,可以过滤掉正常数据,比如只有当温度值大于37.5°C时才上传到云端。


 

void report_temp(void)

{

   float temp =0;

   int res = 0;

   char property_payload[30] = {0};



   temp = get_temp();

   LOGI("APP", "temp -> %f\n",temp);

   //if(temp > 37.5){

       HAL_Snprintf(property_payload, sizeof(property_payload), "{\"BodyTemperature\": %5.1f}", temp);

       res = IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_PROPERTY,

                                   (unsigned char *)property_payload, strlen(property_payload));

  // }

}

HaaS EDU K1本身自带wifi, 通过类似如下命令完成wifi联网,之后会自动连接云云端。

netmgr -t wifi -c haas-open 12345678

连上后,可以在云端查看到上传的温度。

4、总结

本案例通过HaaS EDU K1和GY-906红外测温模组,非常简单就制作了一个云端一体的抗疫测温仪。随时随地地保护您和家人的健康。从这个案例可以看出HaaS软硬件积木,硬件积木组合方便,且天生自带连云功能,是您学习开发非常好的助手。

5、开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

猜你喜欢

转载自blog.csdn.net/HaaSTech/article/details/113780315