多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)_第1頁(yè)
多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)_第2頁(yè)
多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)_第3頁(yè)
多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)_第4頁(yè)
多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)-1-第1章緒論1.1研究背景及意義隨著經(jīng)濟(jì)的迅猛發(fā)展,人們對(duì)健康的關(guān)注度與日俱增,如何快速便捷地監(jiān)測(cè)自身的身體健康狀況,及時(shí)了解身體的各項(xiàng)指標(biāo)參數(shù)就顯得尤為重要REF_Ref9793\r\h[1]。醫(yī)院檢測(cè)比較全面但耗時(shí)較久,人們?cè)诳旃?jié)奏的社會(huì)生活中,往往并沒(méi)有太多時(shí)間等待做各項(xiàng)檢測(cè),同時(shí)一些基礎(chǔ)的檢測(cè)完全可以通過(guò)便攜式智能健康檢測(cè)產(chǎn)品進(jìn)行測(cè)量,檢測(cè)方式由傳統(tǒng)的去醫(yī)院排隊(duì)檢測(cè)逐步發(fā)展到社區(qū)和家庭中自行檢測(cè),部分醫(yī)療檢測(cè)儀器也慢慢地從醫(yī)用發(fā)展到家用,故而便攜式健康檢測(cè)產(chǎn)品應(yīng)運(yùn)而生REF_Ref9832\r\h[2]。據(jù)中國(guó)市場(chǎng)調(diào)研在線網(wǎng)2018—2025年中國(guó)家用醫(yī)療器械市場(chǎng)深度調(diào)查研究與發(fā)展趨勢(shì)分析報(bào)告,中國(guó)家庭醫(yī)療器械產(chǎn)品的市場(chǎng)規(guī)模從2014年的176.6億元增加到2018年的近600億元REF_Ref11527\r\h[3],現(xiàn)階段我國(guó)公共醫(yī)療資源還是比較短缺,解決現(xiàn)狀的有效途徑就是加強(qiáng)對(duì)慢性病的日常監(jiān)測(cè),于是家用醫(yī)療監(jiān)測(cè)產(chǎn)品便得到了快速發(fā)展。根據(jù)最近的數(shù)據(jù)顯示,醫(yī)療行業(yè)在我國(guó)不斷的興起,針對(duì)醫(yī)療器械市場(chǎng)需求急劇增加,因此,市場(chǎng)增加刺激醫(yī)療器械的快速迭代,隨著技術(shù)的不斷進(jìn)步,醫(yī)療器械出現(xiàn)了便攜式器件,便攜式健康檢測(cè)產(chǎn)品逐漸朝著智能化、云端化的方向發(fā)展,未來(lái)的便攜式健康檢測(cè)產(chǎn)品,一定有著更廣闊的發(fā)展空間REF_Ref11602\r\h[4]。1.2研究現(xiàn)狀伴隨著生活質(zhì)量的改善,人們對(duì)于健康狀態(tài)十分的重視,特別是近些年,高血壓、糖尿病等基礎(chǔ)疾病的激增,對(duì)人們的健康有很大的關(guān)系,尤其是針對(duì)血壓、心率、體溫等生理指標(biāo),是日常生活最重視的三個(gè)生理指標(biāo),這些指標(biāo)也是一些重大疾病的前兆,因此對(duì)人體生理指標(biāo)的日常監(jiān)測(cè)技術(shù)開(kāi)發(fā)就顯得非常的重要REF_Ref11628\r\h[5]。目前,學(xué)者開(kāi)始研究智能化的可穿戴設(shè)備,不僅能夠隨時(shí)隨地采集信息,而且還方便,不會(huì)給人們帶來(lái)負(fù)擔(dān),一些學(xué)者們集中于嵌入式開(kāi)發(fā)技術(shù),穿戴式醫(yī)療設(shè)備的開(kāi)發(fā)在國(guó)內(nèi)有三種發(fā)展趨勢(shì)。國(guó)內(nèi)針對(duì)其研究有小米、蘋果公司生產(chǎn)制造的智能手表手環(huán)等等,以及一些企業(yè)自己成立監(jiān)護(hù)中心目前這些是被廣泛應(yīng)用的,近些年,隨著技術(shù)的進(jìn)步,研究者加入了遠(yuǎn)程控制功能,當(dāng)系統(tǒng)檢測(cè)有危險(xiǎn)信號(hào),可以實(shí)現(xiàn)遠(yuǎn)程的提醒[6]。首先人體健康監(jiān)護(hù)系統(tǒng)是非介入的,同時(shí)是無(wú)創(chuàng)的,正是因?yàn)橛辛诉@些優(yōu)勢(shì),使得一些佩戴者們沒(méi)有心理壓力,人體健康監(jiān)護(hù)系統(tǒng)擁有市場(chǎng),將可穿戴設(shè)備與手機(jī)等終端進(jìn)行通信[7]。在國(guó)外,美國(guó)首先發(fā)明了可穿戴式設(shè)備,其中超過(guò)80%的人擁有健康設(shè)備REF_Ref22323\r\h[8]。這群人對(duì)新技術(shù)很好奇,而且受過(guò)良好的教育。國(guó)外,可穿戴設(shè)備在美國(guó)市場(chǎng)的發(fā)展是最快和最廣泛的REF_Ref22323\r\h[8]。智能手表使用最普遍和最受個(gè)人需求的REF_Ref22323\r\h[8],45%的人選擇了智能腕帶,30%的人選擇了智能手表REF_Ref22323\r\h[8]??梢钥闯龆寂c健康有關(guān),這直接表明了個(gè)人對(duì)健康的重視程度REF_Ref22323\r\h[8]。1.3研究?jī)?nèi)容及章節(jié)安排本課題基于嵌入式技術(shù)、傳感器技術(shù)為基礎(chǔ),針對(duì)目前人體健康檢測(cè)的現(xiàn)狀,進(jìn)行設(shè)計(jì),實(shí)際了一款基于單片機(jī)的多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì),利用單片機(jī)實(shí)現(xiàn)控制并結(jié)合相關(guān)傳感器采集人體健康信息,運(yùn)用wifi技術(shù)對(duì)收集信號(hào)信息進(jìn)行無(wú)線傳輸,利用GPS進(jìn)行定位,通過(guò)手機(jī)APP向用戶反映出監(jiān)測(cè)結(jié)果,提前預(yù)警。論文共分六章:第一章主要從課題研究的意義及目的出發(fā),結(jié)合近些年國(guó)內(nèi)外的發(fā)展趨勢(shì)進(jìn)行分析,提出本課題研究的主要內(nèi)容。第二章圍繞基于多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)的具體需求,對(duì)比控制系統(tǒng)的方案,提出了總體設(shè)計(jì)方案。第三章就多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)的硬件設(shè)計(jì)電路圖及芯片原理進(jìn)行介紹,主控芯片與相關(guān)功能模塊功能,搭建出整體系統(tǒng)架構(gòu)。第四章建立了多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)軟件,根據(jù)整個(gè)設(shè)計(jì)的流程圖,分析模塊化程序流程圖,最后對(duì)程序進(jìn)行編譯,驗(yàn)證編寫沒(méi)有語(yǔ)法錯(cuò)誤。第五章將程序下載至制作好的實(shí)物中,對(duì)各個(gè)功能逐一進(jìn)行調(diào)試。第六章對(duì)本課題的研究作了總結(jié),得出研究結(jié)論。

