单片机
返回首页

基于STM32+ESP8266+华为云IoT设计的健康管理系统并完成应用侧开发

2022-10-09 来源:csdn

近几年随着科技的进步和智能化浪潮的到来,智能穿戴设备也在飞速火爆发展,各种健康智能手环,智能手表、智能跑鞋、智能眼镜纷纷上市,并出现了很多针对个人家庭的健康管理设备。比如: 智能血压计、智能心率检测、脂肪秤、智能体重秤等等,都带上了智能、健康各种标签。


可穿戴设备,即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能,可穿戴设备将会对生活、感知带来很大的转变。


这篇文章就利用STM32加上各种外设传感器配合华为云IOT物联网平台设计一个健康管理设备,通过ESP8266+MQTT协议将数据传输导致华为云物联网平台,并通过华为云的应用侧完成应用层软件开发;设计本项目的目的就是,上手体验华为云物联网平台,并探究一下智能设备的实现原理。


当前设计的监控管理设备支持的功能有: 

(1)人体温度测量 

(2)运动监测、计步功能 

(3)睡眠监测 

(4)心率测量


STM32采集这些传感器数据之后,进行处理,在本地OLED显示屏上完成显示;再通过ESP8266将数据传递到华为云物联网平台,关联数据可视化大屏完成数据展示。


项目工程源码下载: https://download.csdn.net/download/xiaolong1126626497/81993720

下面是示波器测量的心率显示:

image-20220113113247970


设备运行效果:

image-20220113105130355


image-20220113170207055


主控芯片采用STM32F103C8T6,它一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,RAM空间是20K,工作电压2V~3.6V,运行速度72MHZ。

image-20220113113146484


人体温度测量,采用非接触式红外测温芯片GY-MCU90615,工作电压 3-5v 功耗小,体积小。其工作原理, 是通过单片机读取红外温度度数据,串口(TTL 电平)通信方式输出。串口的波特率有 9600bps 与 115200bps有连续输出与询问输出两种方式,可适应不同的工作环境,与所有的单片机及电脑连接。

image-20220113105156144


心率测量,采用PulseSensor传感器,这是一款用于脉搏心率测量的光电反射式模拟传感器,通过模拟输出口可将采集到的模拟信号传输给 STM32单片机用来转换为数字信号,再通过单片机简单计算后就可以得到心率数值。

image-20220113105210621


计步模块,睡眠监测,运动监测功能采用MUP6050陀螺仪实现,这是一款高性能三轴加速度+三轴陀螺仪的六轴传感器,该模块采用InvenSense 公司的 MPU6050 芯片作为核心, 该芯片内部整合了3轴陀螺仪和3轴加速度传感器,并可利用自带的数字运动处理器硬件加速引擎,通过主 IIC 接口,向应用端输出姿态解算后的数据。有了DMP,可以使用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。 MPU6050 模块具有:体积小、自带 DMP、 自带温度传感器、 支持 IIC 从机地址设置和中断、兼容 3.3V/5V 系统、使用方便等特点。

image-20220113105326453


(5)本地数据显示用的OLED显示屏采用0.96寸的SPI接口显示屏,分辨率为 128*64,主要是在本地显示采集的数据,时间等信息。

image-20220113105602232


(6)上网的模块采用ESP8266,ESP8266是物联网领域常见无线网卡芯片,支持AT指令,支持串口协议控制,只需要几个简单的AT指令就可以完成网络连接,数据传输。当前项目里,就是通过ESP8266将采集的数据传递到华为云IOT平台,实现数据展示。

image-20220113105659834


官网地址: https://www.huaweicloud.com/s/JeeJqeiBlOe9kSU

选择IOTDA进入,选择免费试用。

image-20220113111627259


image-20220113111713754


在产品页面,选择右上角创建产品。

image-20220113111757856


根据提示,填入对应参数。

image-20220113112005762


创建好之后,查看产品详情,进入属性配置页面。

image-20220113112059026


选择自定义模型。

image-20220113112129287


添加服务。

image-20220113112224296


接下来就添加属性,属性就是传感器上传的数据类型,需要展示的数据;根据自己传感器的数量、类型自己设置即可。

