王 磊,邵平凡(1.武漢科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065;2.智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,湖北 武漢 430065)
基于MSP430和μC/OS-Ⅱ的低功耗智能手環(huán)設(shè)計
王磊1,2,邵平凡1,2
(1.武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,湖北武漢 430065;
2.智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,湖北武漢 430065)
智能手環(huán)作為一款穿戴式的電子產(chǎn)品,制約其發(fā)展的最大因素是待機時間和數(shù)據(jù)的準確性,本文采用TI公司的MSP430F5529 16位超低功耗單片機為主控制器,在其上移植μC/OS-Ⅱ系統(tǒng)后改進了計步算法。實驗測試了手環(huán)的待機功耗和手環(huán)計步的精確度,通過與目前市場上其他主流產(chǎn)品對比,本文設(shè)計的智能手環(huán)在計步的準確度與低功耗方面都有顯著提升,有進一步研究和推廣的價值。
MSP430F5529;智能手環(huán);超低功耗;μC/OS-Ⅱ
智能手環(huán)是一種穿戴式智能設(shè)備,其最基本的功能是計步和睡眠質(zhì)量追蹤,而這兩個最基本的數(shù)據(jù)都是依靠手環(huán)中的加速度傳感器來測量的。加入用戶身高、體重、年齡等數(shù)值后通過軟件計算可得出消耗熱量[1-3]、行走距離、睡眠質(zhì)量[4]等其他數(shù)據(jù)。目前其困境主要來源兩個方面,一方面是數(shù)據(jù)的準確性,計步的原理是根據(jù)人行走時擺臂產(chǎn)生的加速度數(shù)據(jù)來統(tǒng)計步數(shù),如何屏蔽非行走時擺臂產(chǎn)生的干擾是計步算法的一大難點,而僅依靠睡眠時手臂產(chǎn)生的加速度數(shù)據(jù),以多導(dǎo)睡眠圖(包含腦電圖、心電圖、肌電圖等10多種生理信號)的標(biāo)準來衡量睡眠質(zhì)量不夠科學(xué)和嚴謹,只能作為一種參考;另一方面智能手環(huán)的待機時間也是制約其發(fā)展的一大因素,在供電電池電量受體積所限的情況下必須降低系統(tǒng)功耗達到延長待機的目的。本文設(shè)計的智能手環(huán)特點在于采用了TI公司的MSP430超低功耗單片機為主控制器,在其上移植了 μC/OS-Ⅱ操作系統(tǒng),完成了整個系統(tǒng)的軟硬件設(shè)計,并根據(jù)反復(fù)測試的實驗數(shù)據(jù)設(shè)計了精確度更高的計步算法。
本文將系統(tǒng)硬件部分劃分為三個模塊:系統(tǒng)主模塊、顯示模塊和數(shù)據(jù)通信模塊,系統(tǒng)硬件的結(jié)構(gòu)框圖如圖1所示。顯示模塊選用ST公司的STM8L101K3經(jīng)濟型單片機驅(qū)動的19×5字母LED點陣顯示數(shù)據(jù)。數(shù)據(jù)通信模塊選用 CC2541的低功耗藍牙芯片,完成與 IOS或ANDROID設(shè)備通信。系統(tǒng)主模塊主要由 LIS3DH傳感器、BQ2423電源管理模塊和MSP430F5529單片機組成。
圖1 智能手環(huán)硬件結(jié)構(gòu)框圖
系統(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片內(nèi)有4個通用串行通信接口,128 KB的閃存,8 KB的 SRAM,支持 SPI、I2C、UART,在滿足本系統(tǒng)應(yīng)用的情況下 MSP430F5529擁有最低的價格。
LIS3DH是ST公司出品的一款低功耗三軸加速度芯片,其有自動休眠的功能,本系統(tǒng)中如果 20 s內(nèi)傳感器沒有檢測到任何加速度的變化則自動進入休眠狀態(tài),當(dāng)加速度變化時LIS3DH會被喚醒。內(nèi)置有96級的FIFO可以作為數(shù)據(jù)緩存存儲32組XYZ軸的加速度數(shù)據(jù),當(dāng)FIFO溢出時會產(chǎn)生一個中斷輸出,將中斷輸出映射到MSP430F5529單片機的外部中斷源上能將430單片機從待機模式喚醒讀取FIFO中的數(shù)據(jù),緩存的存在能使430單片機一次連續(xù)讀取32組的數(shù)據(jù),相比一次讀取一組數(shù)據(jù)的方式能讓430單片機更多時間處于待機模式。LIS3DH芯片本身支持 SPI或者I2C兩種接口,本系統(tǒng)選擇SPI,其具體外圍電路如圖2所示。數(shù)字IO的供電雖然與芯片加速度部分的供電電壓相等,但必需保證IO部分先于加速度部分工作,否則芯片的初始化會有問題,因此加速度部分供電引腳VDD相比數(shù)字IO供電引腳VDD_IO另外并聯(lián)了一個大電容以保證VDD_IO足夠的上電時間。
圖2 LIS3 DH模塊電路圖
3.1移植μC/OS-Ⅱ系統(tǒng)
μC/OS-Ⅱ是一種采用優(yōu)先級搶占式調(diào)度方案的實時操作系統(tǒng),經(jīng)過多年研究已經(jīng)成功移植到多種MSP430系列的單片機中。本系統(tǒng)在 MSP430F5529上成功移植了μC/OS-Ⅱ系統(tǒng),移植的關(guān)鍵部分是根據(jù)MSP430F5529處理器內(nèi)核修改 OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三個文件中的代碼。
(1)OS_CPU.H文件編寫
根據(jù)MSP430F5529的內(nèi)核重新定義數(shù)據(jù)類型,不同內(nèi)核的控制器字長不同,μC/OS-Ⅱ移植包括各種數(shù)據(jù)類型、開關(guān)中斷和任務(wù)切換的宏定義,以及堆棧增長方向和一些常量標(biāo)識聲明。
(2)OS_CPU_A.ASM文件編寫
在OS_CPU_A.ASM文件中需要用匯編語言修改 4個函數(shù):OSStartHighRdy(),由 OSStart()函數(shù)調(diào)用,功能是運行優(yōu)先級最高的就緒任務(wù);OSCtxSw(),是一個任務(wù)級的任務(wù)切換函數(shù),調(diào)用該函數(shù)可能造成系統(tǒng)任務(wù)重新調(diào)度;OSIntCtxSw(),中斷級的任務(wù)切換函數(shù);OSTickISR(),提供一個定時Tick。
(3)OS_CPU_C.C文件編寫
在OS_CPU_C.C文件中需要改寫6個函數(shù),實際需要修改的只有 OSTaskStkInit()函數(shù),其余 5個函數(shù)只需聲明。OSTaskStkInit()函數(shù)由 OSTaskCreate()函數(shù)和OSTaskCreateExt()函數(shù)調(diào)用,用來初始化任務(wù)的堆棧。其代碼編寫如下:
3.2任務(wù)設(shè)計
智能手環(huán)的應(yīng)用非常強調(diào)低功耗特性。MSP430系列[4]的特點也在于此。如果由于運行μC/OS-Ⅱ而破壞了單片機的低功耗特性是得不償失的。在整個系統(tǒng)設(shè)計中,設(shè)計一個最低優(yōu)先級的任務(wù) Task_EnterLPM3(),其作用就是使系統(tǒng)進入LPM3的待機模式。這樣,在其他高優(yōu)先級的任務(wù)都運行完畢后,系統(tǒng)會調(diào)用這個任務(wù)使整個系統(tǒng)進入低功耗工作模式,當(dāng)其他任務(wù)又恢復(fù)運行時,會自動進入其特定的工作狀態(tài),以達到降低功耗的目的。
當(dāng) MSP430F5529在完成對各模塊的初始化和任務(wù)的創(chuàng)建后就調(diào)用 OSStart()函數(shù),此時系統(tǒng)任務(wù)由 μC/ OS-Ⅱ進行調(diào)度,開始 Task_EnterLPM3()任務(wù)處于就緒態(tài),其余所有任務(wù)都掛起,MCU進入LPM3的待機模式,通過系統(tǒng)中斷,在中斷服務(wù)程序中將對應(yīng)任務(wù)喚醒成就緒態(tài),其他任務(wù)按優(yōu)先級的高低搶占CPU運行,運行完后再次掛起[5]。
本系統(tǒng)中斷和任務(wù)主要設(shè)計了以下幾種:
(1)MCU內(nèi)部RTC的定時中斷(alarm interrupt),當(dāng)RTC時鐘走到定時時間觸發(fā)中斷,在中斷服務(wù)程序中喚醒定時任務(wù),任務(wù)函數(shù)震動馬達,達到無聲喚醒的鬧鐘功能。
(2)MCU內(nèi)部的 RTC的時鐘時間事件中斷(clock time event interrupt),當(dāng)RTC時鐘走到第二天0時觸發(fā)時鐘時間事件中斷,同上,當(dāng)任務(wù)函數(shù)獲取CPU后將當(dāng)天測得的步數(shù)、卡路里消耗、睡眠質(zhì)量等數(shù)據(jù)自動存入MCU片內(nèi)SRAM中。
(3)LIS3DH內(nèi)部 FIFO溢出中斷,任務(wù)函數(shù)喚醒MCU處理FIFO中的加速度數(shù)據(jù)。
(4)CC2541藍牙模塊接收到手機發(fā)送的數(shù)據(jù),觸發(fā)UARTRX中斷,任務(wù)函數(shù)根據(jù)不同的發(fā)送數(shù)據(jù)完成不同的操作,如進行數(shù)據(jù)同步,或修改內(nèi)部的參數(shù)(身高、體重、步長、時間、鬧鐘等)。
(5)按鍵中斷,任務(wù)函數(shù)根據(jù)按鍵的時間、次數(shù)進行復(fù)位,在LED點陣上顯示數(shù)據(jù),開關(guān)藍牙等操作。
本系統(tǒng)程序在 μC/OS-Ⅱ調(diào)度下的流程圖如下圖 3所示。
圖3 系統(tǒng)程序流程圖
智能手環(huán)的一大重要功能就是計步,而計步的準確性除依賴高精度的傳感器外,還需要復(fù)雜的軟件算法來實現(xiàn),本文參考多次測試的實驗數(shù)據(jù)進行算法的分析設(shè)計。
行走時產(chǎn)生的加速度數(shù)據(jù)波形是周期性的類正弦波[6],具有周期性且運動步數(shù)與正弦波數(shù)一致,在經(jīng)濾波[7]處理后的加速度數(shù)據(jù)中尋找波峰,當(dāng)出現(xiàn)一對波峰時,判斷是否滿足三個條件:一是兩個波峰的時間間隔是否在時間窗口內(nèi);二是局部最值之差是否滿足軟件設(shè)置的閾值;三是系統(tǒng)是否處于計步確認模式。如上述條件都滿足則步數(shù)加一,流程圖如圖4所示。
圖4 計步算法流程圖
每秒行走的步數(shù)在[2,5]區(qū)間內(nèi),第一個條件的時間窗口定義了人行走一步所需的最短和最長時間,不滿足就不計步。不同的運動形式(如打字時手臂的微小晃動與步行時手臂的擺動)產(chǎn)生的運動沖擊力不同,從而導(dǎo)致加速度幅度變化不同,第二個條件中加速度的局部最大最小值之差[8]可以反映正弦波形的幅度大小,通過其與閾值進行比較可以判斷人是否處于行走狀態(tài)。為判斷LIS3DH傳感器檢測到的加速度是真正的步行還是偶爾的擾動所致,第三個條件中設(shè)計兩個工作狀態(tài):搜索模式和確認模式[8-9],系統(tǒng)最初處于搜索模式,此時檢測到的步數(shù)計入緩存,若計入緩存的步數(shù)大于兩步則進入確認模式,開始正常計步并將之前緩存中的步數(shù)加上;系統(tǒng)處于確認模式時,若出現(xiàn)不滿足條件的情形,如數(shù)據(jù)波峰間隔不在時間窗口內(nèi)則退出計步,進入搜索模式重新搜索。
按照前面智能手環(huán)的軟硬件設(shè)計完成實驗?zāi)P偷拇罱?,選用TI公司的MSP-EXP430F5529LP評估板外接上傳感器模塊、藍牙模塊和顯示模塊,用 3.7 V的鋰電池為系統(tǒng)供電,使用藍牙助手APK驗證藍牙模塊與手機通信的連通性,實際模型如圖5所示。
圖5 實驗?zāi)P瓦\行情況
為檢測手環(huán)測量數(shù)據(jù)的精確性與系統(tǒng)的低功耗是否達到預(yù)期的效果,分別對系統(tǒng)計步的精確度與待機功耗做了合理的測試。表1是A、B、C、D四名被測試者將實驗?zāi)P徒壴谑滞笊系挠嫴綔y試結(jié)果,檢測步數(shù)是模型的顯示結(jié)果,實際步數(shù)是兩名旁觀者口頭計數(shù)的平均值。
表1 計步測試精確度
因為智能手環(huán)在實際使用中藍牙和顯示模塊不需要經(jīng)常開啟,測量實驗?zāi)P偷拇龣C(關(guān)閉藍牙和顯示模塊)功耗能反應(yīng)系統(tǒng)在電池供電下實際運行時間。如下表2是兩名被測試者(A和B)在一星期內(nèi)使用手環(huán)(關(guān)閉藍牙和顯示模塊)電池電量的消耗情況,電池電量為90 mAh。
本次試驗在構(gòu)建智能手環(huán)軟硬件系統(tǒng)方面探討了如何降低整個系統(tǒng)的功耗,并最終選擇了以MSP430F5529為主控制器移植 μC/OS-Ⅱ的設(shè)計方案,16位的MSP430單片機兼顧了性能與低功耗的特點,相比目前電池容量40 mAh、普遍待機7~10天的智能手環(huán)產(chǎn)品,本系統(tǒng)在同等電池容量40 mAh下能將待機時間延長至 15~20天,且在計步方面有更高的精確度,有進一步研究的意義與價值。
表2 待機功耗測試表
[1]向劍鋒,李之俊.應(yīng)用步頻建立步行能耗預(yù)測公式的研究[J].中國運動醫(yī)學(xué)雜志,2013,31(3):198-201.
[2]江崇民,邱淑敏,王歡,等.平板運動跑臺和場地環(huán)境測試走、跑運動能量消耗的比較研究[J].體育科學(xué),2011,30(7):30-36.
[3]王步標(biāo),華明.運動生理學(xué)[M].北京:高等教育出版杜,2011.
[4]范志祥.基于腕動信息的睡眠監(jiān)測儀研究[D].重慶:重慶大學(xué),2008.
[5]沈建華,楊艷琴.MSP430系列 16位超低功耗單片機原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008.
[6]韓文正,馮迪,李鵬,等.基于加速度傳感器 LIS3DH的計步器設(shè)計[J].傳感器與微系統(tǒng),2012,31(11):97-99.
[7]武曉春.數(shù)字信號處理原理與實現(xiàn)[M].蘭州:蘭州大學(xué)出版社,2007.
[8]宋浩然,廖文帥,趙一鳴.基于加速度傳感器 ADXL330的高精度計步器[J].傳感技術(shù)學(xué)報,2006,19(4):1005-1008.
[9]謝如花.步數(shù)檢測方法及在手腕式計步器中的應(yīng)用研究[D].蘭州:蘭州交通大學(xué),2013.
Low-power smart bracelet based on MSP430 MCU and μC/OS-Ⅱ
Wang Lei1,2,Shao Pingfan1,2
(1.College of Computer Science and Technology,Wuhan University of Science and Technology,Wuhan 430065,China;
2.Hubei Province Key Laboratory of Intelligent Information Processing and Real-time Industrial System,Wuhan 430065,China)
Smart bracelet as a wearable electronic products,the biggest factor restricting its development is standby time and the accuracy of data.This paper uses TI′s MSP430F5529 16-bit ultra-power microcontroller as the based controller,transplants μC/ OS-Ⅱ system on it and improves the pedometer algorithm.By experimental testing the pedometer accuracy and the standby power consumption.Contrasting to the other mainstream products currently on the market,the smart bracelet of this paper proposed hassignificantlyim proved in terms of pedometer accuracy and low power consumption,and it is worthy of further research and extension.
MSP430F5529;smart bracelet;ultra low power;μC/OS-Ⅱ
TP368
A
1674-7720(2015)15-0095-04
王磊,邵平凡.基于MSP430和μC/OS-Ⅱ的低功耗智能手環(huán)設(shè)計[J].微型機與應(yīng)用,2015,34(15):95-98.
2015-03-05)
王磊(1990-),男,碩士研究生,主要研究方向:嵌入式。
邵平凡(1956-),男,碩士研究生導(dǎo)師,教授,主要研究方向:嵌入式系統(tǒng)。