一. 项目简介
本项目实现了基于STM32F103C8T6《物联网居家环境健康监控设备》。项目以STM32F013C8T6为主控,OLED为显示设备用于显示信息,HS3003传感器用于采集环境温湿度数据,MQ-5可燃气体传感器采集空气中可燃气体浓度,Max30102传感器采集人体心率以及血氧值,遥感模块为设备的本地控制端,内部RTC用于实时时钟,ESP8266模块用于连接物联网平台以及更新实时时钟时间,并且实现阿里云物联网平台的连接,用于数据上传与下发,蜂鸣器用于环境危险报警。本项目实现了集环境监控,健康监控以及物联网为一体的多功能监控装置。
二. 方案框图
根据比赛要求,这次使用得捷的Scheme-it来设计框图,非常方便!!后续要好好看看,在更多的项目上用起来!
本项目的主要框图如下,得捷网站链接如下:https://www.digikey.cn/schemeit/project/123-6ee2c284504e4308b7fabaaad957498e
使用到的外设模块有:
- STM32F103C8T6 ST
- LED:红色用于模拟灯,可以被远程控制打开与关闭。绿色LED周期性呼吸,指示系统是否正常运行。
- 蜂鸣器:用于可燃气体超阈值报警。
- 摇杆模块:用于摇杆控制显示界面切换以及报警关闭。
- MQ-5可燃气体传感器:用于检测空气中可燃气体浓度值。
- EEPROM:用于保存MQ-5可燃气体浓度阈值。
- ESP8266 WIFI模块:用于更新网络时间以及连接物联网平台。
- MAX30102:用于采集人体的心率以及血氧值。
- HS3003:用于采集环境温湿度信息。
- OLED:用于显示时间,温湿度信息,可燃气体浓度,心率,血氧数值,物联网平台链接状态等信息。
- MAX8559ETAAA+T:亚德诺半导体(ADJ)LDO电源模块。
三. 硬件资源说明
3.1 STM32F103C8T6
STM32F103C8T6是ST公司一个中密度性能线, 配有ARM Cortex-M3 32位微控制器, 48路LQFP封装. 它结合了高性能的RISC内核, 运行频率可达72MHz, 以及高速内嵌存储器, 增强范围的强化输入/输出和外部连接至两个APB总线. STM32F103C8T6具有12位模数转换器, 计时器, PWM计时器,标准和高级通讯接口. 一套全面的省电模式允许设计者设计低功耗应用.
运行电压范围: 2V至3.6V.64K字节闪存.20K字节SRAM.CRC计算单元, 96位特有ID.两个12位, 1µs模数转换器(高达10通道).7通道DMA控制器, 3个通用计时器和1个高级控制计时器.37个快速输入输出端口.串行线调试器(SWD)和JTAG接口.两个SPI, 两个I2C, 三个USART, 一个USB和一个CAN接口.环境运行温度范围: -40°C至85°C
3.2HS3003温湿度采集
通信方式:
- HS3003通过I2C通信,与OLED控制使用了同一路SCI的I2C,通过互斥量相互隔离,实现一路I2C控制两个从设备的目的。
功能:
- HS3003可以测量环境的温度以及湿度信息,通过计算公式进行转换成摄氏度以及百分比值。
- 周期性采集,每一秒钟采集一次。供其他模块使用。
3.3 MQ-5 可燃气体浓度采集
通信方式:
- MQ-5通过将采集到的可燃气体浓度值转换为ADC值输出,单片机周期性采集ADC信号用于计算空气中可燃气体浓度。
功能:
- MQ-5可燃气体浓度传感器可以采集空气中的可燃气体浓度,单位为ppm(百万分之一),每一秒钟更新一次数据。供其他模块使用。
3.4 MAX30102心率血样采集
通信方式:
- MAX30102使用I2C通信,为了精度以及采集速率,使用了单独的一路I2C来工作(其实和OLED使用同一路也是可以的)
功能:
- MAX30102上面的INT中断引脚用于判断数据是否更新,当有更新数据时,中断会拉高,数据被读取之后拉低。
- MAX30102会一直处于通信状态,当中断引脚变高之后,开始采集数据。当没有手指放上去的时候,采集到的传感器输出值RED以及IR数值,输出值大概在2000以内,但是当手指放上去之后,输出值会突变为100000以上,以此来判断是否有手指放在传感器上做数据采集。
- 采集到的RED以及IR值会周期性变化,以此来计算心率以及血样数值。
- 手指刚放上去的时候采集到的数值是不稳定的,需要等待一段时间才会采集到稳定的数值,血氧值大于95%,心率在60到120之前是较为正常的值。
3.5 摇杆模块控制功能
通信方式:
- 摇杆模块有两个方向(X轴和Y轴)以及一个按钮(Z轴),都是通过ADC进行采样。
功能:
- 对摇杆模块的控制,在X轴,Y轴和Z轴上都会输出一个ADC值,通过对采样值进行分析判断可以直到当前摇杆处于什么位置,以此来实现控制的功能。
- 摇杆模块用于对现实界面进行切换,当摇杆模块滑向右和上方时(即X轴以及Y轴的正方向),则会切换到传感器显示界面;当摇杆模块滑向左或者下方时(即X轴和Y轴的负方向)则切换到时间显示界面。
3.6 报警功能
- 报警使用了板载的蜂鸣器,当MQ-5采集到的空气中可燃气体浓度大于设定阈值的时候就会打开蜂鸣器报警,报警阈值可以通过物联网设置。也可以通过物联网控制报警功能打开/关闭。
- 当设定阈值更新时,会判断更新的阈值是否和当前阈值相等,不等则写入EEPROM,下次系统上电的时候会自动从EEPROM中读取阈值
3.7 ESP8266 网络通信
- ESP8266 WIFI模块用于物联网通信,通信平台为阿里云物联网平台,通信方式为MQTT。
- ESP8266上电工作流程:
- 复位ESP8266
- 关闭回显,连接AP
- 连接AP完成之后更新SNTP时间,并将时间写入到RTC
- 时间更新完成之后MQTT通信连接阿里云物联网平台
- 数据通信(上载和下发),上载一秒钟更新一次
- 使用了一个定时器用来判断ESP8266 AT指令是否响应超时,如果超时,会重新发送。
- 连接了物联网平台之后,会将温度、湿度、可燃气体浓度、血氧数值,心率数值,可燃气体报警阈值、报警开关以及LED亮度上传到阿里云物联网平台。
- 物联网平台可以下发LED亮度百分比命令来控制本地LED的亮度。
- 物联网平台可以下发可燃气体浓度报警阈值到本地。
- 物联网平台可以下发可燃气体报警使能命令到本地。
3.8 OLED显示功能
OLED提供显示功能,包括:
- 上电显示
- 日期时间星期显示
- wifi连接状态显示
- IoT物联网平台连接状态显示
- 温度、湿度、可燃气体浓度显示
- 心率、血氧显示
- 上电之后会显示启动界面,1s之后切换到时间显示界面
3.9 灯控制功能
- 板载的LED1来模拟普通LED灯,亮度控制位百分比,支持0~100:0为关闭LED;100为全亮度。
- 通过物联网平台下发控制亮度命令,本地接收到命令之后使用PWM控制LED的亮度。
3.10 RTC
- RTC用于本地实时时钟
- 上电会自动从上一次的时间开始计时,EAP8266成功连接AP之后之后会自动发起时间更新命令获取SNTP时间,并更新到本地RTC中。
四. 总结
通过此次FastBond2阶段1,想到了集环境监控,健康监控以及物联网为一体的多功能监控装置。