李鳴佩
(武昌工學院,湖北 武漢 430065)
從20 世紀末期,手環出現在國內電子產品市場,然而市場上的手環產品和國外的產品相差較大,國內的相關電子科技方案的人員較少,只有較少的企業愿意投入資金去研發這類產品,所以產品之間存在差距。此款電子手環采用三軸加速度傳感器ADXL345,通過單片機控制,可以獲得人體動態數據,例如計步、傾斜角度等數據。電子手環具有功耗低、精度高、靈敏度高的優點。整體而言,手環正朝著多功能,高精度和低價格的方向發展。

圖1 最小系統接線圖
整個系統包括三軸傳感器、體溫采集、心率采集、藍牙通信、按鍵、顯示以及主控制器。RTC 內部時鐘提供時鐘信號,通過反射式光電傳感器采集心率信號STM32 內部A/D 轉換測量心率,LMT70 溫度傳感器實現體溫測量。OLED 顯示體溫、步數、日期時間、心率等信息,可通過BT06 藍牙模塊傳輸至第三方手機軟件APP(藍牙助手)顯示。三個按鍵用于調整日期、時間和數據,具有一個清除步數按鍵,還具有一個切換信息顯示按鍵。步數每天00:00 會自動清除前一天的步數,也可通過按鍵清除。

圖2 STM32F103C8T6 引腳圖
本次設計采用性能比較高的STM32F103 系列單片機,具有128k Flash 的芯片STM32F103C8T6 作為主控。該器件擁有32位數據處理能力,器件的成本低、性能強、能耗小。開發技術可以采用THUMB-2 指令,更加方便開發者進行開發,加快了項目完成進度。器件封裝為貼片形式,所以占用空間小,集成度高,器件一共有48 個外設接口,器件的工作頻率最大可到72MHz。

圖3 藍牙通信電路圖
藍牙模塊可以在寬范圍的溫度環境中運行,模塊的穩定性強,可以在很多復雜的場景中工作。模塊帶有超低功耗功能,節省可移動設備的電源功耗。藍牙通信模塊帶有串口通信方案,模塊通過藍牙通信傳輸數據,數據再經過串口和其他控制器進行交互。最終進行無線數據傳輸,將心率、體溫數據傳輸到手機。

圖4 三軸傳感器電路圖
作為一款低功耗而且體積較小的加速度計,數字式加速度傳感器ADXL345,主要是通過進行加速度變換,進而改變內部電壓電阻以及電容的變化情況。使用者在行走的過程當中,身體會上下起伏,微控制可讀取該傳感器的三組模擬量,通過計步算法分析處理數據,將數據合成為運動信息。ADXL345 數字式傳感器具有精度高、體積小、反應快等特點,因此,其廣泛使用與各種產品中。

圖5 體溫檢測采集電路圖
本次設計用于智能手環設計,對于電路上的設計需要減小電路,數字式傳感器電路小,性能穩定。LMT70 是高精度傳感器,適用于人體檢測設備,并且響應及時且輸出易于調節。在室內無風情況下的溫度分辨率為0.046℃,遠遠小于市場上其它的溫度傳感器。此器件另一個最大的優勢是器件和單片機連接不需要任何的輔助器件,直接連接就可以實現溫度的采集。最終選擇LMT70 采集人體體溫數據。

圖6 心率檢測電路圖
心率傳感器采用的是反射式光電式傳感器,反射式光電傳感器自帶光源(綠光)和光接收裝置,光源發出的光經過待測物體的反射被光敏元件接受,經過處理后可得到準確的脈搏信號。實際應用中與身體任何部位接觸都可以,當光源所經過處的血流量改變時,探頭便可捕捉到隨心脈周期改變的光脈沖信號從而采集到脈搏信息。

