《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于MSP430和μC/OS-Ⅱ的低功耗智能手環(huán)設(shè)計(jì)
基于MSP430和μC/OS-Ⅱ的低功耗智能手環(huán)設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第15期
王 磊1,2,邵平凡1,2
(1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065; 2.智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430065)
摘要: 智能手環(huán)作為一款穿戴式的電子產(chǎn)品,制約其發(fā)展的最大因素是待機(jī)時(shí)間和數(shù)據(jù)的準(zhǔn)確性,本文采用TI公司的MSP430F5529 16位超低功耗單片機(jī)為主控制器,在其上移植μC/OS-Ⅱ系統(tǒng)后改進(jìn)了計(jì)步算法。實(shí)驗(yàn)測(cè)試了手環(huán)的待機(jī)功耗和手環(huán)計(jì)步的精確度,通過(guò)與目前市場(chǎng)上其他主流產(chǎn)品對(duì)比,本文設(shè)計(jì)的智能手環(huán)在計(jì)步的準(zhǔn)確度與低功耗方面都有顯著提升,有進(jìn)一步研究和推廣的價(jià)值。
Abstract:
Key words :

  摘  要智能手環(huán)作為一款穿戴式的電子產(chǎn)品,制約其發(fā)展的最大因素是待機(jī)時(shí)間和數(shù)據(jù)的準(zhǔn)確性,本文采用TI公司的MSP430F5529 16位超低功耗單片機(jī)為主控制器,在其上移植μC/OS-Ⅱ系統(tǒng)后改進(jìn)了計(jì)步算法。實(shí)驗(yàn)測(cè)試了手環(huán)的待機(jī)功耗和手環(huán)計(jì)步的精確度,通過(guò)與目前市場(chǎng)上其他主流產(chǎn)品對(duì)比,本文設(shè)計(jì)的智能手環(huán)在計(jì)步的準(zhǔn)確度與低功耗方面都有顯著提升,有進(jìn)一步研究和推廣的價(jià)值。

  關(guān)鍵詞: MSP430F5529;智能手環(huán);超低功耗;μC/OS-Ⅱ

0 引言

  智能手環(huán)是一種穿戴式智能設(shè)備,其最基本的功能是計(jì)步和睡眠質(zhì)量追蹤,而這兩個(gè)最基本的數(shù)據(jù)都是依靠手環(huán)中的加速度傳感器來(lái)測(cè)量的。加入用戶身高、體重、年齡等數(shù)值后通過(guò)軟件計(jì)算可得出消耗熱量[1-3]、行走距離、睡眠質(zhì)量[4]等其他數(shù)據(jù)。目前其困境主要來(lái)源兩個(gè)方面,一方面是數(shù)據(jù)的準(zhǔn)確性,計(jì)步的原理是根據(jù)人行走時(shí)擺臂產(chǎn)生的加速度數(shù)據(jù)來(lái)統(tǒng)計(jì)步數(shù),如何屏蔽非行走時(shí)擺臂產(chǎn)生的干擾是計(jì)步算法的一大難點(diǎn),而僅依靠睡眠時(shí)手臂產(chǎn)生的加速度數(shù)據(jù),以多導(dǎo)睡眠圖(包含腦電圖、心電圖、肌電圖等10多種生理信號(hào))的標(biāo)準(zhǔn)來(lái)衡量睡眠質(zhì)量不夠科學(xué)和嚴(yán)謹(jǐn),只能作為一種參考;另一方面智能手環(huán)的待機(jī)時(shí)間也是制約其發(fā)展的一大因素,在供電電池電量受體積所限的情況下必須降低系統(tǒng)功耗達(dá)到延長(zhǎng)待機(jī)的目的。本文設(shè)計(jì)的智能手環(huán)特點(diǎn)在于采用了TI公司的MSP430超低功耗單片機(jī)為主控制器,在其上移植了μC/OS-Ⅱ操作系統(tǒng),完成了整個(gè)系統(tǒng)的軟硬件設(shè)計(jì),并根據(jù)反復(fù)測(cè)試的實(shí)驗(yàn)數(shù)據(jù)設(shè)計(jì)了精確度更高的計(jì)步算法。

