醫囑專用手環不僅能測量心率,還可以與醫院聯動,讓畢業設計有更加實用的價值。
下面就介紹下設計細節,方便感興趣的同學自己動手。
功能描述
作為醫囑手環,除了有手環的常規功能之外,還有和醫院的互動功能:
心率、血氧監測使用MAX30102模塊,算法是FFT快速傅立葉變換,借鑑了之前做的推送里的代碼(借鑑代碼在這裡:自製簡易血氧心率儀STM32+MAX30100),同時心率、血氧信息會通過8266WiFi發送給上位機,在動態網頁上實時顯示。
RFID識別藥品通過按鍵選擇OLED螢幕上的「核驗」功能進行核驗,核驗的過程分為核驗RFID標籤扇區密碼,讀取相應扇區存放的數據,再進行字符串對比。如果讀出的字符串和手環內部設置的患者編號不同,LED紅燈亮起,OLED顯示「核驗錯誤」,同時蜂鳴器進行報錯,直到用戶按下確定鍵。核驗正確則亮綠燈,延時2s消失。同時核驗記錄會通過8266WiFi發送給上位機。注意:要先在RFID標籤相應扇區里寫入信息接收通知根據信息種類分成手術通知、服藥提醒和請家屬來手術室。當通過8266WiFi接受到不同字符串時,會在OLED螢幕上顯示相應內容。
硬體組成
手環的全部晶片包括:
主控選擇STM32F103VET6。手環所需IO口不多,所以主控換成C8T6也行。
通信選擇8266WIFI是方便組網,基本手機開個熱點就行,後期如果希望把上位機動態網頁放在網絡上,或者想在手機上做個相應的app,8266WiFi也更容易接入,注意要選3.3V供電的模塊。
讀寫RFID標籤使用的是MFRC522,相比於經典的RC522,在體積上縮小很多,但是其他包括指令、頻率、時序都沒發生變化,因為做的是手環(雖然現在做的比較丑),所以對使用模塊大小是越小越好。RFID標籤沒使用自帶的復旦M1卡,而是買了不幹膠標籤,方便黏在藥瓶上。血氧模塊使用的MAX30102,是之所以選擇MAX30102,是因為它是目前最普遍的血氧模塊,接口簡單,使用IIC,例程也很容易找。而pulsesensor需要先經過AD轉換再進行計算。
程序流程
主程序流程圖:
程序一共設置了兩個flag,一個是表示螢幕和目前所在時間的scflag位,另一個是rflag位,用於接收中斷。
點擊可以放大
剛開始寫的程序中,把scflag相應執行的程序放在主程序,中斷只改變scflag值。主程序先判斷scflag位,再執行相應程序,但是由於心率計算時間一般比較長,需要好幾秒,經常會出現返回斷點後要過兩三秒才會出現相應畫面。所以,後面把相應程序全部放在中斷里。點擊可以放大上圖是接收中斷的函數,因為異步通信是一幀幀接收,所以為了防止在使用netassist調試時不小心按錯字符發送,我規定了一個頭「rv」,只有當前兩位字符是「rv」,單片機才會將以下接收的四個字符存儲在字符串里。四個字符接受完後,就選擇執行相應命令,具體格式如下表。
軟體相關的代碼開源給大家繼續完善補充,在「達爾聞說」微信回覆:醫囑手環,獲取。
後續項目升級
醫囑手環的功能還可以更強大。有些疾病是可以通過連續性心率監測診斷,例如原發性高血壓在初期和後期心率會有增加10~15%,那麼通過長期的心率監測可以起到預警作用。另一個構想是添加一張sd卡,用來存儲心率數據,然後將一個人長期以來的心率讀出來,運用現在已經找到的一些心率模型,來判斷是否具有某些疾病的心率特徵。
要實現上述的功能,有個關鍵問題,max30102模塊的測量數據是否符合目前疾病心率模型的標準,還待繼續考量。
說了這麼多,大家記得留意下方評論第一條(或者私信我)有干貨~