圖7 主程序流程圖
在軟件設計時,系統首先要完成對所有接口以及通信的初始化,讀取體溫數據、計步數據和心率數據,判斷是否進行顯示切換,按鍵按下后可以進行藍牙數據傳輸,同時判斷時間數據是否到0 點,到0 點就清除當天數據信息。
單片機只需要通過串口就可以完成對遠程通信模塊的控制。所以串口的設置至關重要,主要是軟件操作是對寄存器的設置,串口的參數很多,所以設置寄存器的方案也有很多,只有發送和接收雙方一致才可以實現通信,初始化結束后,只要對發送寄存器和接收寄存器進行操作,就可以實現數據的傳輸,寄存器SUBF 當中包括接收以及發送的判斷標志,所以軟件設計很方便。定位數據為512 字節數據,通過獲取這個數據,就得到遠程通信數據。
單片機此時檢測按鍵信號才是正確的時刻。按照上述的波形情況,我們在軟件檢測的時候需要進行消抖,也就是等按鍵抖動信號過去,再檢測按鍵信號,一般按鍵抖動時間是3 到5 毫秒,所以在首次掃描到有效的按鍵信號后,再經過3 到5 毫秒后,繼續掃描按鍵的信號,如果既然有效,則表示按鍵確實按下。
在需要進行三軸數據的的時候,單片機首先要輸入時鐘信號到SCL 引腳,再按照時鐘信號輸入功能選擇數據到SDA 引腳,之后數據轉換結果會通過SDA 輸出到單片機。單片機在第一個時鐘信號下降沿前,SDA 引腳為高電平,即為開啟數據轉換。在第二個下降沿前輸入數據,選擇對應的通道。
設計采用A/D 轉換的原理進行心率傳感器的模擬量讀取,從而轉換為數字量,在采集心率時,其步驟如下:首先是初始化A/D 轉換器,配置好ADC1 的通道1。并且配置一個定時器,定時50ms 中斷,之后進入循環。在循環定定時器50ms 中斷一次,在中斷時讀取一次A/D 轉換的值,將A/D 轉換的值通過串口發送至電腦上位機,同時通過心率算法算出其心率值,同時在OLED上顯示出來。
在系統板開機后,正常運行時,OLED 第二行會顯示“歡迎使用”。第三行顯示“藍牙智能手環”2 秒,然后自動刷新顯示心率、步數、體溫數據等。
在主界面上實時顯示,可通過按鍵實現其他功能,按下切換鍵時,OLED 將切換到時間顯示界面,由于OLED 大小關系,故而選擇分屏顯示。時間顯示界面顯示日期、時間、星期等信息。
本次設計當中采用第三方軟件藍牙助手APP 軟件進行藍牙連接,實現系統上電后,打開手機APP 進行藍牙搜索,本次設計采用的是BT06 藍牙模塊,但是其藍牙名稱為“BT04-A”,當搜到該藍牙信號后進行連接,第一次使用連接時需輸入密碼,初始密碼為1234,輸入完成后進入數據傳輸界面。單片機控制藍牙模塊將步數、心率、體溫數據每四秒傳輸一次至手機APP 進行顯示。
對系統檢測體溫數據的準確進行測試,測了5 組數據,并進行了記錄,體溫數據數據表如表1 所示。

表1 體溫數據測試
系統數據為本系統采集的體溫數據,專業產品數據是由體溫計進行測量得出的數據,測試時環境溫度為25℃,測試時將手指放在溫度傳感器上測量。由表1 數據可得誤差范圍為0~0.1 攝氏度。經過計算表中數據體溫模塊誤差精度不足1%,符合任務書中的要求。
對系統檢測心率數據的準確進行測試,測試了5 組數據,并進行了記錄,心率數據表如表2 所示。

表2 心率數據測試
系統數據為本系統采集的心率數據,專業產品數據是由其他品牌手環進行測量得出的數據,其中系統數據誤差為0~4(單位次/分鐘),而專業產品數據誤差為3~5(單位次/分鐘)。經過對比后,系統采集的心率數據較可靠。由表2 得出系統誤差精度為3%。滿足任務書要求。
基于STM32 單片機的藍牙智能手環設計與實現,最終完成了三軸傳感器、遠程通信、按鍵、報警、GPS 模塊、指示燈以及主控制器的方案選擇、電路設計、軟件設計以及實物制作。系統實現的功能是實時采集三軸傳感器數據,以及準確的測量心率、體溫。準確的將身體狀況傳輸至手機APP,便于隨時監控身體狀況,有效的健康管理。相信經過不懈的努力之后藍牙智能手環會越來越好,越來越智能,對人體的監控也會越來越準確的。