1 硬件設(shè)計(jì)

001.jpg


  本文將系統(tǒng)硬件部分劃分為三個(gè)模塊:系統(tǒng)主模塊、顯示模塊和數(shù)據(jù)通信模塊,系統(tǒng)硬件的結(jié)構(gòu)框圖如圖1所示。顯示模塊選用ST公司的STM8L101K3經(jīng)濟(jì)型單片機(jī)驅(qū)動(dòng)的19×5字母LED點(diǎn)陣顯示數(shù)據(jù)。數(shù)據(jù)通信模塊選用CC2541的低功耗藍(lán)牙芯片,完成與IOS或ANDROID設(shè)備通信。系統(tǒng)主模塊主要由LIS3DH傳感器、BQ2423電源管理模塊和MSP430F5529單片機(jī)組成。

  系統(tǒng)選擇MSP430F5529單片機(jī)為主控制器,其主要優(yōu)勢(shì)如下:

  (1)低功耗。MSP430F5529主要用到2種功耗模式,一是激活模式(AM),其功耗為270 μA/MHz(8 MHz,  3.0 V);二是待機(jī)模式(LPM3),功耗為2.1 μA(3.0 V)。

 ?。?)高性價(jià)比。MSP430F5529片內(nèi)有4個(gè)通用串行通信接口,128 KB的閃存,8 KB的SRAM,支持SPI、I2C、UART,在滿足本系統(tǒng)應(yīng)用的情況下MSP430F5529擁有最低的價(jià)格。

2 LIS3DH傳感器

  LIS3DH是ST公司出品的一款低功耗三軸加速度芯片,其有自動(dòng)休眠的功能,本系統(tǒng)中如果20 s內(nèi)傳感器沒(méi)有檢測(cè)到任何加速度的變化則自動(dòng)進(jìn)入休眠狀態(tài),當(dāng)加速度變化時(shí)LIS3DH會(huì)被喚醒。內(nèi)置有96級(jí)的FIFO可以作為數(shù)據(jù)緩存存儲(chǔ)32組XYZ軸的加速度數(shù)據(jù),當(dāng)FIFO溢出時(shí)會(huì)產(chǎn)生一個(gè)中斷輸出,將中斷輸出映射到MSP430F5529單片機(jī)的外部中斷源上能將430單片機(jī)從待機(jī)模式喚醒讀取FIFO中的數(shù)據(jù),緩存的存在能使430單片機(jī)一次連續(xù)讀取32組的數(shù)據(jù),相比一次讀取一組數(shù)據(jù)的方式能讓430單片機(jī)更多時(shí)間處于待機(jī)模式。LIS3DH芯片本身支持 SPI或者I2C兩種接口,本系統(tǒng)選擇SPI,其具體外圍電路如圖2所示。數(shù)字IO的供電雖然與芯片加速度部分的供電電壓相等,但必需保證IO部分先于加速度部分工作,否則芯片的初始化會(huì)有問(wèn)題,因此加速度部分供電引腳VDD相比數(shù)字IO供電引腳VDD_IO另外并聯(lián)了一個(gè)大電容以保證VDD_IO足夠的上電時(shí)間。

002.jpg

