基于物聯網感知的家居人體健康狀況檢測系統
- 摘要
- 整體框架
- 物聯網模型
- 感知層
- 手臂子系統
- 手持子系統
- 體重子系統
- 傳輸層
- 應用層
- 軟硬體實物圖
- 代碼實作
- MPU6050+HC-SR04=>身高
- 串口獲取不定長資料
摘要
為滿足家居生活中檢測身體健康狀況的需求,鑒于現有的健康檢測系統具有使用環境局限性大、測驗指標不夠完善、不能聯網等缺點,本系統從物聯網感知出發,利用MQTT傳輸協議實作了健康檢測資料傳輸無線化,大大減小了裝置體積的同時實作家庭互聯;使用陀螺儀和超聲波結合的方法測驗身高,解決身高測驗受設備限制的問題;自主設計的系統手臂結構集成血壓,脈搏,血氧和體溫傳感器,實作裝置結構的簡潔化和高集成度, 本系統綜合MySQL資料庫、微控制器技術,3維數字建模等相關知識,集成多種嵌入式傳感器,構建了一個感知身體健康狀況的健康測量系統,經測驗,該系統具有良好的穩定性和高效性,
整體框架

本系統的設計理念共分為三個層面,分別是感知層,傳輸層和應用層,以精確檢測人體基本健康指標資料并記錄為目的出發,本系統選擇了HX711等一系列具有優質功能的芯片,在充分了解其作業原理并學習設計應用這些傳感器后,獲得了體重、高低血壓、血氧、脈搏、體溫和身高資料;在獲得資料后,本系統選擇了低功耗的STM32F103和STM32F407來進行資料的初步處理和傳輸,并通過ESP8266連接上路由器網關后用 MQTT協議(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)將健康資料傳輸到EMQ(Erlang/Enterprise/Elastic MQTT Broker)服務器上,后端Python程式會從EMQ服務器對應主題中取出資料并對資料進行整合分析后存入資料庫中,最后前端程式會將資料庫中的資料渲染在PC端的網頁上,而且有資料折現圖能讓用戶清楚了解自己的身體狀況變化情況,
物聯網模型
感知層
手臂子系統
圖片

電路原理圖

資料處理
當手臂子系統上電開啟之后,STM32F103進行初始化并開始主回圈,主回圈內先判斷選擇模式按鈕是否按下,如果沒有按下,則輪詢UART1和UART2,接收溫度模塊以及血氧模塊的資料進行處理并規整格式后通過UART1發送給ESP8266,如果判斷到選擇模式按鈕按下,停止發送溫度資料和血氧數,開始輪詢UART3血壓模塊的資料進行處理并規整格式后通過UART1發送給ESP8266,當血壓模塊資料感知完畢并且由ESP8266通過路由器發送給EMQ服務器之后,重新開啟UART1和UART2的輪詢和資料發送,

手持子系統
圖片

電路原理圖

資料處理
因為整個系統的資料需要傳輸到后端資料庫中,而資料入庫需要ID索引,而且資料入庫的時機也應該由用戶來決定,因此手持子系統同樣也需要一塊ESP8266,將ID資料,write_enable(是否寫入資料庫標志位)和身高資料發送到服務器中,當后端python程式在EMQ服務器中取到身高和ID資料之后就將該資料寫入程式里的字典中,當程式接收到的write_enable變數為1的時候將字典中的資料寫入資料庫中,作業流程圖如下:

體重子系統
圖片

電路原理圖

資料處理
當體重子系統上電啟動之后,STM32F103進行初始化并接收到初始毛皮重量,主回圈內接受到新的體重資料減去初始毛皮重量,資料處理后通過UART1發送給ESP8266,由ESP8266通過路由器將資料發送至EMQ服務器,

傳輸層
本系統的ESP8266是通過本地路由器的方式來連接網路的,首先需要對ESP8266進行配網,具體操作流程是使用連上了網路的手機掃描配網二維碼,然后ESP8266的配置程式就可以使ESP8266手機連上同一個網路了,至此完成了ESP8266的配網操作,完成了該操作之后,ESP8266就可以通過本地路由器連接上網路,完成ESP8266的網路配置之后,在mqtt_config.h頭檔案里面配置好EMQ服務器的地址以及三個子系統廣播資料的主題,在user_main.c檔案里面配置好串口接收的波特率9600之后,ESP8266就可以接收到各個子系統里面的主控發送給ESP8266的資料在EMQ服務器中進行廣播了,


應用層
Python后端程式會不停的在PC后臺運行,并對EMQ服務器中正在廣播的資料進行一個獲取,具體方案就是Python腳本先匯入PyMySQL和paho.mqtt.client這2個關鍵的庫,pymysql支持python的資料庫操作,paho.mqtt.client支持python在EMQ服務器中捕捉相應主題下面廣播的資料,在匯入這2個包和一些必要的開發包之后在主函式里面開3個執行緒,分別在服務器的height_pub,weight_pub,lzhpub主題中獲取感知層中各個ESP8266通過路由器發送的資料

除了舒張壓,收縮壓,脈搏之外,其他的資料是一直在服務器中進行廣播的,因此只要遇到手持子系統發送的write_enable為1時,python腳本就會將資料寫入資料庫中,而血壓和脈搏模塊則是在接收到資料時,python腳本就會將其寫入資料庫中,程式如下圖示:


web頁面顯示
本系統使用的資料庫管理系統每隔1s將資料庫中的資料渲染到PC端的web網頁上,為了簡化前端的操作,本系統在PC機上建立了本地資料庫,前端會從本地資料庫(localhost)中取出用戶的身體健康資料并且渲染在前端頁面上,并且該資料庫管理系統還可以繪制相關資料的折線圖,


軟硬體實物圖




代碼實作
MPU6050+HC-SR04=>身高
鏈接: https://blog.csdn.net/weixin_43454320/article/details/108635552 .
串口獲取不定長資料
鏈接: https://blog.csdn.net/weixin_43454320/article/details/108458631.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226953.html
標籤:其他