第2章系統(tǒng)總體結(jié)構(gòu)2.1系統(tǒng)結(jié)構(gòu)系統(tǒng)硬件部分包括單片機(jī)STM32、OLED顯示屏、人體體溫檢測(cè)模塊、血壓監(jiān)測(cè)模塊、心率血氧?傳感器模塊、運(yùn)動(dòng)狀態(tài)傳感器模塊、GPS、?通信模塊、蜂鳴器報(bào)警等。實(shí)現(xiàn)的功能如下:1.采用心率傳感器、體溫檢??測(cè)模塊、血壓、運(yùn)動(dòng)狀態(tài)進(jìn)行數(shù)據(jù)采集傳輸給單片機(jī)進(jìn)行分析處理;2.能夠利用單片機(jī)對(duì)信號(hào)進(jìn)行分析處理,判斷心率是否超過(guò)閾值并對(duì)佩戴者是否失去平衡進(jìn)行分析處理;3.可通過(guò)蜂鳴器進(jìn)行警報(bào);4.可通過(guò)WiFi遠(yuǎn)程APP模塊接收遠(yuǎn)程信號(hào);5.在佩戴者心率、體溫超過(guò)閾值時(shí)通過(guò)蜂鳴器引起周圍人的注意同時(shí)給設(shè)定好的手機(jī)號(hào)發(fā)送信息;6.能通過(guò)GPS定位模塊能讓人第一時(shí)間知道佩戴者位置趕來(lái)救援;該該系統(tǒng)由信息接收模塊、控制模塊、信息處理模塊組成。數(shù)據(jù)收集主要收集心率,溫度等數(shù)據(jù);體溫和運(yùn)動(dòng)狀態(tài)等數(shù)據(jù)的收集,以MCU為核心的控制模塊,以蜂鳴器為核心的執(zhí)行模塊。圖2.1結(jié)構(gòu)圖2.2方案選擇2.2.1單片機(jī)的選擇方案一:系統(tǒng)控制采用51單片機(jī)。51單片機(jī)是一種小型、低功耗、高可靠性的集成電路,目前應(yīng)用最為廣泛的單片機(jī),應(yīng)用靈活,使用方便,這是因?yàn)槠鋬?nèi)部結(jié)構(gòu)中具有完善的總線專用寄存器,除此之外,在尋址時(shí),RAM區(qū)內(nèi)的地址區(qū)間具有雙重功能,但其缺點(diǎn)就在于這款單片機(jī)的運(yùn)行速度較慢,并且容易損壞芯片。方案二:系統(tǒng)控制采用32單片機(jī)。STM32F103C8T6型號(hào)的芯片,不僅能有效的增強(qiáng)容量,而且其屬于32位的ARM內(nèi)核,接口主要有USB接口、CAN接口、定時(shí)器接口、ADC接口等REF_Ref7548\r\h[9]。其TISC內(nèi)核性能在ARM?Architecture?-M3系列中屬于較高性能的,采用72MHz的工作頻率,配備高速存儲(chǔ)器,增強(qiáng)型的多個(gè)I/O端口,同時(shí)外設(shè)與兩個(gè)APB總線連接REF_Ref7548\r\h[9]。設(shè)備類型主要有兩個(gè)12位的ADC,三個(gè)通用類16位的定時(shí)器,以及一個(gè)PWM定時(shí)器,還有三個(gè)USART接口和一個(gè)USB接口與CAN接口REF_Ref7548\r\h[9]。經(jīng)過(guò)對(duì)比分析,本系統(tǒng)選擇方案二,STM32單片機(jī)能夠滿足本系統(tǒng)設(shè)計(jì)功能需求。2.2.2溫度檢測(cè)模塊的選擇方案一:采用DHT11數(shù)字溫度傳感器采集。DHT11數(shù)字溫度傳感器是一種能夠準(zhǔn)確檢測(cè)到人體溫度變化和環(huán)境濕度狀況的傳感器它可以將采集到的信息校準(zhǔn)后轉(zhuǎn)化成數(shù)字量直接輸出。它內(nèi)部一共有4個(gè)引腳。結(jié)構(gòu)非常的簡(jiǎn)單。主要產(chǎn)品應(yīng)用到了數(shù)字影像采集網(wǎng)絡(luò)技術(shù)和圖像傳感器技術(shù),具有著極高穩(wěn)定的運(yùn)行可靠性能和具有長(zhǎng)期使用的良好穩(wěn)定性能力的突出特點(diǎn)。通過(guò)和控制器相連可以測(cè)溫濕度。該傳感器信號(hào)響應(yīng)頻率快,抗干擾能力比較強(qiáng),性價(jià)比相對(duì)較高。具有超長(zhǎng)的信號(hào)傳輸距離,且超低能耗。方案二:采用DS18B20數(shù)字溫度傳感器采集。DS18B20溫度傳感器,其體積較小并且引腳數(shù)量少,因此在后續(xù)系統(tǒng)組裝時(shí)能夠便捷地將其安裝到系統(tǒng)內(nèi)部,與DHT11溫度傳感器相比,這款傳感器是將采集到的信息通過(guò)數(shù)字信號(hào)的方式傳輸?shù)酵饨?,并且精度較高,其常被應(yīng)用于數(shù)字測(cè)溫或控制領(lǐng)域。根據(jù)上述對(duì)兩種傳感器進(jìn)行分析,本系統(tǒng)設(shè)計(jì)更加適用方案二。2.2.3藍(lán)牙模塊的選擇方案一:WiFiESP8266技術(shù)WiFi通訊技術(shù)是需要建立局域網(wǎng)的,這樣才能夠讓多個(gè)用戶使用,有著通訊高效安全、能夠偵聽(tīng)載波的功能。但是同時(shí)因?yàn)榻⒕钟蚓W(wǎng)和路由器會(huì)增加設(shè)計(jì)成本并且難以實(shí)現(xiàn),而高效的通訊意味著功率也會(huì)很高。因此高耗能、難設(shè)計(jì)的原因使得不適合應(yīng)用于宿舍安全的設(shè)計(jì)上。方案二:藍(lán)牙技術(shù)藍(lán)牙技術(shù)主要是一種無(wú)線傳輸,適用于距離近的傳輸,當(dāng)距離過(guò)遠(yuǎn)時(shí),連接會(huì)中斷。而利用藍(lán)牙技術(shù),設(shè)備之間的通訊則更加方便快捷、成本更加低廉。藍(lán)牙通訊的實(shí)質(zhì)就是在設(shè)備間無(wú)需使用電線或電纜的情況下,讓多個(gè)設(shè)備能夠互相連接和通訊。因?yàn)楝F(xiàn)有技術(shù)限制藍(lán)牙傳輸在功耗上也相對(duì)較高,距離較近受環(huán)境影響較大不能在宿舍樓和管控室進(jìn)行遠(yuǎn)距離傳輸[11]。經(jīng)過(guò)對(duì)比分析,藍(lán)牙模塊傳輸距離較近,并且受障礙物影響較大,當(dāng)前無(wú)線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)布線比較方便,物聯(lián)網(wǎng)不受距離和地域顯示,所以采用方案一進(jìn)行設(shè)計(jì)。2.2.4顯示模塊的選擇方案一:LED數(shù)碼管。利用LED數(shù)碼管動(dòng)態(tài)顯示信息,雖然數(shù)顯具有短小、功耗低、直角顯示平坦、圖像穩(wěn)定而不閃爍等優(yōu)點(diǎn),但考慮到其亮度低,特別是價(jià)格偏高,只能顯示簡(jiǎn)單的數(shù)字,無(wú)法實(shí)現(xiàn)中英文轉(zhuǎn)換,因此,輸出能力有限。方案二:OLED液晶屏顯示。該系統(tǒng)可通過(guò)液晶顯示屏顯示信息,并實(shí)現(xiàn)中英文轉(zhuǎn)換,但編程較為繁瑣。該模塊體型較小,性能較強(qiáng),功耗低,刷新反應(yīng)速度快適用于物聯(lián)網(wǎng)設(shè)備的開(kāi)發(fā)。此外低耗電及高對(duì)比度不僅可以節(jié)能,更增加了可視化界面美觀性。可與單片機(jī)直接連接,方便易用。系統(tǒng)穩(wěn)定運(yùn)行,且抗干擾能力強(qiáng)。經(jīng)過(guò)對(duì)比分析,本設(shè)計(jì)選擇方案二,采用OLED作為顯示系統(tǒng)。2.2.5按鍵模塊的選擇方案一:獨(dú)立按鍵獨(dú)立按鍵在生活中也是常見(jiàn)的,它的工作方式主要就是直接連接在單片機(jī)的引腳上,另一端接地,這樣的話,每個(gè)按鍵都單獨(dú)占用一個(gè)I/O口,結(jié)構(gòu)簡(jiǎn)單,編程容易,但是不適用于按鍵數(shù)量較多的場(chǎng)合,浪費(fèi)資源,使得外設(shè)接口減少。方案二:矩陣鍵盤矩陣鍵盤是4*4矩陣鍵盤,在行列的交叉處設(shè)置按鍵,提高了單片機(jī)引腳利用率,采用的是行列掃描進(jìn)行識(shí)別,實(shí)際編碼中需要對(duì)應(yīng)采用二進(jìn)制編碼高低四位進(jìn)行排排列[12]。對(duì)比上述兩種按鍵的設(shè)置方式,結(jié)合本設(shè)計(jì)的實(shí)際需求,由于本設(shè)計(jì)采用的按鍵功能極少,因此符合本次設(shè)計(jì)選擇方案一。2.2.6報(bào)警模塊的選擇方案一:語(yǔ)音播報(bào)此方式設(shè)計(jì)報(bào)警部分電路比較高端,在家庭醫(yī)療在線監(jiān)測(cè)系統(tǒng)中顯得大材小用,設(shè)計(jì)硬件電路時(shí),還需查閱語(yǔ)音芯片及其模塊資料,增加工作量,也加重程序編寫的任務(wù)量,同時(shí)也增加硬件設(shè)計(jì)成本。方案二:聲光報(bào)警由LED燈和蜂鳴器為主要元器件,元器件比較基礎(chǔ),方便設(shè)計(jì)者使用,電路連接簡(jiǎn)單,程序編寫也非常容易,通過(guò)程序內(nèi)電平的變化,可以輕松實(shí)現(xiàn)燈的亮滅和發(fā)出聲響。在實(shí)際使用上,可操作性強(qiáng),報(bào)警效果好,監(jiān)控人員可以在視覺(jué)和聽(tīng)覺(jué)兩方面得到提示,價(jià)格很是低廉。綜上所述,采用方案二中的聲光報(bào)警來(lái)作為報(bào)警模塊。2.2.7心率血氧模塊的選擇MAX30102心率血氧模塊,集成了一個(gè)紅光LED和一個(gè)紅外光發(fā)射管、光電檢測(cè)器、光器件,帶環(huán)境光抑制的低噪聲電子電路,應(yīng)用在可穿戴設(shè)備上實(shí)現(xiàn)心率和血氧采集檢測(cè)REF_Ref24614\r\h[16]。因?yàn)槠鋬?yōu)異的性能,本文選用此傳感器作為心率傳感器。2.2.8定位模塊的選擇ATK-NEO-6M模塊,是一款高性能的GPS模塊,模塊核心采用的是UBLOX生產(chǎn)的NEO-6M模組,追蹤靈敏度高,測(cè)量輸出頻率高等特性REF_Ref27759\r\h[18]。ATK-NEO-6M具有以下特點(diǎn):使用方便,通過(guò)串口就可設(shè)置各種參數(shù)并保存在EEPROM里,模塊有高增益的LNA芯片和陶瓷天線等,搜索衛(wèi)星能力強(qiáng)REF_Ref27759\r\h[18]。2.2.9運(yùn)動(dòng)狀態(tài)檢測(cè)模塊的選擇MPU6050模組集成了三軸的三軸加速度表及三軸的陀螺儀,此晶片共有八根管腳,經(jīng)由每根管腳的聯(lián)接,可與單片機(jī)進(jìn)行資料傳送,藉由此感測(cè)器來(lái)偵測(cè)位姿;再將該數(shù)據(jù)通過(guò)I2C接口傳送到主機(jī)。