3 系統(tǒng)程序設(shè)計(jì)

  3.1 移植μC/OS-Ⅱ系統(tǒng)

  μC/OS-Ⅱ是一種采用優(yōu)先級(jí)搶占式調(diào)度方案的實(shí)時(shí)操作系統(tǒng),經(jīng)過(guò)多年研究已經(jīng)成功移植到多種MSP430系列的單片機(jī)中。本系統(tǒng)在MSP430F5529上成功移植了μC/OS-Ⅱ系統(tǒng),移植的關(guān)鍵部分是根據(jù)MSP430F5529處理器內(nèi)核修改OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三個(gè)文件中的代碼。

 ?。?)OS_CPU.H文件編寫(xiě)

  根據(jù)MSP430F5529的內(nèi)核重新定義數(shù)據(jù)類型,不同內(nèi)核的控制器字長(zhǎng)不同,μC/OS-Ⅱ移植包括各種數(shù)據(jù)類型、開(kāi)關(guān)中斷和任務(wù)切換的宏定義,以及堆棧增長(zhǎng)方向和一些常量標(biāo)識(shí)聲明。

 ?。?)OS_CPU_A.ASM文件編寫(xiě)

  在OS_CPU_A.ASM文件中需要用匯編語(yǔ)言修改4個(gè)函數(shù):OSStartHighRdy(),由OSStart()函數(shù)調(diào)用,功能是運(yùn)行優(yōu)先級(jí)最高的就緒任務(wù);OSCtxSw(),是一個(gè)任務(wù)級(jí)的任務(wù)切換函數(shù),調(diào)用該函數(shù)可能造成系統(tǒng)任務(wù)重新調(diào)度;OSIntCtxSw(),中斷級(jí)的任務(wù)切換函數(shù);OSTickISR(),提供一個(gè)定時(shí)Tick。

 ?。?)OS_CPU_C.C文件編寫(xiě)

  在OS_CPU_C.C文件中需要改寫(xiě)6個(gè)函數(shù),實(shí)際需要修改的只有OSTaskStkInit()函數(shù),其余5個(gè)函數(shù)只需聲明。OSTaskStkInit()函數(shù)由OSTaskCreate()函數(shù)和OSTaskCreateExt()函數(shù)調(diào)用,用來(lái)初始化任務(wù)的堆棧。其代碼編寫(xiě)如下:

  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 任務(wù)設(shè)計(jì)

  智能手環(huán)的應(yīng)用非常強(qiáng)調(diào)低功耗特性。MSP430系列[4]的特點(diǎn)也在于此。如果由于運(yùn)行μC/OS-Ⅱ而破壞了單片機(jī)的低功耗特性是得不償失的。在整個(gè)系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)一個(gè)最低優(yōu)先級(jí)的任務(wù)Task_EnterLPM3(),其作用就是使系統(tǒng)進(jìn)入LPM3的待機(jī)模式。這樣,在其他高優(yōu)先級(jí)的任務(wù)都運(yùn)行完畢后,系統(tǒng)會(huì)調(diào)用這個(gè)任務(wù)使整個(gè)系統(tǒng)進(jìn)入低功耗工作模式,當(dāng)其他任務(wù)又恢復(fù)運(yùn)行時(shí),會(huì)自動(dòng)進(jìn)入其特定的工作狀態(tài),以達(dá)到降低功耗的目的。

  當(dāng)MSP430F5529在完成對(duì)各模塊的初始化和任務(wù)的創(chuàng)建后就調(diào)用OSStart()函數(shù),此時(shí)系統(tǒng)任務(wù)由μC/OS-Ⅱ進(jìn)行調(diào)度,開(kāi)始Task_EnterLPM3()任務(wù)處于就緒態(tài),其余所有任務(wù)都掛起,MCU進(jìn)入LPM3的待機(jī)模式,通過(guò)系統(tǒng)中斷,在中斷服務(wù)程序中將對(duì)應(yīng)任務(wù)喚醒成就緒態(tài),其他任務(wù)按優(yōu)先級(jí)的高低搶占CPU運(yùn)行,運(yùn)行完后再次掛起[5]。

  本系統(tǒng)中斷和任務(wù)主要設(shè)計(jì)了以下幾種:

 ?。?)MCU內(nèi)部RTC的定時(shí)中斷(alarm interrupt),當(dāng)RTC時(shí)鐘走到定時(shí)時(shí)間觸發(fā)中斷,在中斷服務(wù)程序中喚醒定時(shí)任務(wù),任務(wù)函數(shù)震動(dòng)馬達(dá),達(dá)到無(wú)聲喚醒的鬧鐘功能。

  (2)MCU內(nèi)部的RTC的時(shí)鐘時(shí)間事件中斷(clock time event interrupt),當(dāng)RTC時(shí)鐘走到第二天0時(shí)觸發(fā)時(shí)鐘時(shí)間事件中斷,同上,當(dāng)任務(wù)函數(shù)獲取CPU后將當(dāng)天測(cè)得的步數(shù)、卡路里消耗、睡眠質(zhì)量等數(shù)據(jù)自動(dòng)存入MCU片內(nèi)SRAM中。

 ?。?)LIS3DH內(nèi)部FIFO溢出中斷,任務(wù)函數(shù)喚醒MCU處理FIFO中的加速度數(shù)據(jù)。

 ?。?)CC2541藍(lán)牙模塊接收到手機(jī)發(fā)送的數(shù)據(jù),觸發(fā)UARTRX中斷,任務(wù)函數(shù)根據(jù)不同的發(fā)送數(shù)據(jù)完成不同的操作,如進(jìn)行數(shù)據(jù)同步,或修改內(nèi)部的參數(shù)(身高、體重、步長(zhǎng)、時(shí)間、鬧鐘等)。

 ?。?)按鍵中斷,任務(wù)函數(shù)根據(jù)按鍵的時(shí)間、次數(shù)進(jìn)行復(fù)位,在LED點(diǎn)陣上顯示數(shù)據(jù),開(kāi)關(guān)藍(lán)牙等操作。

  本系統(tǒng)程序在μC/OS-Ⅱ調(diào)度下的流程圖如下圖3所示。

