曾群期,王 毓,黃澤佳,殷惠莉,王衛星
(華南農業大學 電子工程學院,廣東 廣州 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。