访问手机版页面
你的位置:老古开发网 > STM32单片机 > STM32单片机应用 > 正文  
基于STM32的饮水提醒水杯及缺水量检测系统
内容导读:

引言

随着智能硬件的高速发展,市面上出现了一系列智能水杯。但大部分水杯都是根据固定饮水量对用户进行饮水提醒,这样的方式忽视个体差异。而真正的健康饮水方式是根据身体需水量,来对饮水进行规划。

为了根据不同人的身体机能的差异对用户进行饮水提醒,设计了一款基于人体盐分流失检测进行饮水提醒的智能水杯。本设计通过用户基础信息计算给出建议饮水量,并通过对人体盐分流失检测来进一步校正建议饮水量,实现智能提醒用户饮水。其主要以单片机STM32系列芯片、压力传感器、压敏传感器等为硬件基础,通过软件编程实现记录数据,绘制相应的饮水曲线,对饮水习惯进行评价,定量提醒用户饮水等功能,使用户养成健康的饮水习惯。

1、系统总体设计

本系统由智能水杯端(以下简称水杯端)及人体盐分检测端(以下简称检测端)组成,智能水杯系统框图如图1所示。其中水杯端的主控芯片为STM32F103C8T6,供电电压2.0V~3.6V,一系列的省电模式保证低功耗的要求。检测端的主控芯片为STM32F103ZET6,该芯片的配置十分强,带有外部总线(FSMC),可以用来外扩SRAM和连接LCD等。

压力传感器及电容传感器组成饮水监测系统,通过布置在杯沿的人体电容识别传感器对饮水状态进行识别,通过压力传感器对水的重力进行检测,并通过HX711芯片对数据进行AD转换。OLED显示屛提供了交互界面,并有利于低功耗的设计要求。无线充电模块使水杯端的充电使用更为便利与安全。

基于STM32的饮水提醒水杯及缺水量检测系统

图1 智能水杯系统框图

检测端由TDS传感器、RFID识别模块及WiFi模块组成。TDS传感器量程为2000PPM,满足对尿液盐分稀释后的检测。与磁卡、IC卡等接触式识别技术不同,RFID系统的电子标签与读写器之间无须物理接触即可完成识别,因此它可实现多目标识别、运动目标识别,可在更广泛的场合中应用。

2、软件设计

2.1、喝水量检测算法

水杯端采用电容按键与压力传感器配合执行程序流程以实现精确测定喝水量的功能。其程序流程图如图2所示。

基于STM32的饮水提醒水杯及缺水量检测系统

图2  喝水量检测算法流程图

由电容按键的辅助感知,系统可以得到水杯使用前后的水杯内水量差异,再通过执行相应的差值算法将读数转换成对应的喝水量数据,在传感器读数与真实水量间存在一个比例常数(weight_con),该常数决定了计数值与真实值之间存在的转换比例。

具体计算如式(1):

基于STM32的饮水提醒水杯及缺水量检测系统

其中weight_sense为传感器计数值,weight_real为真实水量值,由于weight_con是一个非线性的常数,其值大小与测量范围相关,因此通过绘制散点图来确定其在日常测量范围内的线性区间及对应常数值大小,如图3所示。

基于STM32的饮水提醒水杯及缺水量检测系统

图3  比例常数散点图

经计算后得到,在测量范围100~500内,比例常数值波动较小,以一个平均常数代替,取weight_con值为431。当变化值小于或大于该范围时,会产生一定的非线性偏差。

2.2、TDS-缺水量测定算法

检测端通过测定尿液中盐类离子的深度来间接测定人体的缺水程度,并据此确定一个基础缺水量并发送至服务器进行下一步的计算。

当人体内盐分过高时,人会感到口干舌燥,严重者会伴有头晕、困倦等其他表现,且人对于机体缺水的感知并不是一个一成不变的过程:当人体处于轻度缺水时,在一个较大范围内的盐分波动带给人的体感是相似的;但当人体处于重度缺水时,人体对盐分的浓度变化更加敏感。基于以上讨论,检测端采用了分梯度式计算方法:

基于STM32的饮水提醒水杯及缺水量检测系统

该算法先对人体缺水状态进行判断,再基于此基础进行下一步的计算,符合人体对于缺水的自然感受规律(非线性感知),在相应范围内效果好于一般的固定式算法。

2.3、网站设计

该网站页面采用HTML、CSS、JavaScript语言编写,后台开发采用PHP语言,数据库采用MySQL搭建。

2.3.1、网站功能设计

网站是饮水数据服务中心,负责向用户提供服务。网站的功能主要包括用户的注册和登录、历史饮水数据查询、饮水数据管理等,系统网站功能结构图如图4所示。

基于STM32的饮水提醒水杯及缺水量检测系统

图4  网站功能结构图

2.3.2、云端通信实现

云端通信是实现硬件与服务器交互功能。通过该功能的实现,饮水数据得以上传,并及时保存。服务器也可以反馈已经校准的建议饮水量。本设计的通信分为两方面:一是水杯端与云服务器的通信,二是检测端与水杯端的通信。

3、系统测试

3.1、饮水记录测试

在开启使用时,系统初始化,OLED记录喝水量值为0mL,所需饮水量为2000mL。在喝水前,通过标准电子称对水杯重量进行人工记录,然后进行真实喝水动作,在动作结束后,记录下喝完之后的水杯重量。此时在显示屏上显示了累计喝水量数据。

在经过多次测试之后,可以得到水杯测量值与实际喝水值之间的相关数据,如表1所示。

基于STM32的饮水提醒水杯及缺水量检测系统

表1  喝水量检测准确度测试

由表1可以得到,本设计在100~500mL之间有较高的测量精度,准确度在95%左右。而当所喝水量过多或过少时,测量准确度会下降,准确度在90%上下浮动。

4、结束语

本文研究并设计实现了基于STM32的饮水提醒水杯及缺水量检测系统。对硬件设计和软件编程进行了相关研究,主要包括系统各部分硬件的选型、核心模块饮水量检测模块的构建、TDS检测算法的设计、云服务器的搭建、整体系统的测试。经测试,水杯端与检测端预期功能基本实现,下一步工作还可以从功能、功耗、成本等方面对本设计进行进一步完善,使该系统适用于更为专业的场合,并进一步为人体健康提供医疗大数据辅助。

标签:STM32,RFID,传感器,
来源:网络整理 作者:Les 时间:2017/12/23 10:29:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