image-20220113112324661


添加心率传感器数据属性。

image-20220113112431629


添加体温传感器数据属性。

image-20220113112528866


添加计步功能的数据属性。

image-20220113112657761


创建成功:

image-20220113112841104


打开设备页面,点击右上角注册设备按钮,根据提示和产品的信息填入;创建完保存得到的信息。

image-20220113113532461


点击确定之后,创建成功效果如下;目前设备还未激活,需要设备登录一次服务器即可激活;接下来就是如何登录了。

image-20220113113713819


完成产品、设备创建之后,接下来采用MQTT客户端模拟设备,测试是否可以正常上华为云。

连接协议使用MQTT协议,MQTT协议登录服务器,就像QQ登录一样,需要输入账号、密码等一些信息;下面先利用华为云的小工具完成这些数据的创建。

华为云提供的MQTT账户信息生成在线小工具: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

前面两行填入的数据,在创建设备成功时提示下载的文件里有,照着填写即可。

image-20220113114545591


我的设备生成的数据如下:

华为云IOT平台的MQTT服务器地址信息如下:

华为云IOT平台MQTT协议订阅主题的格式:

华为云IOT平台MQTT协议上报主题的格式:

打开MQTT客户端,填入对应数据,连接华为云物联网平台:

如需使用和我一样的同款软件,打开百度搜索MQTT客户端_v2.4(协议3.1.1).exe 即可找到下载地址。

image-20220113115522655


登录成功后,查看华为云页面,可以看到设备已经在线,并且上传的数据已经展示出来。

image-20220113115641873


为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的API接口、SDK接口,为了方便通用一点,我这里采用了API接口完成数据交互,上位机软件采用QT开发。

帮助文档地址: https://support.huaweicloud.com/usermanual-iothub/iot_01_0045.html

image-20220113142020653


设备属性就是设备上传的传感器状态数据信息,应用侧提供了API接口,可以主动向设备端下发请求指令;设备端收到指令之后需要按照约定的数据格式上报数据;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。

下面分别介绍应用测和设备测的实现流程。

(1)应用层下发的指令

帮助文档地址: https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html

接口的在线调试地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=ListProperties

如果请求参数和返回值不清楚,写代码前,先使用在线调试接口体验一下,验证数据交互是否OK。

image-20220113143843235


请求参数里比较总要的两个必填参数,是设备ID和服务ID,这两个参数在第3章节就介绍过如何获取了,在产品页面创建自定义属性时可以看到服务ID。

image-20220113144010538


请求接口总结:

请求头里需要填X-Subject-Token参数,这个参数只要是访问任何华为云都需要填,获取具体的流程可以看这里。https://bbs.huaweicloud.com/blogs/317759 翻到第3小节。

(2)设备上传数据

应用层向设备端请求查询设备属性时,设备端会收到如下的消息:

这个消息里有一个主要参数request_id请求ID,设备端需要解析出这个参数,给应用层响应数据时,需要带上这个ID。

这个请求属性详细帮助文档看这里: https://support.huaweicloud.com/api-iothub/iot_06_v5_3011.html

image-20220113145229538


设备响应的数据格式:

响应的数据格式可以看这里的介绍: https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html

image-20220113144957661


下面使用MQTT客户端与在线API接口联合模拟一下接口效果:

(1)先打开调试页面: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=ListProperties

然后填好设备DI和服务ID:

image-20220113145604854


(2)、打开MQTT客户端,登录华为云物联网平台(也就是模拟设备上线):

image-20220113145709545


(3)、打开在线API调试页面,点击调试: 点击后可以看到页面上已经在等待客户端的响应了。

image-20220113145810872


(4)、MQTT客户端响应详细

按照前面说的响应格式,拼接好接口,数据。然后发布主题。

image-20220113150012520


(5)、应用层收到客户端响应,调试成功

调试成功后,响应体里收到的就是设备端上传的设备属性数据。

image-20220113150211946


image-20220113164911187


下面列出STM32设备底层端的一些传感器核心处理代码。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 永不缺相启动运行的电动机控制电路

  • IGBT模块通过控制门极阻断过电流

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 基于CA3193的热电偶放大器电路

    相关电子头条文章