需要原理圖工程,源碼,PCB工程的朋友收藏,這篇文章關(guān)注我,私我吧?。?!
摘要
本次設(shè)計(jì)主要組成是STM32單片機(jī)電路、ADXL345加速度傳感器、心率檢測(cè)電路、OLED液晶顯示電路、電源電路、時(shí)鐘DS1302和DS18B20溫度傳感器組成。通過ADXL345測(cè)量重力加速度,是用來判斷人體狀態(tài),根據(jù)狀態(tài)的數(shù)值變化進(jìn)行計(jì)步功能。通過心率傳感器測(cè)試,通過手指脈動(dòng)放大經(jīng)過比較器處理后發(fā)送給單片機(jī)進(jìn)行心率采集。并將步數(shù)、心率,溫度、時(shí)間等信息顯示在液晶OLED上,當(dāng)?shù)够蛘邤?shù)據(jù)異常時(shí)蜂鳴器報(bào)警并且我們也可以通過藍(lán)牙模塊把當(dāng)前的數(shù)據(jù)發(fā)生到手機(jī)端進(jìn)行提醒,通過gps定位模塊把當(dāng)前位置也發(fā)送到手機(jī)端進(jìn)行顯示。本次設(shè)計(jì)功能比較全面,具有良好的市場前景。
一、研究背景及意義
隨著科技與時(shí)代不斷進(jìn)步,電子感應(yīng)與加速計(jì)技術(shù)出現(xiàn),取代了以前的技術(shù),因此電子計(jì)步器隨之而來。電子計(jì)數(shù)器,振動(dòng)傳感器是目前電子計(jì)步器比較重要的兩大組成部分。心率是指一般人心臟在安靜狀態(tài)下每分鐘跳動(dòng)的次數(shù),因?yàn)槟挲g或則性別等因素,存在著差異性。這是檢驗(yàn)人體健康標(biāo)準(zhǔn)的一大指標(biāo),也是本次設(shè)計(jì)較為突出的一大重點(diǎn)。并且我們還通過溫度傳感器顯示當(dāng)前溫度和時(shí)鐘芯片顯示當(dāng)前時(shí)間便于訓(xùn)練。
在這個(gè)大環(huán)境的發(fā)展格局下,想設(shè)計(jì)一款集合計(jì)步功能和心率體溫計(jì)時(shí)跌倒報(bào)警定位檢測(cè)功能于一身的智能運(yùn)動(dòng)手環(huán)。
從而達(dá)到以下目的:
(1) 有利于社會(huì)公共交通安全;
(2) 提高人們法律意識(shí);
(3) 使之便捷、安全、準(zhǔn)確、高效,便于提高人體日常紅外運(yùn)動(dòng)的普及化;
二、實(shí)現(xiàn)功能
- 以STM32單片機(jī)為數(shù)據(jù)處理中心,通過DS18B20采集當(dāng)前溫度,MAX30102傳感器采集當(dāng)前人體心率值;
- 通過DS1302時(shí)鐘芯片可以方便時(shí)刻觀察時(shí)間;
- 通過ADXL345進(jìn)行計(jì)步里程,并且通過OLED液晶顯示屏顯示當(dāng)前信息;
- 采用按鍵可以進(jìn)行修改非常方便快捷;
- 通過GPS對(duì)當(dāng)前運(yùn)動(dòng)者進(jìn)行定位如果發(fā)生意外情況通過藍(lán)牙模塊發(fā)送藍(lán)牙進(jìn)行提醒;
- 時(shí)鐘具有掉電行走功能,重新上電后無需校準(zhǔn);
三、系統(tǒng)方案設(shè)計(jì)
系統(tǒng)方案設(shè)計(jì)框圖
3.1 單片機(jī)芯片選擇
方案一:選擇ST公司的STC89C52單片機(jī)作為主控制器,STC89S52主要是低功耗、高性能器件,具有良好的存儲(chǔ)功能。該單片機(jī)價(jià)格低,功能比較全面, 功耗小,但它是個(gè)8位存儲(chǔ)器,不能達(dá)到實(shí)現(xiàn)本次設(shè)計(jì)的需求,故而因此放棄。
方案二:STM32單片機(jī)是一款超低功耗的32位器件,功能性比較豐富,模電數(shù)電集中到一個(gè)芯片上,可以較好地解決很多問題,實(shí)用性比較強(qiáng)。STM32F103C8T6是該系列應(yīng)用較為廣泛的一款控制芯片,該芯片運(yùn)行在32位系統(tǒng)、支持精簡指令集、超低功耗的混合型單片機(jī),具有高可靠性、低功耗、易擴(kuò)展、體積小、性價(jià)比高、電路簡單等優(yōu)勢(shì),在精密儀器上被廣泛應(yīng)用,以及很多智能化產(chǎn)品中,提高產(chǎn)品質(zhì)量,提升經(jīng)濟(jì)價(jià)值,已成為眾多單片機(jī)系列中一顆耀眼的新星。因此選擇方案二。
3.2 顯示器方案設(shè)計(jì)
方案一 :LED數(shù)碼管,這種數(shù)碼管的最大優(yōu)勢(shì)是價(jià)格較低,性能穩(wěn)定,可以非常簡便的和單片機(jī)相連。主要是用于數(shù)字顯示上,實(shí)用性較高。但是數(shù)碼管顯示的數(shù)字有限,本次設(shè)計(jì)涉及數(shù)字較多,因此達(dá)不到設(shè)計(jì)的要求,此方案放棄。
方案二: 選擇OLED液晶顯示,常和單片機(jī)配合使用,他可以顯示大量的數(shù)據(jù),文字等等,顯示的位數(shù)也比較多,外觀較好,清晰,并且它的程序編寫起來比較簡單。經(jīng)濟(jì)方面價(jià)格也比較低廉,其中OLED液晶顯示屏隨是比較有特色的一款,很適用于本次設(shè)計(jì),綜合下來選擇此方案。 故選擇方案二。
3.3 傾角傳感器設(shè)計(jì)
方案一 :選用陀螺儀來檢測(cè)位置的信息,功能比較強(qiáng),精度準(zhǔn)確,穩(wěn)定性強(qiáng),但是此器件精度要求高,控制起來較為復(fù)雜,不適用于本次設(shè)計(jì)。
方案二:選用ADI公司的傾角傳感器ADXL345模塊來檢測(cè)位置的信息,ADXL345功能比較全面,有很多存儲(chǔ)空間,其成本預(yù)算較低,便于控制。因此選擇方案二。
3.4心率檢測(cè)傳感器設(shè)計(jì)
方案一 :選用壓力傳感器收集心率血氧數(shù)據(jù),但其抗干擾能力較差,會(huì)對(duì)設(shè)計(jì)測(cè)量產(chǎn)生偏差,且測(cè)量的難度相對(duì)較大,很難達(dá)到本次設(shè)計(jì)的預(yù)期目的,所以排除此方案。
方案二 :選用MAX30102紅外模塊采集心率信號(hào),此模塊對(duì)管心率信號(hào)采集較為穩(wěn)定,其抗干擾能力較強(qiáng),測(cè)量的數(shù)值比較準(zhǔn)確,波形穩(wěn)定,相對(duì)于本次設(shè)計(jì)是一個(gè)很好的選擇。故選擇方案二。
3.5 溫度傳感器設(shè)計(jì)
DS18B20溫度傳感器是美國達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過多方面比較和考慮后決定的,此傳感器不但可以防水溫度檢測(cè)的范圍比較廣,價(jià)格低廉而且使用起來也比較方便。
3.6 無線數(shù)據(jù)傳輸設(shè)計(jì)
方案一 :選擇采用NRF24L01模塊進(jìn)行傳輸,但是傳輸過程中需要只是2快板子分為主從才可以進(jìn)行無線通信。
方案二: 選用HC05藍(lán)牙模塊,我們只需要通過此模塊進(jìn)行串口通信在手機(jī)端下載廠家提供的APP就可以完成數(shù)據(jù)的傳輸和顯示,價(jià)格也比較便宜傳輸數(shù)據(jù)穩(wěn)定。故選擇方案二。
3.7 時(shí)鐘模塊設(shè)計(jì)
方案一 :選擇單片機(jī)內(nèi)部時(shí)鐘,通過程序來顯示當(dāng)前的信息和參數(shù),不需要外接傳感器,但是內(nèi)部時(shí)鐘精度較差,非常容易產(chǎn)生積累誤差并且無法掉電行走。
方案二 :選用DS1302時(shí)鐘芯片,此芯片價(jià)格便宜,是專門用來處理萬年歷方面的信息,精準(zhǔn)度較高,并且數(shù)據(jù)可以通過電子進(jìn)行掉電行走,上電后無需重新設(shè)置。故選擇方案二。
四、硬件電路設(shè)計(jì)
4.1 STM32單片機(jī)介紹
單片機(jī)的最小系統(tǒng)應(yīng)能讓單片機(jī)正常工作并且能夠正常的發(fā)揮其功能的一個(gè)集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。它是一個(gè)小型的電腦設(shè)備所具有的那樣擁有者明顯的大腦,也就是控制的核心。同時(shí),也具有一些輸出設(shè)備,還有就是定時(shí)器,能夠作為時(shí)間的控制中心,具有作為通訊的接口,把所有需要用到的都集中在一個(gè)小小的芯片之上,這就是單片機(jī)。當(dāng)然單片機(jī)現(xiàn)在的發(fā)展已經(jīng)比較先進(jìn),我們來看一下作為最基本的存在它是怎樣的。如下圖:
STM32F103是STM32f101的增強(qiáng)型單片機(jī),在32位的MCU中性能最強(qiáng);具有出眾的控制和通訊,非常適合低電壓/低功耗的應(yīng)用場合。下圖為STM32內(nèi)核:
對(duì)于本次設(shè)計(jì),我們選擇的單片機(jī)是STM32F103C8T6單片機(jī)。此單片機(jī)和51系列相比多了很多功能,不但運(yùn)行速度比51單片機(jī)要快很多,自帶2個(gè)AD轉(zhuǎn)換,方便我們?cè)谠O(shè)計(jì)煙霧和CO的時(shí)候免去了需要加外部ADC進(jìn)行轉(zhuǎn)換,非常方便;
STM32實(shí)物圖如下圖所示:
4.2 主要功能模塊電路設(shè)計(jì)
4.2.1 電源電路設(shè)計(jì)
單片機(jī)的電源采用直流5V供電,電源模塊包括一個(gè)3腳的電源座子和6腳的電源開關(guān)。電源座子用于連接外部的電源插頭,電源開關(guān)用于控制整個(gè)單片機(jī)的電路開和關(guān)。原理圖如下:
4.2.2 ADXL345傾角傳感器電路設(shè)計(jì)
ADXL345的內(nèi)部功能結(jié)構(gòu)如下圖所示,X、Y、Z三個(gè)相互正交的的方向上的加速度由 G-Cell傳感器感知,經(jīng)過容壓變換器、增益放大、濾波器和電壓信號(hào)輸出。然后我們就可以得到步數(shù),我們?cè)O(shè)置步數(shù)距離后可以通過步數(shù)在計(jì)算里程,ADXL345內(nèi)部功能圖如下:
ADXL345的三個(gè)相互正交的測(cè)量方向如下圖,固定在人體上后,這三個(gè)方向上的數(shù)據(jù)意義也就隨之確定了。
引腳配置(頂視圖):
ADXL345是一款小而薄的超低功耗3軸加速度計(jì),分辨率高(13位),測(cè)量范圍達(dá)±16g。數(shù)字輸出數(shù)據(jù)為16位二進(jìn)制補(bǔ)碼格式,可通過SPI(3線或4線)或I2C數(shù)字接口訪問。ADXL345非常適合移動(dòng)設(shè)備應(yīng)用。它可以在傾斜檢測(cè)應(yīng)用中測(cè)量靜態(tài)重力加速度,還可以測(cè)量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度。其高分辨率(3.9mg/LSB),能夠測(cè)量不到1.0°的傾斜角度變化。
4.2.3 心率傳感器電路設(shè)計(jì)
測(cè)心率實(shí)際上也在同時(shí)檢測(cè)血氧,只是基于本模塊我們只用到心率檢測(cè),把血氧檢測(cè)到的數(shù)據(jù)不顯示,所以實(shí)際在運(yùn)用的時(shí)候我們也在同時(shí)測(cè)血氧飽和度。
MAX30102 是一個(gè)集成的脈搏血氧儀和心率監(jiān)測(cè)儀生物傳感器的模塊。它集成了一個(gè)紅光 LED 和一個(gè)紅外光 LED、光電檢測(cè)器、光器件,以及帶環(huán)境光抑制的低噪聲電子電路。
原理說明:
傳統(tǒng)的脈搏測(cè)量方法主要有三種:一是從心電信號(hào)中提??;二是從測(cè)量血壓時(shí)壓力傳感器測(cè)到的波動(dòng)來計(jì)算脈率;三是光電容積法。前兩種方法提取信號(hào)都會(huì)限制病人的活動(dòng),如果長時(shí)間使用會(huì)增加病人生理和心理上的不舒適感。而光電容積法脈搏測(cè)量作為監(jiān)護(hù)測(cè)量中最普遍的方法之一,其具有方法簡單、佩戴方便、可靠性高等特點(diǎn)。
4.2.4 OLED顯示屏電路設(shè)計(jì)
有機(jī)發(fā)光顯示器(Organic Light Emitting Display,OLED)是一種新型發(fā)光和顯示器件。OLED實(shí)質(zhì)上是一個(gè)薄膜器件,即在陽極和陰極之間夾多層有機(jī)薄膜組成的穩(wěn)定的綠色有機(jī)薄膜電致發(fā)光器件。當(dāng)有電流通過時(shí),這些有機(jī)材料就會(huì)發(fā)光。OLED使用普通的矩陣交叉屏,OLED位于交叉排列的陽極和陰極中間,通過對(duì)陽極和陰極組合的選通,可以控制每一個(gè)OLED的點(diǎn)亮。
液晶顯示模塊電路如圖所示,P5是一個(gè)4孔的排針,專門供OLED液晶顯示屏使用,5V是指接的5V電壓;顯示屏的SCL引腳連接的是單片機(jī)的B6引腳,通過SCL引腳傳輸串行時(shí)鐘數(shù)據(jù);SDA引腳連接的是單片機(jī)的B7引腳,通過SDA引腳傳輸串行數(shù)據(jù)。
4.2.5 DS18B20溫度電路設(shè)計(jì)
DS18B20 是美國 DALLAS 半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。它的主要技術(shù)特性如下:
① 具有獨(dú)特的單線接口方式,即微處理器與其接口時(shí)僅需占用 1 位I/O 端口;
② 支持多節(jié)點(diǎn),使分布式多點(diǎn)測(cè)溫系統(tǒng)的線路結(jié)構(gòu)設(shè)計(jì)和硬件開銷大為簡化;
③ 測(cè)溫時(shí)無需任何外部元件:
④ 可以通過數(shù)據(jù)線供電,具有超低功耗工作方式:
⑤ 測(cè)溫范圍為-55~+125℃,測(cè)溫精度為±0.5℃:
⑥ 溫度轉(zhuǎn)換精度 9-12 位可編程,能夠直接將溫度轉(zhuǎn)換值以 16 位二進(jìn)制數(shù)碼的方式串行輸出。12 位精度轉(zhuǎn)換的最大時(shí)間為 750ms。
DS18B20溫度傳感器結(jié)構(gòu)圖:
4.2.6 DS1302時(shí)鐘電路設(shè)計(jì)
DS1302是一款專門處理時(shí)鐘的芯片,晶振為32.768,
1、由美國DALLAS公司推出。
2、它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路。
3、DS1302使用方便,接線簡單,適合此電子時(shí)鐘的設(shè)計(jì)制作。
4、DS1302可以對(duì)年月日時(shí)分秒等進(jìn)行計(jì)時(shí),并且?guī)в虚c年補(bǔ)償功能。
5、它可以一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)。并且內(nèi)部有存放數(shù)據(jù)的RAM寄存器
6、DS1302的 工作電壓寬達(dá)2.5~5.5V。同時(shí)還提供了對(duì)后備電源的引腳。
1引腳:VCC2為主電源引腳。
8引腳:VCC1備用電源引腳。
備注:DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。由于本設(shè)計(jì)未引用備用電源,只引用了1引腳,主電源引腳。
2和3引腳:X1、X2外接晶振引腳。(外接32.768kHz晶振)
4引腳:GND為接地引腳。
5引腳:CE/RST為復(fù)位/片選線。通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。
RST接通控制邏輯,允許地址/命令序列送入移位寄存器;
RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。
6引腳:I/O為數(shù)據(jù)輸入輸出口。在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。
7引腳:SCLK為串行時(shí)鐘,輸入。
4.2.7 按鍵電路設(shè)計(jì)
本設(shè)計(jì)一共設(shè)置有5個(gè)控制命令按鍵:參數(shù)設(shè)置;設(shè)置加;設(shè)置減;清除當(dāng)前步數(shù)里程。我們采用的是獨(dú)立式的按鍵,獨(dú)立式按鍵就是每單個(gè)的按鍵就會(huì)有一條單獨(dú)的I/O線,他們之間互不影響,按鍵一端接地,采用的是低電平有效,按下按鍵就會(huì)連接該條線路。鍵盤抖動(dòng)的消除采用的是軟件消除,因?yàn)橛布枰饨悠骷杀靖咭脖容^麻煩,軟件消除的原理是線建立一個(gè)子程序,在檢測(cè)到按鍵閉合時(shí)先執(zhí)行子程序延時(shí)功能,按鍵斷開時(shí)也執(zhí)行數(shù)毫秒的功能從而達(dá)到消除抖動(dòng)的目的。電路圖設(shè)計(jì):
4.2.8 蜂鳴器報(bào)警電路設(shè)計(jì)
按鍵我們可以用于設(shè)置心率體溫上限,血氧下限,當(dāng)參數(shù)不在范圍內(nèi)蜂鳴器進(jìn)行聲光報(bào)警提醒。
蜂鳴器是一種蜂鳴元器件,供電時(shí)就進(jìn)行蜂鳴,操作非常簡單。市場上有很多蜂鳴器,我們選擇提供5V電源的蜂鳴器被認(rèn)為是實(shí)用的。當(dāng)我們使用蜂鳴器時(shí),我們有一個(gè)小技巧。如果我們覺得蜂鳴器不夠響,我們可以把蜂鳴器頂部的紙去掉。在本次設(shè)計(jì)中,當(dāng)檢測(cè)到溫度或者煙霧濃度高于報(bào)警上限時(shí),蜂鳴器報(bào)警。蜂鳴器電路如圖3.6所示,由3部分組成,一部分是一個(gè)1k的電阻,第二部分是一個(gè)PNP三極管,最后一部分就是蜂鳴器。三極管采用NPN三極管,其主要功能是放大電流和電平特性,因?yàn)閱纹瑱C(jī)電路的電路非常小,無法提供蜂鳴器所需的電流,經(jīng)過三極管放大驅(qū)動(dòng)電流后,電流放大200倍,驅(qū)動(dòng)蜂鳴器報(bào)警。
4.2.9 GPS定位模塊電路設(shè)計(jì)
GPS接收模塊通過它的接收天線獲取衛(wèi)星信號(hào),經(jīng)過變頻、放大、濾波、相關(guān)、混頻等一系列處理,可以實(shí)現(xiàn)對(duì)天線視界內(nèi)衛(wèi)星的跟蹤、鎖定和測(cè)量。在獲取了衛(wèi)星的位置信息和測(cè)算出衛(wèi)星信號(hào)傳播時(shí)間之后,即可計(jì)算出天線位置。用戶通過輸入輸出接口,與GPS接收模塊進(jìn)行信息交換,實(shí)現(xiàn)功能。GPS接收模塊內(nèi)部結(jié)構(gòu)如圖所示。
該設(shè)計(jì)中GPS信號(hào)接收模塊所選用的是VK2828U7接收模塊,該模塊是由美國瑟孚科技有限公司所生產(chǎn)。主要使用到的引腳如下圖所示。該模塊具有12通道并行接收能力,所接收的GPS信號(hào)屬于民用頻段的L1信號(hào)(1575.42MHz),在沒有SA干擾的情況下平均定位誤差為10米,動(dòng)態(tài)速度誤差為0.1米/秒,信號(hào)靈敏度達(dá)到-142dBm,冷啟動(dòng)定位時(shí)間為42秒,熱啟動(dòng)時(shí)間為38秒,重新定位時(shí)間僅僅需要8秒。
4.2.10 藍(lán)牙模塊電路設(shè)計(jì)
本次設(shè)計(jì)采用的無線通信模塊為HC05。HC05模塊是主從一體的,而且性能較高,可以與PDA、手機(jī)、電腦等具有藍(lán)牙功能的設(shè)備實(shí)現(xiàn)配對(duì),該模塊所支持的波特率范圍非常大,為4800~1382400,而且該模塊和3.3V或5V的單片機(jī)系統(tǒng)相兼容,極其方便、靈活。
五、軟件編程設(shè)計(jì)
完整的控制系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)組成,前一章主要闡述了系統(tǒng)的硬件電路的設(shè)計(jì)方案,若要充分發(fā)揮系統(tǒng)的設(shè)計(jì)功能,則需要支持硬件平臺(tái)的軟件程序,即燒寫到單片機(jī)內(nèi)部的程序。本設(shè)計(jì)利用STM32為控制中心,采用的的是STM32F103C8T6芯片,開發(fā)環(huán)境是Keil uVision5 by ARM軟件,這款開發(fā)環(huán)境是目前STM32單片機(jī)系統(tǒng)的主流軟件,使用的非常頻繁。程序的燒錄使用的是STLINKV2下載器進(jìn)行燒錄程序。
5.1軟件整體流程圖設(shè)計(jì)
主程序模塊:系統(tǒng)上電后,我們需要配置個(gè)個(gè)傳感器的引腳,然后初始化IIC 讓oled進(jìn)行液晶顯示和ADXL345進(jìn)行數(shù)據(jù)采集,采集完成后藍(lán)牙串口初始化等待發(fā)送數(shù)據(jù),DS18B20進(jìn)行溫度采集,心率傳感器通過獲取當(dāng)前心率值,時(shí)鐘顯示當(dāng)前的時(shí)間,最后把數(shù)據(jù)通過藍(lán)牙發(fā)送到手機(jī)端,控制OLED顯示當(dāng)前采集到的數(shù)據(jù),最后進(jìn)入按鍵掃描判斷按鍵是否按下如果按下則處理按鍵掃描函數(shù)。
如下圖所示,是整個(gè)系統(tǒng)的主程序流程圖:
5.2 心率程序設(shè)計(jì)
本次設(shè)計(jì)采用的是MAX30102芯片對(duì)人體心率或者血氧進(jìn)行采集,我們此次是用來做心率采集,MAX30102我們采用的是IIC進(jìn)行通信首先我們需要在程序里面配置IIC數(shù)據(jù)傳輸的引腳分別進(jìn)行配置,然后對(duì)IIC進(jìn)行初始化bsp_InitI2C()
; MAX30102寫寄存器函數(shù)maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data);
MAX30102讀寄存器函數(shù)maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data);
MAX30102初始化maxim_max30102_init(); MAX30102讀緩沖器FIFO maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led);
計(jì)算心率,通過檢測(cè)PPG (photoplethysmographic,光電容積脈搏波描記法)周期的峰值和相應(yīng)的紅/紅外信號(hào)的AC/DC,計(jì)算出心率值
maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer,
int32_t n_ir_buffer_length, uint32_t *pun_red_buffer,
int32_t *pn_spo2, int8_t *pch_spo2_valid,
int32_t *pn_heart_rate, int8_t *pch_hr_valid);
5.3 液晶顯示程序設(shè)計(jì)
要讓液晶顯示屏正常工作,首先寫入命令控制字,然后在寫入需要顯示的數(shù)據(jù)。寫入命令控制字之前,必須用指令來查看液晶是否正在工作。如果正在工作,那就必須等待,直到液晶發(fā)出工作完成的信號(hào)時(shí),才能夠?qū)懭肟刂谱趾蛿?shù)據(jù)。液晶顯示模塊程序流程圖如下圖所示。
5.4 按鍵程序設(shè)計(jì)
按鍵電路有四個(gè)引腳。其中兩兩相同。我們?cè)谶B接電路的時(shí)候只需要連接2個(gè)引腳就可以了。工作原理其實(shí)就是一個(gè)對(duì)信號(hào)的高低電平檢測(cè)。在我們按鍵被按下時(shí),單片機(jī)引腳的IO口就會(huì)檢測(cè)為低電平。這些IO口電平特性的改變就會(huì)程執(zhí)行相應(yīng)的功能操作。判斷按鍵是否按下if(K10){while(K10)去延時(shí),數(shù)值加;if(K20){delay_key()延遲,然后while(K20);是否按下如果按下,數(shù)值減。單獨(dú)按第三個(gè)按鍵就是清零流程圖如下圖所示:
5.5 DS18B20溫度采集程序設(shè)計(jì)
從DS18B20中讀取溫度的過程是:首先獲取DS18B20中的溫度值,該溫度值為BCD碼形式,然后通過轉(zhuǎn)換,以十進(jìn)制形式輸出溫度值,且此時(shí)輸出的溫度值含有兩位小數(shù),但輸出時(shí)沒有小數(shù)點(diǎn),輸出的溫度值是實(shí)際溫度的一百倍。它的步驟如下:
(1)初始化函數(shù)
(2)讀取溫度傳感器的溫度
(3)計(jì)算實(shí)際溫度值
如果測(cè)得的溫度大于0,只要將測(cè)到的數(shù)值乘以0.0625即可得到實(shí)際溫度;如果溫度小于0,測(cè)到的數(shù)值需要取反加1再乘以0.0625才能得到實(shí)際溫度。
5.6 DS1302時(shí)鐘程序設(shè)計(jì)
5.7 蜂鳴器報(bào)警程序設(shè)計(jì)
蜂鳴器的正極性的一端聯(lián)接到三極管上,為了防止三極管直接被導(dǎo)通我們加一個(gè)1K的限流電阻,通過單片機(jī)iO口來輸出高點(diǎn)電平,當(dāng)管腳為高電平時(shí),三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。當(dāng)管腳為低電平時(shí),三極管截至,蜂鳴器不發(fā)出聲音。其電路如圖所示。
流程圖如下:
5.8 ADXL345三軸傳感器程序設(shè)計(jì)
本次設(shè)計(jì)采用的是ADXL345三軸傳感器來檢測(cè)當(dāng)前行走的步數(shù),ADXL345有2種通信方式,我們采用的是IIC進(jìn)行數(shù)據(jù)傳輸。首先我們需要在程序里面配置IIC數(shù)據(jù)傳輸?shù)囊_分別為SCL對(duì)應(yīng)A6 ,SDL對(duì)應(yīng)A7,然后對(duì)ADXL345進(jìn)行初始化Init_ADXL345();
寫入開始信號(hào)和停止信號(hào)。void ADXL345_Start();void ADXL345_Stop();
接收應(yīng)答信號(hào):bit ADXL345_RecvACK(),
ADXL345開始讀取采集到的數(shù)據(jù)BYTE ADXL345_RecvByte();
讀取ADXL345的加速度值,從而判斷是否發(fā)生位移void Multiple_read_ADXL345(void);
如果讀取到的數(shù)據(jù)為0XE5表示發(fā)生位移行走。devid=Single_Read_ADXL345(0X00); if(devid!=0XE5)
5.9 GPS程序設(shè)計(jì)流程圖
先是STM32單片機(jī)對(duì)串口的引腳進(jìn)行配置,配置完成后我們選擇需要用到的串口引腳進(jìn)行初始化,引腳初始化完成后我們選擇相對(duì)應(yīng)的波特率來進(jìn)行串口通信,延遲一段時(shí)間后開始獲取采集信息,本次設(shè)計(jì)使用了串口3,4G模塊 – USART1,GPS – USART2,BLE – USART3,DEBUG – UART4GPS
。接下來進(jìn)行串口時(shí)鐘使能,RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
然后是GPIO端口模式設(shè)置,GPS數(shù)據(jù)采集部分流程圖如下圖所示:
5.10 藍(lán)牙程序流程圖設(shè)計(jì)
本次設(shè)計(jì)使用HC-05藍(lán)牙模塊作為單片機(jī)和手機(jī)間的的通信工具。首先給藍(lán)牙透傳模塊上電,此時(shí)led閃爍。單片機(jī)上的藍(lán)牙模塊也上電工作,藍(lán)牙主要是通過串口進(jìn)行數(shù)據(jù)傳輸,初始化顯示內(nèi)容為uchar code Init1[]="WELCOME: ";延遲void HC-05 delay(uint z);
寫入命令void RART_com(uchar com);
寫數(shù)據(jù)void write_data(uchar date);
初始化void HC-05(void)讀取字節(jié)for(i=0;i<8;i++) {write_data(Init1[i]);}
最后我們通過手機(jī)點(diǎn)擊“搜索位于有效范圍內(nèi)的設(shè)備”,系統(tǒng)將搜索藍(lán)牙設(shè)備,默認(rèn)設(shè)備名稱“CH-05”,雙擊或者點(diǎn)擊右鍵選擇“添加藍(lán)牙設(shè)備”, 輸入配對(duì)密碼(默認(rèn)為“1234”)。點(diǎn)擊“下一步”,如果密碼正確,則單片機(jī)和手機(jī)之間則建立通信,在手機(jī)選擇波特率9600,在手機(jī)上顯示經(jīng)緯度信息和時(shí)間。下圖是HC-05藍(lán)牙通信模塊流程圖:
六、實(shí)物視頻及圖片
這里經(jīng)緯度和手機(jī)指南針做一下對(duì)比,手機(jī)經(jīng)緯度如下:
測(cè)試結(jié)果還是比較準(zhǔn)確的。
手機(jī)APP設(shè)計(jì):
視頻如下:
基于STM32的智能手環(huán)設(shè)計(jì)
博客主頁:https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實(shí)物的友友請(qǐng)關(guān)注、點(diǎn)贊,私信吧!