Ⅱ的低功耗智能手環(huán)設計
本文關鍵詞:步數檢測方法及在手腕式計步器中的應用研究,由筆耕文化傳播整理發(fā)布。
摘 要: 智能手環(huán)作為一款穿戴式的電子產品,制約其發(fā)展的最大因素是待機時間和數據的準確性,本文采用TI公司的MSP430F5529 16位超低功耗單片機為主控制器,在其上移植μC/OS-Ⅱ系統(tǒng)后改進了計步算法。實驗測試了手環(huán)的待機功耗和手環(huán)計步的精確度,通過與目前市場上其他主流產品對比,本文設計的智能手環(huán)在計步的準確度與低功耗方面都有顯著提升,有進一步研究和推廣的價值。
關鍵詞: MSP430F5529;智能手環(huán);超低功耗;μC/OS-Ⅱ
0 引言
智能手環(huán)是一種穿戴式智能設備,其最基本的功能是計步和睡眠質量追蹤,而這兩個最基本的數據都是依靠手環(huán)中的加速度傳感器來測量的。加入用戶身高、體重、年齡等數值后通過軟件計算可得出消耗熱量[1-3]、行走距離、睡眠質量[4]等其他數據。目前其困境主要來源兩個方面,一方面是數據的準確性,計步的原理是根據人行走時擺臂產生的加速度數據來統(tǒng)計步數,如何屏蔽非行走時擺臂產生的干擾是計步算法的一大難點,而僅依靠睡眠時手臂產生的加速度數據,以多導睡眠圖(包含腦電圖、心電圖、肌電圖等10多種生理信號)的標準來衡量睡眠質量不夠科學和嚴謹,只能作為一種參考;另一方面智能手環(huán)的待機時間也是制約其發(fā)展的一大因素,在供電電池電量受體積所限的情況下必須降低系統(tǒng)功耗達到延長待機的目的。本文設計的智能手環(huán)特點在于采用了TI公司的MSP430超低功耗單片機為主控制器,在其上移植了μC/OS-Ⅱ操作系統(tǒng),完成了整個系統(tǒng)的軟硬件設計,并根據反復測試的實驗數據設計了精確度更高的計步算法。
1 硬件設計
本文將系統(tǒng)硬件部分劃分為三個模塊:系統(tǒng)主模塊、顯示模塊和數據通信模塊,系統(tǒng)硬件的結構框圖如圖1所示。顯示模塊選用ST公司的STM8L101K3經濟型單片機驅動的19×5字母LED點陣顯示數據。數據通信模塊選用CC2541的低功耗藍牙芯片,完成與IOS或ANDROID設備通信。系統(tǒng)主模塊主要由LIS3DH傳感器、BQ2423電源管理模塊和MSP430F5529單片機組成。
系統(tǒng)選擇MSP430F5529單片機為主控制器,其主要優(yōu)勢如下:
(1)低功耗。MSP430F5529主要用到2種功耗模式,一是激活模式(AM),其功耗為270 μA/MHz(8 MHz, 3.0 V);二是待機模式(LPM3),功耗為2.1 μA(3.0 V)。
。2)高性價比。MSP430F5529片內有4個通用串行通信接口,128 KB的閃存,8 KB的SRAM,支持SPI、I2C、UART,在滿足本系統(tǒng)應用的情況下MSP430F5529擁有最低的價格。
2 LIS3DH傳感器
LIS3DH是ST公司出品的一款低功耗三軸加速度芯片,其有自動休眠的功能,本系統(tǒng)中如果20 s內傳感器沒有檢測到任何加速度的變化則自動進入休眠狀態(tài),當加速度變化時LIS3DH會被喚醒。內置有96級的FIFO可以作為數據緩存存儲32組XYZ軸的加速度數據,當FIFO溢出時會產生一個中斷輸出,將中斷輸出映射到MSP430F5529單片機的外部中斷源上能將430單片機從待機模式喚醒讀取FIFO中的數據,緩存的存在能使430單片機一次連續(xù)讀取32組的數據,相比一次讀取一組數據的方式能讓430單片機更多時間處于待機模式。LIS3DH芯片本身支持 SPI或者I2C兩種接口,本系統(tǒng)選擇SPI,其具體外圍電路如圖2所示。數字IO的供電雖然與芯片加速度部分的供電電壓相等,但必需保證IO部分先于加速度部分工作,否則芯片的初始化會有問題,因此加速度部分供電引腳VDD相比數字IO供電引腳VDD_IO另外并聯(lián)了一個大電容以保證VDD_IO足夠的上電時間。
3 系統(tǒng)程序設計
3.1 移植μC/OS-Ⅱ系統(tǒng)
μC/OS-Ⅱ是一種采用優(yōu)先級搶占式調度方案的實時操作系統(tǒng),經過多年研究已經成功移植到多種MSP430系列的單片機中。本系統(tǒng)在MSP430F5529上成功移植了μC/OS-Ⅱ系統(tǒng),移植的關鍵部分是根據MSP430F5529處理器內核修改OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三個文件中的代碼。
。1)OS_CPU.H文件編寫
根據MSP430F5529的內核重新定義數據類型,不同內核的控制器字長不同,μC/OS-Ⅱ移植包括各種數據類型、開關中斷和任務切換的宏定義,以及堆棧增長方向和一些常量標識聲明。
。2)OS_CPU_A.ASM文件編寫
在OS_CPU_A.ASM文件中需要用匯編語言修改4個函數:OSStartHighRdy(),由OSStart()函數調用,功能是運行優(yōu)先級最高的就緒任務;OSCtxSw(),是一個任務級的任務切換函數,調用該函數可能造成系統(tǒng)任務重新調度;OSIntCtxSw(),中斷級的任務切換函數;OSTickISR(),提供一個定時Tick。
。3)OS_CPU_C.C文件編寫
在OS_CPU_C.C文件中需要改寫6個函數,實際需要修改的只有OSTaskStkInit()函數,其余5個函數只需聲明。OSTaskStkInit()函數由OSTaskCreate()函數和OSTaskCreateExt()函數調用,用來初始化任務的堆棧。其代碼編寫如下:
OS_STK*OSTaskStkInit(void(*task)(void*pd),void*p_arg,OS_STK*ptos,INT16U opt)
{
INT16U *top;
opt=opt;
top=(INT16U*)ptos;
top--;
*top=(INT16U)(((INT32U)task)&0xffff);
top--;
*top=(INT16U)((((INT32U)task)&0x000f0000)>>4);
*top|=(INT16U)0x0008;
top--;
*top=(INT16U)0x0404;
top--;
*top=(INT16U)0x0505;
top--;
*top=(INT16U)0x0606;
top--;
*top=(INT16U)0x0707;
top--;
*top=(INT16U)0x0808;
top--;
*top=(INT16U)0x0909;
top--;
*top=(INT16U)0x1010;
top--;
*top=(INT16U)0x1111;
top--;
*top=(INT16U)p_arg;
top--;
*top=(INT16U)0x1313;
top--;
*top=(INT16U)0x1414;
top--;
*top=(INT16U)0x1515;
return((OS_STK*)top);
}
3.2 任務設計
智能手環(huán)的應用非常強調低功耗特性。MSP430系列[4]的特點也在于此。如果由于運行μC/OS-Ⅱ而破壞了單片機的低功耗特性是得不償失的。在整個系統(tǒng)設計中,設計一個最低優(yōu)先級的任務Task_EnterLPM3(),其作用就是使系統(tǒng)進入LPM3的待機模式。這樣,在其他高優(yōu)先級的任務都運行完畢后,系統(tǒng)會調用這個任務使整個系統(tǒng)進入低功耗工作模式,當其他任務又恢復運行時,會自動進入其特定的工作狀態(tài),以達到降低功耗的目的。
當MSP430F5529在完成對各模塊的初始化和任務的創(chuàng)建后就調用OSStart()函數,此時系統(tǒng)任務由μC/OS-Ⅱ進行調度,開始Task_EnterLPM3()任務處于就緒態(tài),其余所有任務都掛起,MCU進入LPM3的待機模式,通過系統(tǒng)中斷,在中斷服務程序中將對應任務喚醒成就緒態(tài),其他任務按優(yōu)先級的高低搶占CPU運行,運行完后再次掛起[5]。
本系統(tǒng)中斷和任務主要設計了以下幾種:
。1)MCU內部RTC的定時中斷(alarm interrupt),當RTC時鐘走到定時時間觸發(fā)中斷,在中斷服務程序中喚醒定時任務,任務函數震動馬達,達到無聲喚醒的鬧鐘功能。
(2)MCU內部的RTC的時鐘時間事件中斷(clock time event interrupt),當RTC時鐘走到第二天0時觸發(fā)時鐘時間事件中斷,同上,當任務函數獲取CPU后將當天測得的步數、卡路里消耗、睡眠質量等數據自動存入MCU片內SRAM中。
(3)LIS3DH內部FIFO溢出中斷,任務函數喚醒MCU處理FIFO中的加速度數據。
。4)CC2541藍牙模塊接收到手機發(fā)送的數據,觸發(fā)UARTRX中斷,任務函數根據不同的發(fā)送數據完成不同的操作,如進行數據同步,或修改內部的參數(身高、體重、步長、時間、鬧鐘等)。
。5)按鍵中斷,任務函數根據按鍵的時間、次數進行復位,在LED點陣上顯示數據,開關藍牙等操作。
本系統(tǒng)程序在μC/OS-Ⅱ調度下的流程圖如下圖3所示。
4 計步算法
智能手環(huán)的一大重要功能就是計步,而計步的準確性除依賴高精度的傳感器外,還需要復雜的軟件算法來實現,本文參考多次測試的實驗數據進行算法的分析設計。
行走時產生的加速度數據波形是周期性的類正弦波[6],具有周期性且運動步數與正弦波數一致,在經濾波[7]處理后的加速度數據中尋找波峰,當出現一對波峰時,判斷是否滿足三個條件:一是兩個波峰的時間間隔是否在時間窗口內;二是局部最值之差是否滿足軟件設置的閾值;三是系統(tǒng)是否處于計步確認模式。如上述條件都滿足則步數加一,流程圖如圖4所示。
每秒行走的步數在[2,5]區(qū)間內,第一個條件的時間窗口定義了人行走一步所需的最短和最長時間,不滿足就不計步。不同的運動形式(如打字時手臂的微小晃動與步行時手臂的擺動)產生的運動沖擊力不同,從而導致加速度幅度變化不同,第二個條件中加速度的局部最大最小值之差[8]可以反映正弦波形的幅度大小,通過其與閾值進行比較可以判斷人是否處于行走狀態(tài)。為判斷LIS3DH傳感器檢測到的加速度是真正的步行還是偶爾的擾動所致,第三個條件中設計兩個工作狀態(tài):搜索模式和確認模式[8-9],系統(tǒng)最初處于搜索模式,此時檢測到的步數計入緩存,若計入緩存的步數大于兩步則進入確認模式,開始正常計步并將之前緩存中的步數加上;系統(tǒng)處于確認模式時,若出現不滿足條件的情形,,如數據波峰間隔不在時間窗口內則退出計步,進入搜索模式重新搜索。
5 測試
按照前面智能手環(huán)的軟硬件設計完成實驗模型的搭建,選用TI公司的MSP-EXP430F5529LP評估板外接上傳感器模塊、藍牙模塊和顯示模塊,用3.7 V的鋰電池為系統(tǒng)供電,使用藍牙助手APK驗證藍牙模塊與手機通信的連通性,實際模型如圖5所示。
為檢測手環(huán)測量數據的精確性與系統(tǒng)的低功耗是否達到預期的效果,分別對系統(tǒng)計步的精確度與待機功耗做了合理的測試。表1是A、B、C、D四名被測試者將實驗模型綁在手腕上的計步測試結果,檢測步數是模型的顯示結果,實際步數是兩名旁觀者口頭計數的平均值。
因為智能手環(huán)在實際使用中藍牙和顯示模塊不需要經常開啟,測量實驗模型的待機(關閉藍牙和顯示模塊)功耗能反應系統(tǒng)在電池供電下實際運行時間。如下表2是兩名被測試者(A和B)在一星期內使用手環(huán)(關閉藍牙和顯示模塊)電池電量的消耗情況,電池電量為90 mAh。
6總結
本次試驗在構建智能手環(huán)軟硬件系統(tǒng)方面探討了如何降低整個系統(tǒng)的功耗,并最終選擇了以MSP430F5529為主控制器移植μC/OS-Ⅱ的設計方案,16位的MSP430單片機兼顧了性能與低功耗的特點,相比目前電池容量40 mAh、普遍待機7~10天的智能手環(huán)產品,本系統(tǒng)在同等電池容量40 mAh下能將待機時間延長至15~20天,且在計步方面有更高的精確度,有進一步研究的意義與價值。
參考文獻
[1] 向劍鋒,李之俊.應用步頻建立步行能耗預測公式的研究[J].中國運動醫(yī)學雜志,2013,31(3):198-201.
[2] 江崇民,邱淑敏,王歡,等.平板運動跑臺和場地環(huán)境測試走、跑運動能量消耗的比較研究[J].體育科學,2011,30(7):30-36.
[3] 王步標,華明.運動生理學[M].北京:高等教育出版杜,2011.
[4] 范志祥.基于腕動信息的睡眠監(jiān)測儀研究[D].重慶:重慶大學,2008.
[5] 沈建華,楊艷琴.MSP430系列16位超低功耗單片機原理與實踐[M].北京:北京航空航天大學出版社,2008.
[6] 韓文正,馮迪,李鵬,等.基于加速度傳感器LIS3DH的計步器設計[J].傳感器與微系統(tǒng),2012,31(11):97-99.
[7] 武曉春.數字信號處理原理與實現[M].蘭州:蘭州大學出版社,2007.
[8] 宋浩然,廖文帥,趙一鳴.基于加速度傳感器ADXL330的高精度計步器[J].傳感技術學報,2006,19(4):1005-1008.
[9] 謝如花.步數檢測方法及在手腕式計步器中的應用研究[D].蘭州:蘭州交通大學,2013.
本文關鍵詞:步數檢測方法及在手腕式計步器中的應用研究,由筆耕文化傳播整理發(fā)布。
本文編號:248904
本文鏈接:http://sikaile.net/yixuelunwen/swyx/248904.html