003.jpg

4 計(jì)步算法

  智能手環(huán)的一大重要功能就是計(jì)步,而計(jì)步的準(zhǔn)確性除依賴高精度的傳感器外,還需要復(fù)雜的軟件算法來(lái)實(shí)現(xiàn),本文參考多次測(cè)試的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行算法的分析設(shè)計(jì)。

  行走時(shí)產(chǎn)生的加速度數(shù)據(jù)波形是周期性的類正弦波[6],具有周期性且運(yùn)動(dòng)步數(shù)與正弦波數(shù)一致,在經(jīng)濾波[7]處理后的加速度數(shù)據(jù)中尋找波峰,當(dāng)出現(xiàn)一對(duì)波峰時(shí),判斷是否滿足三個(gè)條件:一是兩個(gè)波峰的時(shí)間間隔是否在時(shí)間窗口內(nèi);二是局部最值之差是否滿足軟件設(shè)置的閾值;三是系統(tǒng)是否處于計(jì)步確認(rèn)模式。如上述條件都滿足則步數(shù)加一,流程圖如圖4所示。

004.jpg

  每秒行走的步數(shù)在[2,5]區(qū)間內(nèi),第一個(gè)條件的時(shí)間窗口定義了人行走一步所需的最短和最長(zhǎng)時(shí)間,不滿足就不計(jì)步。不同的運(yùn)動(dòng)形式(如打字時(shí)手臂的微小晃動(dòng)與步行時(shí)手臂的擺動(dòng))產(chǎn)生的運(yùn)動(dòng)沖擊力不同,從而導(dǎo)致加速度幅度變化不同,第二個(gè)條件中加速度的局部最大最小值之差[8]可以反映正弦波形的幅度大小,通過(guò)其與閾值進(jìn)行比較可以判斷人是否處于行走狀態(tài)。為判斷LIS3DH傳感器檢測(cè)到的加速度是真正的步行還是偶爾的擾動(dòng)所致,第三個(gè)條件中設(shè)計(jì)兩個(gè)工作狀態(tài):搜索模式和確認(rèn)模式[8-9],系統(tǒng)最初處于搜索模式,此時(shí)檢測(cè)到的步數(shù)計(jì)入緩存,若計(jì)入緩存的步數(shù)大于兩步則進(jìn)入確認(rèn)模式,開(kāi)始正常計(jì)步并將之前緩存中的步數(shù)加上;系統(tǒng)處于確認(rèn)模式時(shí),若出現(xiàn)不滿足條件的情形,如數(shù)據(jù)波峰間隔不在時(shí)間窗口內(nèi)則退出計(jì)步,進(jìn)入搜索模式重新搜索。