第3章系統(tǒng)的硬件設(shè)計(jì)3.1單片機(jī)最小系統(tǒng)本設(shè)計(jì)使用STM32?單片機(jī)作為系統(tǒng)的主控制芯片。芯片引腳連接如圖3.1所示。圖3.1STM32單片機(jī)的接線圖3.2溫度檢測(cè)模塊設(shè)計(jì)溫度傳感器型號(hào)為DS18B20,該模塊主要實(shí)現(xiàn)溫度的采集,通過(guò)對(duì)外部環(huán)境的溫度檢測(cè),將其環(huán)境溫度轉(zhuǎn)換為,單片機(jī)可處理的數(shù)字量,這個(gè)溫度傳感器,是由美國(guó)半導(dǎo)體公司發(fā)明的,該裝置十分的簡(jiǎn)單,外部只有4個(gè)引腳,并且只有一根數(shù)據(jù)線,它可以進(jìn)行串行通信,并且可以進(jìn)行雙向通信,完成溫度檢測(cè)的功能,不需要外接任何器件,這使得單片機(jī)的I/O口大大節(jié)省,通過(guò)總線協(xié)議進(jìn)行數(shù)據(jù)的讀,寫時(shí)序,讀寫時(shí)序都是需要初始化的,初始化的完成主要是依靠控制器拉低火松開(kāi)總線。DS18B20芯片主要分為讀寫時(shí)序兩個(gè)部分,1時(shí)段9時(shí)段的寫入讀入,每個(gè)時(shí)段都需要延時(shí),兩個(gè)寫時(shí)段都是需要初始化,初始化的完成依靠的是主控制器拉低總線。圖3.2溫度檢測(cè)電路圖3.3wifi模塊設(shè)計(jì)本設(shè)計(jì)選擇使用中國(guó)移動(dòng)開(kāi)發(fā)的WIFI模塊設(shè)備作為遠(yuǎn)程傳輸設(shè)備,采用的核心控制器為ESP8266WIFI模塊,該芯片內(nèi)部集成出口通信模塊,方便與單片機(jī)進(jìn)行通信,也是目前應(yīng)用相對(duì)廣泛的一款wifi芯片,具有透?jìng)鞴δ?,無(wú)需關(guān)心內(nèi)部協(xié)議,該芯片工作頻率為2.4GHZ,并且通過(guò)由于手機(jī)或者路由器熱點(diǎn)建立網(wǎng)絡(luò)連接,根據(jù)手機(jī)APP建立的EDP協(xié)議封包傳輸數(shù)據(jù)[15],云平臺(tái)連接通過(guò)添加的設(shè)備ID和API值作為連接平臺(tái)的關(guān)鍵字,實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程傳輸功能,該模塊供電電壓為3.0V到3.6V設(shè)計(jì),并且將芯片的第一管腳接上LDO穩(wěn)壓芯片輸出的3.3V并且連接10uF和0.1uF濾波電容,防止電源受到干擾影響數(shù)據(jù)傳輸。將第二管腳外接10K上拉電阻并留出其余GPIO口預(yù)留,將RXD和TXD管腳留出接口與單片機(jī)通訊使用。圖3.3ESP8266電路連接圖3.4心率檢測(cè)電路設(shè)計(jì)血氧心率檢測(cè)模塊采用的是Max30102模塊,該模塊的原理是根據(jù)血液對(duì)光的吸收量,來(lái)表征脈搏的變化,也就是說(shuō)當(dāng)脈搏不動(dòng)時(shí),血液對(duì)光的吸收量是一個(gè)固定不變的值,當(dāng)脈搏跳動(dòng)時(shí),血液對(duì)光的吸收量是呈現(xiàn)一定周期變化的,變化根據(jù)脈搏的跳動(dòng)是有規(guī)律的。它主要用來(lái)測(cè)量血氧濃度和心率的一款器件,他也采用的是iPhoneC兼容的通信接口,需要一根數(shù)據(jù)線和一根時(shí)鐘線來(lái)進(jìn)行數(shù)據(jù)通信,通過(guò)將檢測(cè)到的數(shù)據(jù)傳輸給單片機(jī),進(jìn)行心率和血氧濃度的計(jì)算,片片機(jī)通過(guò)兩個(gè)引角與數(shù)據(jù)線和時(shí)鐘線相連接,進(jìn)行數(shù)據(jù)的相互通信,心率血氧檢測(cè)模塊如圖3.4所示。圖3.4心率傳感器檢測(cè)模塊3.5運(yùn)動(dòng)狀態(tài)檢測(cè)電路設(shè)計(jì)本文主要設(shè)計(jì)的運(yùn)動(dòng)狀態(tài)檢測(cè)電路核心使用MPU-6050傳感器,此傳感器主要是由加速度傳感器和陀螺儀組合而成的,該芯片一共有八個(gè)引腳,通過(guò)對(duì)各個(gè)引腳進(jìn)行連接與單片機(jī)進(jìn)行數(shù)據(jù)的傳輸,用該傳感器檢測(cè)姿態(tài),實(shí)際應(yīng)用中,在mpu6050中是用陀螺儀傳感器測(cè)角度,用加速度傳感器測(cè)加速度。電路圖如圖3.5所示。圖3.5姿態(tài)檢測(cè)電路設(shè)計(jì)表3.1引腳定義名稱功能VCC接3.3V或5V電源GND接地SCL作為從機(jī),接單片機(jī)的I2C2_SCLSDA作為從機(jī),接單片機(jī)的I2C2_SDAXDA輔助IIC用來(lái)連接其他器件,不需要連接單片機(jī)XCL輔助IIC用來(lái)連接其他器件,不需要連接單片機(jī)AD0地址管腳(可以不接單片機(jī))INT中斷引腳(可以不接單片機(jī))3.6顯示電路設(shè)計(jì)顯示模塊負(fù)責(zé)顯示信息。本系統(tǒng)選用的是128×64的OLED顯示屏,該模塊體型較小,性能較強(qiáng),功耗低,刷新反應(yīng)速度快適用于物聯(lián)網(wǎng)設(shè)備的開(kāi)發(fā)。此外低耗電及高對(duì)比度不僅可以節(jié)能,更增加了可視化界面美觀性[17]。通過(guò)單片機(jī)引腳PB11、PB10引腳進(jìn)行數(shù)據(jù)傳輸,電源接VCC另一端接地。它的驅(qū)動(dòng)電壓低、能耗低,可與太陽(yáng)能電池、集成電路等相匹配。顯示模塊電路設(shè)計(jì)圖如圖3.6所示。圖3.6ATK-0.96'OLED接線圖3.7氣壓檢測(cè)設(shè)計(jì)本款采用壓力裝置對(duì)壓力進(jìn)行感知檢測(cè),外部壓力或壓差可使裝置電容值發(fā)生變化,通過(guò)數(shù)字信號(hào)轉(zhuǎn)換,轉(zhuǎn)化為頻率信號(hào)送至微芯片,微芯片計(jì)算輸出一個(gè)電流主信號(hào)到當(dāng)前主控電路,再生成4-20mA模擬電流輸出,同時(shí)微芯片充電進(jìn)行操作(顯示和設(shè)定)。通信接口用于數(shù)據(jù)通信的專用接口。氣壓監(jiān)測(cè)模塊接線圖如圖3.7所示。圖3.7氣壓檢測(cè)模塊接線圖3.8定位模塊設(shè)計(jì)本設(shè)計(jì)定位模塊選用的是GY-ONE-6M模塊,該模塊一共有4個(gè)引腳,真正與單片機(jī)進(jìn)行通信的只有一個(gè)引腳,A10引腳進(jìn)行連接,使用極其簡(jiǎn)單,而且性能優(yōu)異,具有容量大的特點(diǎn),通道多,模塊供電采用3.3V/5V電平,是非常方便連接各種單片機(jī)系統(tǒng)。定位模塊設(shè)計(jì)如圖3.8所示。圖3.8定位模塊接線圖3.9報(bào)警模塊設(shè)計(jì)在多環(huán)境人體機(jī)能檢測(cè)預(yù)警控制系統(tǒng)的設(shè)計(jì)上,對(duì)其報(bào)警執(zhí)行選擇了聲光報(bào)警方式。聲音信號(hào)電流與唯一芯片數(shù)字計(jì)算機(jī)PA6的引腳相連,因此唯一芯片數(shù)字計(jì)算機(jī)引腳輸出的電流通過(guò)NPN真空管放大。唯一的芯片數(shù)字計(jì)算機(jī)PA6引腳機(jī)械輸出偶電平,以使蜂鳴器導(dǎo)電,因此蜂鳴器發(fā)送相關(guān)報(bào)警提示用戶。報(bào)警模塊電路圖如圖3.9所示。圖3.9按鍵模塊接線圖第4章系統(tǒng)的軟件設(shè)計(jì)4.1主程序流程圖主流程圖如圖4.1所示。NYYNYY圖4.1主流程圖4.2底層驅(qū)動(dòng)程序開(kāi)發(fā)4.2.1溫度采集模塊的軟件設(shè)計(jì)測(cè)量溫度的子程序采用的是DS18B20芯片,最開(kāi)始對(duì)傳感器初始化處理,然后傳感器內(nèi)部自帶數(shù)據(jù)校準(zhǔn)的軟件,當(dāng)數(shù)值校準(zhǔn)出現(xiàn)錯(cuò)誤是則先進(jìn)行數(shù)據(jù)處理再進(jìn)入主控芯片進(jìn)行無(wú)線的數(shù)據(jù)傳輸。溫度子程序流程圖,流程圖如圖4.2。開(kāi)始DS18B20初始化啟動(dòng)溫度轉(zhuǎn)換跳過(guò)讀序列號(hào)延時(shí)DS18B20初始化跳過(guò)讀序列號(hào)讀取溫度的高低位數(shù)據(jù)轉(zhuǎn)化處理開(kāi)始DS18B20初始化啟動(dòng)溫度轉(zhuǎn)換跳過(guò)讀序列號(hào)延時(shí)DS18B20初始化跳過(guò)讀序列號(hào)讀取溫度的高低位數(shù)據(jù)轉(zhuǎn)化處理結(jié)束圖4.2溫度檢測(cè)流程圖4.2.2顯示模塊軟件的設(shè)計(jì)通過(guò)啟動(dòng)在這之后系統(tǒng)界面進(jìn)入初始化,開(kāi)始讀取狀態(tài)之后開(kāi)始分析數(shù)據(jù)并處理。顯示程序設(shè)計(jì)流程圖如圖4.3所示。圖4.3顯示程序設(shè)計(jì)流程圖4.2.3按鍵模塊子程序設(shè)計(jì)開(kāi)始檢測(cè)到有按鍵按下?信號(hào)時(shí),利用軟件的延時(shí)進(jìn)行延時(shí)消抖?,再對(duì)是否有按鈕按下進(jìn)行檢測(cè),若此?時(shí)檢測(cè)到有按鈕按下,?則表示有按鈕信號(hào);進(jìn)行下一步的操作,按鍵模塊流程圖如圖4.4所示。

