藍牙心率防水運動手環 ——瘋殼·智能穿戴開發系列 整機功能代碼講解 整機代碼 1 軟件設計 本節,我們將融合前面的藍牙收發、三軸記步、電量檢測、外部 Flash 讀寫、 心率檢測和 Led 屏幕顯示,完成手環的制作。 以上各個部分可以參考前面的章節。 首先,看一下我們手環的整個軟件主函數流程。 圖1 代碼運行后,首先進入初始化,初始化系統時鐘、外設和藍牙。除此之外, 還開啟了定時中斷和 GPIO 中斷。 我們的定時中斷每 10ms 觸發一次,用于 ADC 定時采集心率數據,以及定時和時間更新。另外,由于一些原因,主函數中的步數讀取、電量檢測、心率檢測、屏幕顯示并不是每一次循環都執行一次。這里的定時中斷也作為一個計時功能, 步數 20 秒更新一次,心率模塊 1 分鐘打開一次,亮屏無操作,5 秒熄滅屏幕。 這里的 GPIO 中斷主要是用來切換屏幕顯示頁面。 代碼1 從 GPIO 的中斷回調函數中可以看出,每次中斷只是把變量 Touch_release 置1,并沒有直接對顯示做任何處理,而在定時中斷的回調函數中,判斷變量Touch_release 的值,從而確定我們是長時間按鍵,還是短時間按鍵,來完成相應的處理。 在定時器中斷函數中,檢測到短時間觸摸,就打開顯示標志位,同時設置顯示的頁面。 關于藍牙收發部分,我們在藍牙收發章節的基礎上進行了修改,通過手機軟件 Wolverine BLE 發送 step 獲取步數、發送 cal 獲取卡路里、發送 heart 獲取心率值、發送 rtc 加時間完成手環的時間設置。下面是函數 代碼2.1 代碼2.2 每當手環收到來自手機軟件 Wolverine BLE 的數據時,首先從 Flash 中讀取步數和心率數據。然后對比接收到字符串。最后發送或設置相應的數據。這里有一點要注意,我們從 Flash 中讀取到的是數據,而通過藍牙發送的是字符串,就需要將數字轉換成字符就如同代碼中將一個位的數字加上 0x30,換算成該數字對應的 ASCII 碼值。 對于發送給手機的卡路里數據,其實是通過三軸步數計算過來的。消耗的卡 路里跟步數以及個人的體重等因素呈比例關系,大家可以根據自己的情況修改卡路里與步數之間的系數。 代碼3 關于其他部分代碼,請參考我們的我整機代碼例程。 2 實驗現象 首先打開 SmartSnippets。 圖2 設置好 SmartSnippets 之后,點擊上圖中的 Open。 (1)點擊 Connect,連接我們的單片機。 圖3 (2)點擊 Erase,擦除 Flash。 圖4 (3)點擊 Browse,找到我們工程的.hex 文件。 圖5 (4)點擊 Burn,完成代碼下載。 圖 6 代碼下載完成之后,運行代碼,能看到屏幕顯示時間。 圖 7 在時間顯示界面下,觸摸一下按鍵,會顯示心率。 圖8 在心率顯示界面下,觸摸一下按鍵,會顯示步數界面。 圖 9 再觸摸一下按鍵,就會進入卡路里顯示界面。 圖10 打開手機軟件 Wolverine BLE。 (1)點擊 Connect。 圖11 (2)選擇我們的藍牙設備 DIALOG-PRFL。 圖12 我們發送 step,會獲取步數。 圖 13 發送 cal,會獲取卡路里。 圖14 發送 heart,會獲取心率。 圖15 配套資料:https://www.fengke.club/GeekMart/su_fkZyGYgrp.jsp 配套視頻:https://www.fengke.club/GeekMart/su_fTSgUL3y3.jsp 套件地址:http://shop115904315.taobao.com 文件下載請點擊: |