5 測(cè)試

  按照前面智能手環(huán)的軟硬件設(shè)計(jì)完成實(shí)驗(yàn)?zāi)P偷拇罱ǎx用TI公司的MSP-EXP430F5529LP評(píng)估板外接上傳感器模塊、藍(lán)牙模塊和顯示模塊,用3.7 V的鋰電池為系統(tǒng)供電,使用藍(lán)牙助手APK驗(yàn)證藍(lán)牙模塊與手機(jī)通信的連通性,實(shí)際模型如圖5所示。

005.jpg

  為檢測(cè)手環(huán)測(cè)量數(shù)據(jù)的精確性與系統(tǒng)的低功耗是否達(dá)到預(yù)期的效果,分別對(duì)系統(tǒng)計(jì)步的精確度與待機(jī)功耗做了合理的測(cè)試。表1是A、B、C、D四名被測(cè)試者將實(shí)驗(yàn)?zāi)P徒壴谑滞笊系挠?jì)步測(cè)試結(jié)果,檢測(cè)步數(shù)是模型的顯示結(jié)果,實(shí)際步數(shù)是兩名旁觀者口頭計(jì)數(shù)的平均值。

006.jpg

  因?yàn)橹悄苁汁h(huán)在實(shí)際使用中藍(lán)牙和顯示模塊不需要經(jīng)常開(kāi)啟,測(cè)量實(shí)驗(yàn)?zāi)P偷拇龣C(jī)(關(guān)閉藍(lán)牙和顯示模塊)功耗能反應(yīng)系統(tǒng)在電池供電下實(shí)際運(yùn)行時(shí)間。如下表2是兩名被測(cè)試者(A和B)在一星期內(nèi)使用手環(huán)(關(guān)閉藍(lán)牙和顯示模塊)電池電量的消耗情況,電池電量為90 mAh。

007.jpg

6總結(jié)

  本次試驗(yàn)在構(gòu)建智能手環(huán)軟硬件系統(tǒng)方面探討了如何降低整個(gè)系統(tǒng)的功耗,并最終選擇了以MSP430F5529為主控制器移植μC/OS-Ⅱ的設(shè)計(jì)方案,16位的MSP430單片機(jī)兼顧了性能與低功耗的特點(diǎn),相比目前電池容量40 mAh、普遍待機(jī)7~10天的智能手環(huán)產(chǎn)品,本系統(tǒng)在同等電池容量40 mAh下能將待機(jī)時(shí)間延長(zhǎng)至15~20天,且在計(jì)步方面有更高的精確度,有進(jìn)一步研究的意義與價(jià)值。

參考文獻(xiàn)

  [1] 向劍鋒,李之俊.應(yīng)用步頻建立步行能耗預(yù)測(cè)公式的研究[J].中國(guó)運(yùn)動(dòng)醫(yī)學(xué)雜志,2013,31(3):198-201.

  [2] 江崇民,邱淑敏,王歡,等.平板運(yùn)動(dòng)跑臺(tái)和場(chǎng)地環(huán)境測(cè)試走、跑運(yùn)動(dòng)能量消耗的比較研究[J].體育科學(xué),2011,30(7):30-36.

  [3] 王步標(biāo),華明.運(yùn)動(dòng)生理學(xué)[M].北京:高等教育出版杜,2011.

  [4] 范志祥.基于腕動(dòng)信息的睡眠監(jiān)測(cè)儀研究[D].重慶:重慶大學(xué),2008.

  [5] 沈建華,楊艷琴.MSP430系列16位超低功耗單片機(jī)原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.

  [6] 韓文正,馮迪,李鵬,等.基于加速度傳感器LIS3DH的計(jì)步器設(shè)計(jì)[J].傳感器與微系統(tǒng),2012,31(11):97-99.

  [7] 武曉春.數(shù)字信號(hào)處理原理與實(shí)現(xiàn)[M].蘭州:蘭州大學(xué)出版社,2007.

  [8] 宋浩然,廖文帥,趙一鳴.基于加速度傳感器ADXL330的高精度計(jì)步器[J].傳感技術(shù)學(xué)報(bào),2006,19(4):1005-1008.

  [9] 謝如花.步數(shù)檢測(cè)方法及在手腕式計(jì)步器中的應(yīng)用研究[D].蘭州:蘭州交通大學(xué),2013.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。