開(kāi)始開(kāi)始等待按鍵按下有按鍵按下延時(shí)消抖是否有按鍵按下按鍵數(shù)據(jù)處理結(jié)束YN圖4.4按鍵檢測(cè)流程圖YN4.2.4WIFI模塊驅(qū)動(dòng)程序設(shè)計(jì)其工作流程圖如圖4.5所示:程序開(kāi)始讀取保存在程序開(kāi)始讀取保存在eeprom中的wifi數(shù)據(jù)通過(guò)得到的WiFi數(shù)據(jù)聯(lián)網(wǎng)WiFi是否連接成功?完成數(shù)據(jù)傳輸?shù)却謾C(jī)一鍵配網(wǎng)配網(wǎng)完成將WiFi數(shù)據(jù)保存到eepromYY圖4.5wifi模塊工作流程圖YY

4.2.5心率檢測(cè)程序設(shè)計(jì)心率檢測(cè)模塊的原理是通過(guò)IIC進(jìn)行數(shù)據(jù)傳輸?shù)?,只需要兩根線一根是數(shù)據(jù)線,一根是時(shí)鐘線與單片機(jī)引腳相連接,系統(tǒng)進(jìn)行初始化完畢之后開(kāi)始檢測(cè),此時(shí)檢測(cè)是采用血氧心率傳感器模塊,將檢測(cè)到的數(shù)據(jù)進(jìn)行測(cè)試并存儲(chǔ),把探測(cè)到的數(shù)據(jù)顯示在顯示屏上,再用WiFi模塊把它的數(shù)據(jù)傳送到上位機(jī)上,然后再用顯示屏來(lái)顯示,整個(gè)過(guò)程一直循環(huán)下去,顯示屏顯示計(jì)數(shù)子程序系統(tǒng)初始化開(kāi)始測(cè)量測(cè)試并儲(chǔ)存,心率檢測(cè)程序流程圖如圖4.6NY程序開(kāi)始NY程序開(kāi)始系統(tǒng)初始化計(jì)數(shù)子程序開(kāi)始測(cè)量測(cè)試并儲(chǔ)存數(shù)據(jù)顯示屏顯示返回圖4.6心率檢測(cè)流程圖4.2.6氣壓檢測(cè)程序設(shè)計(jì)氣壓檢測(cè)模塊系統(tǒng)進(jìn)行初始化完畢之后開(kāi)始檢測(cè),將檢測(cè)到的數(shù)據(jù)進(jìn)行測(cè)試并存儲(chǔ),把探測(cè)到的數(shù)據(jù)顯示在顯示屏上,顯示屏顯示計(jì)數(shù)子程序系統(tǒng)初始化開(kāi)始測(cè)量測(cè)試并儲(chǔ)存,氣壓檢測(cè)程序流程圖如圖4.7所示NY程序開(kāi)始NY程序開(kāi)始系統(tǒng)初始化計(jì)數(shù)子程序開(kāi)始測(cè)量測(cè)試并儲(chǔ)存數(shù)據(jù)顯示屏顯示返回圖4.7氣壓檢測(cè)工作流程圖4.2.7定位模塊程序設(shè)計(jì)開(kāi)始開(kāi)始系統(tǒng)初始化開(kāi)始檢測(cè)獲取位置信息上傳數(shù)據(jù)返回圖4.8定位模塊流程圖4.2.8姿態(tài)檢測(cè)程序設(shè)計(jì)YN開(kāi)始YN開(kāi)始系統(tǒng)初始化獲取姿態(tài)信息上傳數(shù)據(jù)返回開(kāi)始檢測(cè)?圖4.9姿態(tài)檢測(cè)工作流程圖4.3程序編寫及調(diào)試首先打開(kāi)KEIL軟件,在指定文件夾下創(chuàng)建一個(gè)新的項(xiàng)目,新建工程界面如圖4.10所示,保存為一個(gè)名字方便以后查找,接著創(chuàng)建一個(gè)文本文件后綴名為“.c”的文件,之后添加到此項(xiàng)目中,依次對(duì)各個(gè)模塊的程序進(jìn)行編寫,通過(guò)設(shè)置“Hex”文件經(jīng)過(guò)編譯后,出現(xiàn)“Hex”文件下載到實(shí)物后便可以運(yùn)行實(shí)物。圖4.10新建工程界面圖4.11芯片選擇在軟件中編寫好程序后,按下編譯按鈕來(lái)檢查時(shí)候有語(yǔ)法問(wèn)題,得到圖4.12程序編譯結(jié)果界面,出現(xiàn)“0error”說(shuō)明程序編寫沒(méi)有格式語(yǔ)法問(wèn)題,可以進(jìn)行下一步操作,如果出現(xiàn)語(yǔ)法問(wèn)題,找到對(duì)應(yīng)的定位,更改錯(cuò)誤后重新編譯即可。圖4.12程序編譯

