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