曾群期,王 毓,黄泽佳,殷惠莉,王卫星
(华南农业大学 电子工程学院,广东 广州 510642)
基于STM32的饮水提醒水杯及缺水量检测系统
曾群期,王 毓,黄泽佳,殷惠莉,王卫星
(华南农业大学 电子工程学院,广东 广州 510642)
设计了一种基于STM32的饮水提醒水杯及缺水量检测系统,该系统能实现饮水量的实时记录并上传至云端服务器以供查询,同时根据人体盐分流失量,利用内置算法计算出人体的需水量并进行饮水提醒。饮水量检测模块通过电容传感器可智能识别饮水动作,采用压力传感器计算饮水量,并将HX711采样的数值进行AD转换,用OLED屏进行显示。人体盐分检测模块可供多个用户使用,采用RFID进行身份识别,通过TDS传感器计算人体盐分流失,进而计算出人体需水量,并通过云端服务器发送至水杯提醒用户进行饮水。在云端服务器上搭建了与水杯配套使用的网站,开发语言采用PHP,数据库搭建采用MySQL实现。
STM32;饮水提醒;饮水检测;盐分检测 ;RFID识别
随着智能硬件的高速发展,市面上出现了一系列智能水杯。但大部分水杯都是根据固定饮水量对用户进行饮水提醒,这样的方式忽视个体差异。而真正的健康饮水方式是根据身体需水量,来对饮水进行规划。尿液生化分析在世界医学领域作为疾病诊断、疾病预防和健身普查方面的应用越来越广泛[1]。在全球享有盛誉的美国克利夫兰诊所(Cleveland Clinic)推出过一个“尿液比色卡”,形象地指导人们根据尿液颜色来判断缺水的程度。同样,尿液中的盐分浓度也可以作为一个人体缺水程度的相关指征。
为了根据不同人的身体机能的差异对用户进行饮水提醒,设计了一款基于人体盐分流失检测进行饮水提醒的智能水杯。本设计通过用户基础信息计算给出建议饮水量,并通过对人体盐分流失检测来进一步校正建议饮水量,实现智能提醒用户饮水。其主要以单片机STM32系列芯片、压力传感器、压敏传感器等为硬件基础,通过软件编程实现记录数据,绘制相应的饮水曲线,对饮水习惯进行评价,定量提醒用户饮水等功能,使用户养成健康的饮水习惯。
本系统由智能水杯端(以下简称水杯端)及人体盐分检测端(以下简称检测端)组成,智能水杯系统框图如图1所示。其中水杯端的主控芯片为STM32F103C8T6,供电电压2.0 V~3.6 V,一系列的省电模式保证低功耗的要求。检测端的主控芯片为STM32F103ZET6,该芯片的配置十分强,带有外部总线(FSMC),可以用来外扩SRAM和连接LCD等[2]。压力传感器及电容传感器组成饮水监测系统,通过布置在杯沿的人体电容识别传感器对饮水状态进行识别,通过压力传感器对水的重力进行检测,并通过HX711芯片对数据进行AD转换。OLED显示屛提供了交互界面,并有利于低功耗的设计要求。无线充电模块使水杯端的充电使用更为便利与安全。
图1 智能水杯系统框图
检测端由TDS传感器、RFID识别模块及WiFi模块组成。TDS传感器量程为2 000 PPM,满足对尿液盐分稀释后的检测。与磁卡、IC卡等接触式识别技术不同,RFID系统的电子标签与读写器之间无须物理接触即可完成识别,因此它可实现多目标识别、运动目标识别,可在更广泛的场合中应用[3]。
水杯端和检测端所获取的数据均由ESP8266 WiFi芯片进行上传及下载。ESP8266是一个完整且自成体系的WiFi网络解决方案,能够独立运行,也可以作为从机搭载于其他主机MCU运行。ESP8266高度片内集成,包括天线开关balun、电源管理转换器,因此仅需要极少的外部电路[4]。
2.1喝水量检测算法
图2 喝水量检测算法流程图
水杯端采用电容按键与压力传感器配合执行程序流程以实现精确测定喝水量的功能。其程序流程图如图2所示。
由电容按键的辅助感知,系统可以得到水杯使用前后的水杯内水量差异,再通过执行相应的差值算法将读数转换成对应的喝水量数据,在传感器读数与真实水量间存在一个比例常数(weight_con),该常数决定了计数值与真实值之间存在的转换比例。具体计算如式(1):
(1)
其中weight_sense为传感器计数值,weight_real为真实水量值,由于weight_con是一个非线性的常数,其值大小与测量范围相关,因此通过绘制散点图来确定其在日常测量范围内的线性区间及对应常数值大小,如图3所示。
图3 比例常数散点图
经计算后得到,在测量范围100~500内,比例常数值波动较小,以一个平均常数代替,取weight_con值为431。当变化值小于或大于该范围时,会产生一定的非线性偏差。
2.2 TDS-缺水量测定算法
检测端通过测定尿液中盐类离子的深度来间接测定人体的缺水程度,并据此确定一个基础缺水量并发送至服务器进行下一步的计算。
当人体内盐分过高时,人会感到口干舌燥,严重者会伴有头晕、困倦等其他表现,且人对于机体缺水的感知并不是一个一成不变的过程:当人体处于轻度缺水时,在一个较大范围内的盐分波动带给人的体感是相似的;但当人体处于重度缺水时,人体对盐分的浓度变化更加敏感。基于以上讨论,检测端采用了分梯度式计算方法:
(2)
该算法先对人体缺水状态进行判断,再基于此基础进行下一步的计算,符合人体对于缺水的自然感受规律(非线性感知),在相应范围内效果好于一般的固定式算法。
同时,为了避免TDS传感器在工作过程中可能发生的腐蚀、受损短路等情况,本设计采用先取样稀释后进行测量的工作方式,将所取得的尿液样品先进行稀释再计算,可以有效延长传感器的使用寿命。
2.3网站设计
由于水杯的目标用户为消费者,出于易用性的考虑,开发了一个网站与水杯及系统配套使用。该网站页面采用HTML、CSS、JavaScript语言编写,后台开发采用PHP语言,数据库采用MySQL搭建[5〗。
2.3.1网站功能设计
网站是饮水数据服务中心,负责向用户提供服务。网站的功能主要包括用户的注册和登录、历史饮水数据查询、饮水数据管理等,系统网站功能结构图如图4所示。
图4 网站功能结构图
(1)用户注册和登录功能
用户注册功能为网站访问者提供注册用户的服务,填写个人信息,网站会根据智能饮水算法为用户制定饮水计划;填写用户水杯ID,可将水杯与用户账号配对,系统将饮水提醒推送至水杯,水杯也会将用户饮水数据上传至用户专属数据库供用户查询[6]。
用户登录功能:验证用户的信息是否合法,以及验证用户是否属于特定的身份。登录的用户界面分为管理员界面和用户界面两种。用户界面用于为用户提供服务,管理员界面主要进行饮水数据的管理。
(2)历史饮水数据查询
水杯自动将每次的饮水量上传至服务器,网站展示页自动绘制饮水曲线,可按日期查询每日饮水总量及饮水计划完成度。
(3)饮水数据管理
管理员拥有所有用户饮水数据库管理权限,可对数据进行查询、删除等一系列操作。同时,用户的需水量会由人体盐分监测端转发至服务器,再由服务器发送至水杯端提醒用户。
2.3.2云端通信实现
云端通信是实现硬件与服务器交互功能。通过该功能的实现,饮水数据得以上传,并及时保存。服务器也可以反馈已经校准的建议饮水量。本设计的通信分为两方面:一是水杯端与云服务器的通信,二是检测端与水杯端的通信。
当水杯端向云服务器上传饮水数据时,水杯端与云服务器建立TCP连接,通过超文本传输协议(Hypertext Transfer Protocol, HTTP)采用POST方法向水杯发送包含饮水数据的报文,云服务器成功接收到报文以后将数据存储入数据库中[7]。
当检测端向云服务器发送缺水量时,同样采用POST方法,而云服务器接收到缺水量向水杯发送饮水提醒时,是采用水杯向云服务器发送GET请求的方法来获取数据。采用该方法的优点在于,不需要知道水杯端的IP地址,水杯端也可以接收到来自云服务器的数据。
3.1饮水记录测试
通过模拟真实饮水动作对水杯端的饮水量测量功能进行测试。
在开启使用时,系统初始化,OLED记录喝水量值为0 mL, 所需饮水量为2 000 mL。在喝水前,通过标准电子称对水杯重量进行人工记录,然后进行真实喝水动作,在动作结束后,记录下喝完之后的水杯重量。此时在显示屏上显示了累计喝水量数据。
在经过多次测试之后,可以得到水杯测量值与实际喝水值之间的相关数据,如表1所示。
表1 喝水量检测准确度测试
由表1可以得到,本设计在 100~500 mL之间有较高的测量精度,准确度在95%左右。而当所喝水量过多或过少时,测量准确度会下降,准确度在 90%上下浮动。
3.2电容传感器测试
水杯沿的电容传感器的触发,对检测饮水量起关键作用。通过3组测试人对水杯饮水采集各200次,即采样样本为600。其中未触发次数13次,采样识别率达97.83%。各组测试数据如表2所示。
表2 电容传感器识别测试
由表2可以得到,本设计的电容触发识别饮水状态方案具有较高的识别率,可对日常饮水动作进行较为精准的检测。
本文研究并设计实现了基于STM32的饮水提醒水杯及缺水量检测系统。对硬件设计和软件编程进行了相关研究,主要包括系统各部分硬件的选型、核心模块饮水量检测模块的构建、TDS检测算法的设计、云服务器的搭建、整体系统的测试。经测试,水杯端与检测端预期功能基本实现,下一步工作还可以从功能、功耗、成本等方面对本设计进行进一步完善,使该系统适用于更为专业的场合,并进一步为人体健康提供医疗大数据辅助。
[1] 艾红梅,王昌富. 尿液分析的现状与展望[J]. 国外医学: 临床生物化学与检验学分册, 2005, 26(4): 256.
[2] 张洋,刘军,严汉宇.原子教你玩STM32(库函数版)[M].北京:北京航空航天大学出版社,2013.
[3] 沈宇超, 沈树群. 射频识别技术及其发展现状[J]. 电子技术应用, 1999,25(1): 1-5.
[4] 范兴隆. ESP8266在智能家居监控系统中的应用[J]. 单片机与嵌入式系统应用, 2016,16(9): 52-56.
[5] WELLING L, THOMSON L. PHP和MySQL Web开发[M].武欣,译.北京:机械工业出版社,2009.
[6] 罗启强. 基于PHP+MySQL的高校教务管理系统的设计与实现[D].吉林: 吉林大学,2016.
[7] GOURLEY D, TOTTY B, SAYER M. HTTP权威指南[M]. 陈涓,赵振平,译.北京:人民邮电出版社, 2012.
STM32 - based water-drinking warning cup and water shortage detection system
Zeng Qunqi, Wang Yu, Huang Zejia, Yin Huili, Wang Weixing
(College of Electronic Engineering, South China Agricultural University, Guangzhou 510642, China)
A water-drinking reminder cup and water shortage detection system based on STM32 is designed. The system can realize the real-time record of drinking water and upload it to the cloud server for inquiry. At the same time, according to the loss of human salt, the built-in algorithm is used to calculate the body’s water requirements and to remind the human body to drink water. Drinking water detection module through the capacitive sensor can identify the drinking movement intelligently. Using pressure sensors to calculate the amount of water, then the value of the HX711 AD conversion with OLED screen display. Human salt detection module can be used by multiple users, using RFID for identification, through the TDS sensor to calculate the loss of human salt, and then calculaing the human water demand, through the cloud server to remind the user to drink water. In the cloud server the website is set up supporting the use of the cup, which development language is PHP, database uses MySQL to build.
STM32; water-drinking reminder; drinking water detection; salt detection; RFID identification
TN919.72; TP273
:A
10.19358/j.issn.1674- 7720.2017.17.029
曾群期,王毓,黄泽佳,等.基于STM32的饮水提醒水杯及缺水量检测系统[J].微型机与应用,2017,36(17):99-101,105.
2017-03-12)
曾群期(1997-),男,本科在读,主要研究方向:嵌入式硬件开发。
王毓(1996-),男,本科在读,主要研究方向:通信与软件开发。
殷惠莉(1975-),通信作者,女,硕士,讲师,主要研究方向:无线通信、机器视觉。E-mai:huiliyin@scau.edu.cn。