第5章實(shí)物制作與調(diào)試5.1系統(tǒng)實(shí)物制作系統(tǒng)實(shí)物的制作主要是根據(jù)電路圖去選型焊接,根據(jù)清單選取對(duì)應(yīng)型號(hào)的器件,STM32單片機(jī)、溫度傳感器、心率檢測(cè)傳感器、wifi模塊、血壓檢測(cè)傳感器、按鍵、顯示屏,電阻、電容、二極管、導(dǎo)線。備好器件后,不要著急焊接,查看哪些器件有正負(fù)極的區(qū)分,在焊接時(shí)需要注意,再根據(jù)總體的設(shè)計(jì)電路圖,對(duì)其進(jìn)行布局,選擇合適的位置進(jìn)行器件的焊接,實(shí)物圖如圖5.1所示。圖5.1實(shí)物圖5.2系統(tǒng)調(diào)試焊接完畢后進(jìn)行各個(gè)模塊的調(diào)試,首先將編寫好的程序運(yùn)行無(wú)誤后下載到焊接好的芯片中,要保證程序沒(méi)有語(yǔ)法錯(cuò)誤,之后驗(yàn)證該功能,最后對(duì)硬件進(jìn)行調(diào)試。在調(diào)試之前,先檢查硬件電路是否完好,在安裝好硬件的各個(gè)部分,對(duì)其進(jìn)行焊接,在完成后,檢查是否都符合相關(guān)焊接設(shè)計(jì)規(guī)定參數(shù)和焊接設(shè)計(jì)工藝要求,是否完全能夠完美實(shí)現(xiàn)焊接設(shè)計(jì)和設(shè)計(jì)功能。圖5.2系統(tǒng)初始化5.2.1顯示功能測(cè)試圖5.3顯示模塊實(shí)物圖通過(guò)OLED顯示屏顯示的關(guān)鍵信息,溫度、血壓、心率血氧功能是否正常顯示。5.2.2功能測(cè)試圖5.4測(cè)試實(shí)物圖體溫檢測(cè)、血壓檢測(cè)、心率血氧檢測(cè)、姿態(tài)檢測(cè)顯示正常。5.2.3WiFi功能測(cè)試圖5.5手機(jī)端顯示實(shí)物圖通過(guò)WiFi模塊,手機(jī)端正常顯示數(shù)據(jù)。

