M5Stick-c
ESP8266
项目背景及概述:
项目最初的想法来源于当下疫情局势,每个人都关心自己及家人的健康状况。因此本产品旨在应用于人们居家隔离或复工复产过程中,对个人身体情况的实时监测。同时,为满足人们对于家庭的环境状况的了解与相关设备的智能控制,我们充分利用ESP32等设备与阿里云的数据交互,设计并完成了一款基于ESP32的智能家庭健康系统。
2.系统组成及功能说明:
2.1 整体介绍:
整个系统分为基于M5Stick-c的可穿戴部分,以及基于ESP8266(或ESP32),智能家居控制部分和云端数据处理及移动端应用部分(本项目可采用两块ESP32,而组委会刚好提供两块M5Stick-c,但为了团队合作和进度的需要,将其分给两位组员,考虑到成本因素,使得智能家居控制部分采用一块ESP8266完成)
系统框图如下:
开发环境我们选用的是 Arduino IDE,因为arduino开发方式具有资源丰富,例程完善自带串口调试器,使用方便的特点,同时支持众多传感器的驱动程序。
2.2可穿戴部分:
2.2.1身体健康监测
(1)心率血氧测试模块:采用MAX30102,是一种集成了脉搏血氧仪和心率监测仪的生物传感器 ,集成了一个红光LED,光电检测器,以及带环境光抑制的低噪声线路,可佩戴与耳垂,手指用于可穿戴设备心率血氧的检测。
(2)体温测试模块:通过对比非接触式人体红外温度传感器MLX90615和接触式体温检测传感器MAX30205,MAX30205温度传感器可高精度测量温度,提供过热报警/中断/关断输出。器件利用高分辨率模/数转换器(ADC)将温度测量值转换为数字形式。通过I2C兼容2线串行接口进行通信。
两块传感器通过一主多从的I2C协议与M5Stick-c相连。此处使用了Mini Proto Unit扩展了传感器采集电路。
2.2.2 数据可视化
通过M5Stick-c的屏幕显示各个传感器的数据信息。针对不同传感器,我们设计了5个数据可视化窗口,通过板子的Button_Home按键控制切换。
(1)Mode1:显示人体温度数据,设计“temperature ℃”,将云端读出的传感器实时数据显示在*处。
(2) Mode2:显示室内二氧化碳浓度。设计“CO2=ppm”字样。
(3) Mode3:显示人体心率、血氧数据。设计“Heart Rate=/min”字样显示心率,“Blood Oxygen=%”字样显示血氧含量。
(4) Mode4:显示室内湿度。设计“Humidity=**%”字样。
(5) Mode5:显示控制的电风扇和加湿器的开关状态。当电器打开时,对应页面显示ON,关闭时显示OFF。
2.2.3 M5Stick-c屏幕显示和时钟设计
时钟的数据来源于M5Stick-c自带的时钟功能,利用millis ( )函数获取CPU的内置时间。在循环函数中,通过毫秒计数获得准确的时间递进值。当每通过1000毫秒时,变量ss加1,逢60在mm变量加1,mm逢60给变量hh加1,从而获得准确的时间变化量。
在时钟的页面设计上,采用传统表盘的形式。由于M5Stick-c是可穿戴设备,因此将其设计成表盘更能体现将物联网带入生活的感觉。初始化页面是外围的时钟边框和刻度盘,三个指针采用每秒刷新的形式控制走针。
根据不同传感器的功能,设计5个MODE,通过按键中断控制屏幕的切换。在屏幕切换时,用给button计数的方式选择页面,从而实现屏幕页面的循环播放。
2.3智能家居控制部分
2.3.1方案对比:
(1) 通过arduino和HC05经典蓝牙模块与M5Stick-c进行蓝牙数据透传完成数据交互,该方案具有可行性,我们也完成了相应的调试,但会ESP32同时进行WIFI和蓝牙的数据传输有时会将蓝牙连接打断,且当ESP32远离固定部分时,固定部分将无法正常工作。为此我们设计了方案二:
我们采用一块ESP8266(ESP32)作为该部分的控制芯片,连接家庭WIFI,与阿里云进行数据交互,将数据上传至阿里云,并通过阿里云的云产品流转的方式,将相应传感器数据下发至可穿戴部分,进行M2M(machine to machine)数据传输,完成可穿戴部分对家庭环境数据的获取。
2.3.2 室内温湿度及空气质量检测
(1)我们采用了CCS811气体传感器, CCS811将金属氧化物气体传感器和微控制器子系统集成在一起,从而使得智能手机、可穿戴设备和联网家用设备能够实现室内空气质量(Indoor Air Quality,IAQ)监测,主要测量室内空气中的二氧化碳浓度和室内有机气态物质TVOC浓度,设定相应阈值提醒用户开窗通风或采取换气措施.
(2)HDC1080 是一款具有集成温度传感器的数字湿度传感器,其能够以超低功耗提供出色的测量精度。利用该传感器完成对室内温湿度的测量。
二者同样通过一主多从的I2C方式与ESP8266(ESP32)相连,我们选用的模块集成了以上两种传感器,便于接线。
2.3.3 家用电器控制
通过对室内温室度的测量与数据的可视化,给与用户对于室内调节温室度的电器提供了使用建议,因此我们通过ESP8266(ESP32)的GPIO与两路5V继电器相配合,完成了对于一台家用小型加湿器和小型电风扇的智能控制,分为两种方式,(1)设定阈值,可自动调节电器开关,(2)可通过手机APP下发指令到ESP8266(ESP32)控制电器开关。
2.4 云端数据处理及移动端应用部分
2.4.1 云端数据处理
可穿戴部分和智能家居固定部分均通过wifi将数据上传至阿里云,在阿里云的IOT控制台配置好产品和设备以及相应的物模型,即可完成数据上报与数据下发。
云产品流转,通过阿里云提供的规则引擎,配置好云产品流转的SQL语句,即可完成M2M的数据传输。
2.4.2 移动端Android APP
我们利用了阿里云的IOT studio进行了Android APP的开发,完成移动端数据的可视化以及对电器的控制。
3.成果分析:
与预期方案相比,我们减少了心电检测部分,因为心电监测需要特制的生物电采集探头和导线,集成起来非常麻烦,增加了电器的控制,使传感器检测数据拥有硬件回应,同时改变了数据传递方式,通过云端云产品流转可以方便稳定的完成M2M的数据交互。
最终我们完成了具有可穿戴部分和智能家居控制部分并利用阿里云IOT平台的,基于ESP32的智能家庭健康系统,并完成了配套移动端Android APP开发,功能完善,作品完成度较高。
同时为了践行开源精神,我们将设计文档上传至CSDN,整个项目工程上传至GitHub,同时我们又撰写了四篇csdn文档,记录在项目开发过程中遇到的问题及解决方式,以便为他人提供参考。