暑假期間留校與兩名隊(duì)友一起參加廣東省大學(xué)生電子設(shè)計(jì)競賽“健康電子”主題的比賽,經(jīng)過兩個(gè)月不懈努力,功夫不負(fù)有心人,作品也獲得了廣東省一等獎(jiǎng),現(xiàn)在將作品分享出來跟大家一起交流,也希望大家能多多給出修改意見。
“孤寡老人的健康監(jiān)測儀”作品主要由一個(gè)可佩帶的手表和一個(gè)手機(jī)APP組成,另外還有一個(gè)測血壓的外接設(shè)備,手表的外殼是通過3D打印完成的。
我們的作品的想法是,孤寡老人在家里只需要帶著手表,而家人在外面通過APP就可以對老人進(jìn)行事實(shí)監(jiān)測,手表對于老人來說并不需要進(jìn)行任何操作,可以把它當(dāng)成一個(gè)正常的手表來使用。
我將把所有源碼和原理圖分享出來。
作品采用的STM32F405作為主控芯片,沒有任何外部擴(kuò)展FLASH或者SRAM
作品的功能有:
1.測心率、體溫和血壓
2.測摔倒并報(bào)警
3.鏈接WIFI
4.提醒吃藥
5.鐘表功能
6.電容觸摸,手勢滑動(dòng),手勢解鎖,翻腕解鎖等
7.體征異常報(bào)警功能
8.一鍵開關(guān)機(jī),一鍵解鎖
9.電量監(jiān)測
硬件組成:
1. 1.54寸 240*240分辨率LCD顯示屏
2. 1.54寸電容觸摸屏
3. MPU6050
4.有人網(wǎng)絡(luò)的WIFI模塊
5.MXL90615溫度傳感器
6.SON7015心率傳感器
7.TP4056電源芯片
主要軟件的內(nèi)容:
1.系統(tǒng)采用UCOS/II
2.界面使用的是EmWin
3.手機(jī)APP和服務(wù)器,使用的是JAVA編寫
總體介紹內(nèi)容介紹:整個(gè)手表端的設(shè)計(jì),為了追求手表體積的盡可能小,除了WIFI模塊外,其他地方都沒有使用任何現(xiàn)成模塊,元器件的規(guī)格也都是最小規(guī)格的,外觀是通過3D打印來弄的。一些底層程序是直接用原子哥的,上層大多數(shù)是根據(jù)在自己的需求寫的。
網(wǎng)絡(luò)部分:手表上的WIFI鏈接是使用smartlink功能,通過手機(jī)APP來進(jìn)行鏈接的,與服務(wù)器通信部分采用的websocket協(xié)議,實(shí)現(xiàn)了全雙工實(shí)時(shí)通信。服務(wù)器是買的,其中websocket協(xié)議當(dāng)時(shí)做的時(shí)候幾乎找不到有在單片機(jī)上實(shí)現(xiàn)的資料,所以都是自己一點(diǎn)一點(diǎn)試出來的。 體征測量部分:心率部分由于傳感器的問題,測量條件有點(diǎn)苛刻,干擾對其的影響較大,我們通過示波器觀察規(guī)律,編寫濾波算法將心率測量結(jié)果盡可能的穩(wěn)定。
體溫監(jiān)測,數(shù)據(jù)并沒有做什么特殊處理,實(shí)際使用過程中發(fā)現(xiàn)體溫測量受環(huán)境影響較大。
血壓測量,血壓是通過一個(gè)獨(dú)立于手表之外的設(shè)備進(jìn)行測量的,設(shè)備由手表控制,并把測量數(shù)據(jù)返回到手表,由于手表上已經(jīng)有一個(gè)WIFI了,因此血壓與手表的數(shù)據(jù)傳輸直接使用了WIFI進(jìn)行傳輸。
測摔倒功能,測摔倒算法是自己編寫的,原理并不復(fù)雜,但是效果還是很不錯(cuò)的(誤判少),主要是通過監(jiān)測加速度值來判斷是否摔倒的。
體征測量中,心率和體溫是可以主動(dòng)和被動(dòng)進(jìn)行的,手邊會每過一段時(shí)間自己檢測一次,或者通過按鈕實(shí)現(xiàn)一次測量,測量會持續(xù)30s,30s內(nèi)一旦測量成功就終止測量。
屏幕和顯示:屏幕我們是在淘寶上買的1.54寸240*240分辨率的LCD屏幕,由于考慮到老人的使用問題,我們后來又找了一款1.54寸的電容觸摸屏,通過工業(yè)雙面膠將兩者貼合在一起,本來想購買已經(jīng)貼合好的,無奈淘寶上幾乎沒人賣我們想要的。
手表主要由三個(gè)界面,1.時(shí)鐘界面 2.測量界面 3.WIFI鏈接界面
整個(gè)手表上只有一個(gè)開關(guān)機(jī)和解鎖屏的按鍵,界面內(nèi)容里也是沒有操作按鍵的,因此界面的切換就需要通過手勢來判斷,觸摸芯片是有支持手勢功能的,無奈不知道為何一直打開不了那個(gè)功能,后來沒辦法只能直接編寫算法實(shí)現(xiàn)手勢操作功能,主要的手勢功能有1.向左右切換界面 2.向上下進(jìn)行鎖屏和解鎖
界面使用的是emwin5.28版的,用的功能都是一些最基礎(chǔ)的功能。
手表還可以實(shí)現(xiàn)翻腕解鎖功能,這里是通過MPU6050解算出歐拉角實(shí)現(xiàn)的。
觸摸屏上剛好有一個(gè)小孔,我們在那里裝了一個(gè)光敏電阻,用來實(shí)現(xiàn)屏幕的亮度自動(dòng)調(diào)節(jié)。
報(bào)警功能:通過手機(jī)APP設(shè)置報(bào)警功能后,一旦手表判斷體征異常就會發(fā)出報(bào)警震動(dòng),當(dāng)佩戴者點(diǎn)擊確定后,手機(jī)APP端會自動(dòng)報(bào)警。為了防止誤判,體征異常是否發(fā)出報(bào)警信息這里需要點(diǎn)擊確定或者取消。當(dāng)佩戴者一定時(shí)間內(nèi)都沒有點(diǎn)擊確認(rèn)或者取消時(shí),手表會認(rèn)為佩戴者已經(jīng)無法正常操作,并自動(dòng)向APP發(fā)送報(bào)警信 息,通知手機(jī)端。
手邊還有提醒吃藥功能,使用者通過使用手機(jī)APP可以設(shè)置3個(gè)吃藥時(shí)間點(diǎn),一旦時(shí)間點(diǎn)到了之后,手表就會自動(dòng)發(fā)出吃藥提醒。
用戶管理: 手機(jī)APP通過掃描手表上的二維碼與手機(jī)進(jìn)行綁定,手機(jī)APP也需要進(jìn)行注冊才可以進(jìn)行登錄。一個(gè)手機(jī)只可以操控一個(gè)手表。 錯(cuò)誤處理:以上的功能很多都是基于網(wǎng)絡(luò)鏈接,但是網(wǎng)絡(luò)鏈接有時(shí)候并不是很穩(wěn)定的,因此我們在編寫軟件的過程中也著重對這一塊進(jìn)行了處理,但發(fā)生斷開連接時(shí),手表會自動(dòng)進(jìn)行重連,當(dāng)重連失敗時(shí),手邊會重啟WIFI模塊再進(jìn)行嘗試,并且提示佩戴者,當(dāng)前已經(jīng)無法連接到手機(jī)APP,通過這樣處理,盡可能的使手表 能夠正常工作,佩戴者無需過多的對手表進(jìn)行操作。
外觀:外觀我們是通過3D打印來制作的,整個(gè)外殼有一個(gè)按鈕,和兩跟充電針(手表的充電電路我們是外置的,通過接觸的方式來進(jìn)行手表充電),外觀有一個(gè)圓孔和長方形孔,用來放置溫度傳感器和心率傳感器
視頻地址:
https://v.youku.com/v_show/id_XMTgxOTA3NTc3Ng==.html