第6章結(jié)論本次畢業(yè)設(shè)計(jì)過(guò)程中系統(tǒng)地梳理了多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)的目的及意義綜述了國(guó)內(nèi)外研究現(xiàn)狀,提出本次設(shè)計(jì)的核心思想,對(duì)功能進(jìn)行分析選用合適的設(shè)計(jì)方案,并對(duì)各個(gè)模塊進(jìn)行了充分的介紹,本次設(shè)計(jì)多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)從軟硬件兩個(gè)方面設(shè)計(jì),并完成APP提前預(yù)警設(shè)計(jì)。完成以下工作:(1)分析課題研究的背景及意義,并提出該系統(tǒng)具體功能,根據(jù)設(shè)計(jì)功能需求,對(duì)比不同的設(shè)計(jì)方案,進(jìn)行器件選型,最后得出系統(tǒng)整體設(shè)計(jì)方案。(2)針對(duì)溫度、心率、血壓等不同監(jiān)測(cè)對(duì)象,針對(duì)性地選擇了芯片作為系統(tǒng)傳感器部件,對(duì)wifi與相關(guān)功能模塊的整合提出了應(yīng)用方案,從而完成本設(shè)計(jì)的總體硬件系統(tǒng)。(3)從系統(tǒng)軟件總設(shè)計(jì)流程圖出發(fā),并對(duì)底層驅(qū)動(dòng)程序進(jìn)行編寫,最后對(duì)程序進(jìn)行了調(diào)試,設(shè)計(jì)了APPA應(yīng)用開(kāi)發(fā)界面。(4)完成多環(huán)境人體機(jī)能檢測(cè)預(yù)警系統(tǒng)設(shè)計(jì)的實(shí)物制作,對(duì)制作好的實(shí)物進(jìn)行調(diào)試與測(cè)試,完成模塊化測(cè)試功能,最后對(duì)全文進(jìn)行總結(jié)及展望。

參考文獻(xiàn)胡鈺寬,孫唯證.基于無(wú)線運(yùn)動(dòng)傳感器節(jié)點(diǎn)的人體運(yùn)動(dòng)狀態(tài)監(jiān)測(cè)裝置設(shè)計(jì)[J].科技創(chuàng)新與生產(chǎn)力,2022(05):86-89.唐家豪,李志明,周紅波,皮濤濤.無(wú)線人體健康監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子制作,2022,30(05):11-14.王琪;李波濤.智能化家庭綜合醫(yī)療產(chǎn)品的設(shè)計(jì)與發(fā)展[J].設(shè)計(jì),2019,(12):122-124.林同濤,吳宸宸,陳清華.基于STM32的多環(huán)境人體機(jī)能監(jiān)測(cè)登山服設(shè)計(jì)[J].信息技術(shù)與信息化,2021(12):85-87.杜健寧,盧東生,王夢(mèng)嬌,司嘯辰,孟祥雨.基于WeMosD1Mini開(kāi)發(fā)板的脈搏與體溫檢測(cè)裝置設(shè)計(jì)[J].中國(guó)醫(yī)學(xué)裝備,2021,18(02):1-4.王洪生.基于單片機(jī)與傳感器的智能家居環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子制作,2020(22):24-27.董靜涵.用于人體健康監(jiān)測(cè)的檢測(cè)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[J].電子技術(shù)與軟件工程,2020(20):75-77.吳卿.基于STM32的健康監(jiān)護(hù)系統(tǒng)的設(shè)計(jì)[C].哈爾濱理工大學(xué),2016.彭俊;陳順材;張澤;張?jiān)?董錚.基于STM32的智能交通燈設(shè)計(jì)[J].電子測(cè)試,2022,(19):18-20+23.吳昊;蔡翔;楊佳溈;石洋銘;吳兆豐;羅賢林;黃利軍.瀕危特色物種信息監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子世界,2021,(24):162-163.丁青鋒,王麗姚.基于復(fù)合傳感器的人體健康監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2019,38(11):82-84+88.徐均,王學(xué)勇,張謙,張文博.智能小區(qū)安防系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].工程建設(shè)與設(shè)計(jì),2019(04):100-101.呂峻達(dá),王景泰.基于單片機(jī)的人體心率監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子元器件與信息技術(shù),2018(08):26-28.汪濤,田睿智,趙有明,等.基于STM32和濾波算法的生理參數(shù)多點(diǎn)監(jiān)測(cè)系統(tǒng)及電路設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2021,38(11):77-83+95.高明華,許麗金,柯成成,楊根紅.基于Android便攜式人體健康監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2017,40(12):86-89.劉雯;鄭心雨;高宇暉;楊衍玥.基于nRF51-DK的智能心率手環(huán)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2019,9(01):75-77.岳駿;解乃軍.基于STM32的物聯(lián)網(wǎng)智能家居系統(tǒng)設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2022,(02):27-31.周孟強(qiáng);童忠晴;李剛.基于STM32的北斗/GPS定位系統(tǒng)的設(shè)計(jì)[J].電子制作,2018,(13):8-10.曹文昌,郭俊,劉志平,黃雪霽.一種便攜式人體生理指標(biāo)檢測(cè)器的設(shè)計(jì)[J].自動(dòng)化與儀器儀表,2015(09):66-68.AutonomicResearch;DataonAutonomicResearchDiscussedbyResearchersatWroclawMedicalUniversity(PassiveBilateralLegCyclingWithConcomitantRegionalCirculatoryOcclusionforTestingMechanoreflex-metaboreflexInteractionsInHumans)[J].ScienceLetter,2020.DingYourong,BaoKe,ZhangJianzhong.AnIntelligentSystemforDetectingAbnormalBehaviorinStudentsBasedontheHumanSkeletonandDeepLearning.[J].Computationalintelligenceandneuroscience,2022,2022.NguyenV.Dien,NguyenV.Tuan,LeT.P.Mai,NguyenV.Hieu,VuongQ.Phuoc,NguyenQ.N.Quynh,NguyenT.Hung,ToleranceofSCMNyquistandOFDMsignalsforheterogeneousfiber-opticandmillimeter-wavemobilebackhaullinksundertheeffectofpoweramplifiersaturationinducedclipping,ComputerNetworks,Volume204,2022.WANGJ,CUIE.TheDesignofaMultifunctionalRemote-ControlIntelligentVehicleBasedonSTC89C52[J].AppliedMechanicsandMaterials,2015,4113(789).ZOUH,ZHOUY,YANGJ,CostasJ.Spanos.TowardsoccupantactivitydrivensmartbuildingsviaWiFi-enabledIoTdevicesanddeeplearning[J].Energy&Buildings,2018,177.LIANGM,HEY,CHENL.GreenhouseEnvironmentdynamicMonitoringsystembasedonWIFI[J].IFACPapersOnLine,2018,51(17).

附錄電路圖源代碼#include"led.h"#include"delay1.h"#include"usart1.h"#include"usart2.h"#include"timer2.h"#include"timer3.h"#include"timer4.h"#include"wifi.h"#include"stdio.h"#include"math.h"#include"mqtt.h"#include"ds18b20.h"#include"stdio.h"#include"oled.h"#include"myiic.h"#include"timer1.h"#include"stdlib.h"#include"MAX30100.h"#include"stm32f10x.h"#include"MAX30100_Filters.h"#include"MAX30100_PulseOximeter.h"#include"MAX30100_SpO2Calculator.h"#include"mpu6050.h"#include"inv_mpu.h"#include"inv_mpu_dmp_motion_driver.h"voidstae(void);u8flag=0;u32TimingDelay=0;u16led_count=0;u8str[20];//字符串緩存_Boolsend_flag=0;//發(fā)送標(biāo)志位u8mpu_flag=0;//人體跌倒檢測(cè)標(biāo)志位標(biāo)志位1、2任意一個(gè)異常該標(biāo)志位為1【1:跌倒,0:正?!縚Boolmpu_1_flag=0;//人體跌倒檢測(cè)標(biāo)志位1角度異常標(biāo)志【1:異常,0:正?!縚Boolmpu_2_flag=0;//人體跌倒檢測(cè)標(biāo)志位2加速度異常標(biāo)志【1:異常,0:正?!縤ntSVM;//人體加速度向量幅值SVM和微分加速度幅值的絕對(duì)平均值DSVM是區(qū)分人體運(yùn)動(dòng)狀態(tài)的重要參量。SVM通過(guò)計(jì)算加速度幅度表征人體運(yùn)動(dòng)的劇烈程度,其值越大表明運(yùn)動(dòng)越劇烈。u8t=0,i=10;u8T;u8ZT;u16XueYa;u8BJ=0;char*subString;char*subStringNext;signedshortHeartRate_val=0;//心跳速率u8SPO2_val=0;//血氧濃度f(wàn)loatpitch,roll,yaw;//歐拉角shortaacx,aacy,aacz;//加速度傳感器原始數(shù)據(jù)intmain(void){LED_Init();Usart1_Init(9600);Usart2_Init(115200);//串口2功能初始化,波特率115200TIM4_Init(300,7200);//TIM4初始化,定時(shí)時(shí)間300*7200*1000/72000000=30msWiFi_ResetIO_Init();//初始化WiFi的復(fù)位IOMQTT_Buff_Init();//初始化接收,發(fā)送,命令數(shù)據(jù)的緩沖區(qū)以及各狀態(tài)參數(shù)AliIoT_Parameter_Init();//初始化連接阿里云IoT平臺(tái)MQTT服務(wù)器的參數(shù)DS18B20_Init();OLED_Init();//初始化OLED模塊SCLK接到“B7”腳SDIN接到“B6”腳IIC_Init();//血氧濃度模塊IICSCLK接到“B8”腳SDIN接到“B9”腳TIM1_Init();//每1ms執(zhí)行一次中斷,RunTime每1ms加1SPO2_Init();MPU_Init();//初始化MPU6050delay_ms(1000);//等待初始化穩(wěn)定while(mpu_dmp_init()){delay_ms(200);u1_printf("連接已拒絕,未知狀態(tài),準(zhǔn)備重啟\r\n");}u1_printf("連接已拒絕,未知狀態(tài),準(zhǔn)備重啟\r\n");show_interface();//顯示主界面while(1){if(flag==1){POupdate();//更新FIFO數(shù)據(jù)血氧數(shù)據(jù)心率數(shù)據(jù)show_temp(T);//屏幕顯示溫度T=DS18B20_Get_Temp()/10;//獲取人體溫度//====MPU6050數(shù)據(jù)獲取====if((t%10)==0){if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0){MPU_Get_Accelerometer(&aacx,&aacy,&aacz);//得到加速度傳感器數(shù)據(jù)SVM=sqrt(pow(aacx,2)+pow(aacy,2)+pow(aacz,2));//分析x、y、z角度的異常判斷if(fabs(pitch)>40||fabs(roll)>40||fabs(yaw)>40)//傾斜角度的【絕對(duì)值】大于40°SVM大于設(shè)定的閾值時(shí),即認(rèn)為摔倒mpu_1_flag=1;elsempu_1_flag=0;//分析加速度SVM的異常判斷if(SVM>23000||SVM<12000)i=0;i++;if(i<=10)mpu_2_flag=1;else{i=10;mpu_2_flag=0;}//綜合歐拉角、SVM異常判斷異常if(mpu_2_flag||mpu_1_flag)mpu_flag=1;elsempu_flag=0;show_mpu(mpu_flag);}t=0;}t++;delay_ms(10);}/**//*Connect_flag=1同服務(wù)器建立了連接,我們可以發(fā)布數(shù)據(jù)和接收推送了*//**/if(Connect_flag==1){/**//*處理發(fā)送緩沖區(qū)數(shù)據(jù)*//**/if(MQTT_TxDataOutPtr!=MQTT_TxDataInPtr){//if成立的話,說(shuō)明發(fā)送緩沖區(qū)有數(shù)據(jù)了if((MQTT_TxDataOutPtr[2]==0x10)||((MQTT_TxDataOutPtr[2]==0x82)&&(ConnectPack_flag==1))||(SubcribePack_flag==1)){u1_printf("發(fā)送數(shù)據(jù):0x%x\r\n",MQTT_TxDataOutPtr[2]);//串口提示信息MQTT_TxData(MQTT_TxDataOutPtr);//發(fā)送數(shù)據(jù)MQTT_TxDataOutPtr+=BUFF_UNIT;//指針下移if(MQTT_TxDataOutPtr==MQTT_TxDataEndPtr)//如果指針到緩沖區(qū)尾部了MQTT_TxDataOutPtr=MQTT_TxDataBuf[0];//指針歸位到緩沖區(qū)開(kāi)頭}}/*處理接收緩沖區(qū)數(shù)據(jù)*/if(MQTT_RxDataOutPtr!=MQTT_RxDataInPtr){//if成立的話,說(shuō)明接收緩沖區(qū)有數(shù)據(jù)了u1_printf("接收到數(shù)據(jù):");/*處理CONNACK報(bào)文*///if判斷,如果第一個(gè)字節(jié)是0x20,表示收到的是CONNACK報(bào)文//接著我們要判斷第4個(gè)字節(jié),看看CONNECT報(bào)文是否成功if(MQTT_RxDataOutPtr[2]==0x20){switch(MQTT_RxDataOutPtr[5]){case0x00:u1_printf("CONNECT報(bào)文成功\r\n");//串口輸出信息ConnectPack_flag=1;//CONNECT報(bào)文成功,訂閱報(bào)文可發(fā)break;//跳出分支case0x00//跳出分支case0x05default:u1_printf("連接已拒絕,未知狀態(tài),準(zhǔn)備重啟\r\n");//串口輸出信息Connect_flag=0;//Connect_flag置零,重啟連接break;//跳出分支casedefault}}//if判斷,第一個(gè)字節(jié)是0x90,表示收到的是SUBACK報(bào)文//接著我們要判斷訂閱回復(fù),看看是不是成功elseif(MQTT_RxDataOutPtr[2]==0x90){switch(MQTT_RxDataOutPtr[6]){case0x00:case0x01:u1_printf("訂閱成功\r\n");//串口輸出信息SubcribePack_flag=1;//SubcribePack_flag置1,表示訂閱報(bào)文成功,其他報(bào)文可發(fā)送LED2=0;Ping_flag=0;//Ping_flag清零TIM3_ENABLE_30S();//啟動(dòng)4s的PING定時(shí)器TIM2_ENABLE_2S();//啟動(dòng)4s的上傳數(shù)據(jù)的定時(shí)器flag=1;stae();break;//跳出分支default:u1_printf("訂閱失敗,準(zhǔn)備重啟\r\n");//串口輸出信息Connect_flag=0;//Connect_flag置零,重啟連接break;//跳出分支}}//if判斷,第一個(gè)字節(jié)是0xD0,表示收到的是PINGRESP報(bào)文elseif(MQTT_RxDataOutPtr[2]==0xD0){u1_printf("PING報(bào)文回復(fù)\r\n");//串口輸出信息if(Ping_flag==1){//如果Ping_flag=1,表示第一次發(fā)送Ping_flag=0;//要清除Ping_flag標(biāo)志}elseif(Ping_flag>1){//如果Ping_flag>1,表示是多次發(fā)送了,而且是2s間隔的快速發(fā)送Ping_flag=0;//要清除Ping_flag標(biāo)志TIM3_ENABLE_2S();//PING定時(shí)器重回4s的時(shí)間}}//if判斷,如果第一個(gè)字節(jié)是0x30,表示收到的是服務(wù)器發(fā)來(lái)的推送數(shù)據(jù)//我們要提取控制命令elseif((MQTT_RxDataOutPtr[2]==0x30)){u1_printf("服務(wù)器等級(jí)0推送\r\n");//串口輸出信息MQTT_DealPushdata_Qs0(MQTT_RxDataOutPtr);//處理等級(jí)0推送數(shù)據(jù)}MQTT_RxDataOutPtr+=BUFF_UNIT;//指針下移if(MQTT_RxDataOutPtr==MQTT_RxDataEndPtr)//如果指針到緩沖區(qū)尾部了MQTT_RxDataOutPtr=MQTT_RxDataBuf[0];//指針歸位到緩沖區(qū)開(kāi)頭}//處理接收緩沖區(qū)數(shù)據(jù)的elseif分支結(jié)尾/**//*處理命令緩沖區(qū)數(shù)據(jù)*//**/if(MQTT_CMDOutPtr!=MQTT_CMDInPtr){//if成立的話,說(shuō)明命令緩沖區(qū)有數(shù)據(jù)了u1_printf("接收到的數(shù)據(jù):%s\r\n",&MQTT_CMDOutPtr[2]);//串口輸出信息MQTT_CMDOutPtr+=BUFF_UNIT;//指針下移if(MQTT_CMDOutPtr==MQTT_CMDEndPtr)//如果指針到緩沖區(qū)尾部了MQTT_CMDOutPtr=MQTT_CMDBuf[0];//指針歸位到緩沖區(qū)開(kāi)頭}//處理命令緩沖區(qū)數(shù)據(jù)的elseif分支結(jié)尾}/**//*Connect_flag=0同服務(wù)器斷開(kāi)了連接,我們要重啟連接服務(wù)器*//**/else{u1_printf("需要連接服務(wù)器\r\n");//串口輸出信息TIM_Cmd(TIM4,DISABLE);//關(guān)閉TIM4TIM_Cmd(TIM3,DISABLE);//關(guān)閉TIM3WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū)if(WiFi_Connect_IoTServer()==0){//如果WiFi連接云服務(wù)器函數(shù)返回0,表示正確,進(jìn)入ifu1_printf("建立TCP連接成功\r\n");//串口輸出信息Connect_flag=1;//Connect_flag置1,表示連接成功WiFi_RxCounter=0;//WiFi接收數(shù)據(jù)量變量清零memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收緩沖區(qū)MQTT_Buff_ReInit();//重新初始化發(fā)送緩沖區(qū)}}}}/**//*函數(shù)名:采集數(shù)據(jù),并發(fā)布給服務(wù)器*//**/voidstae(void){chartp[256];LED2=~LED2;USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//開(kāi)啟中斷delay_ms(100);if(Save_Data.isGetData){Save_Data.isGetData=false;for(i=0;i<=6;i++){if(i==0){if((subString=strstr(Save_Data.GPS_Buffer,","))==NULL)u1_printf("解析錯(cuò)誤");;//errorLog(1);//解析錯(cuò)誤}else{subString++;if((subStringNext=strstr(subString,","))!=NULL){charusefullBuffer[2];switch(i){case3:memcpy(Save_Data.latitude,subString,subStringNext-subString);break;//獲取緯度信息case4:memcpy(Save_Data.N_S,subString,subStringNext-subString);break;//獲取N/Scase5:memcpy(Save_Data.longitude,subString,subStringNext-subString);break;//獲取經(jīng)度信息case6:memcpy(Save_Data.E_W,subString,subStringNext-subString);break;//獲取E/Wdefault:break;}subString=subStringNext;Save_Data.isParseData=true;if(usefullBuffer[0]=='A')Save_Data.isUsefull=true;elseif(usefullBuffer[0]=='V')Save_Data.isUsefull=false;}else{u1_printf("解析錯(cuò)誤");//打印;//errorLog(2);//解析錯(cuò)誤}}}}USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);//開(kāi)啟中斷sprintf(tp,"{\"method\":\"perty.post\",\\"id\":\"2\",\"params\":{\"T\":%d,\"XL\":%d,\"XY\":%d,\\"ZT\":%d,\"JD\":\"%s\",\"WD\":\"%s\",\\"XX\":%d,\"BJ\":%d},\"version\":\"1\"}",T,HeartRate_val,SPO2_val,ZT,Save_Data.longitude,Save_Data.latitude,XueYa,BJ);MQTT_PublishQs0(P_TOPIC_NAME,tp,strlen(tp));//添加數(shù)據(jù),發(fā)布給服務(wù)器}/**//*函數(shù)名:串口2接收中斷函數(shù)*//*參數(shù):無(wú)*//*返回值:無(wú)*//**/voidUSART2_IRQHandler(void){if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET){//如果USART_IT_RXNE標(biāo)志置位,表示有數(shù)據(jù)到了,進(jìn)入if分支if(Connect_flag==0){//如果Connect_flag等于0,當(dāng)前還沒(méi)有連接服務(wù)器,處于指令配置狀態(tài)if(USART2->DR){//處于指令配置狀態(tài)時(shí),非零值才保存到緩沖區(qū)Usart2_RxBuff[Usart2_RxCounter]=USART2->DR;//保存到緩沖區(qū)Usart2_RxCounter++;//每接收1個(gè)字節(jié)的數(shù)據(jù),Usart2_RxCounter加1,表示接收的數(shù)據(jù)總量+1}}else{//反之Connect_flag等于1,連接上服務(wù)器了Usart2_RxBuff[Usart2_RxCounter]=USART2->DR;//把接收到的數(shù)據(jù)保存到Usart2_RxBuff中if(Usart2_RxCounter==0){//如果Usart2_RxCounter等于0,表示是接收的第1個(gè)數(shù)據(jù),進(jìn)入if分支TIM_Cmd(TIM4,ENABLE);}else{//else分支,表示果Usart2_RxCounter不等于0,不是接收的第一個(gè)數(shù)據(jù)TIM_SetCounter(TIM4,0);}Usart2_RxCounter++;//每接收1個(gè)字節(jié)的數(shù)據(jù),Usart2_RxCounter加1,表示接收的數(shù)據(jù)總量+1}}}/**//*函數(shù)名:定時(shí)器4中斷服務(wù)函數(shù)*//*參數(shù):無(wú)*//*返回值:無(wú)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論