王 磊,邵平凡(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.智能信息處理與實時工業系統湖北省重點實驗室,湖北 武漢 430065)
基于MSP430和μC/OS-Ⅱ的低功耗智能手環設計
王磊1,2,邵平凡1,2
(1.武漢科技大學計算機科學與技術學院,湖北武漢 430065;
2.智能信息處理與實時工業系統湖北省重點實驗室,湖北武漢 430065)
智能手環作為一款穿戴式的電子產品,制約其發展的最大因素是待機時間和數據的準確性,本文采用TI公司的MSP430F5529 16位超低功耗單片機為主控制器,在其上移植μC/OS-Ⅱ系統后改進了計步算法。實驗測試了手環的待機功耗和手環計步的精確度,通過與目前市場上其他主流產品對比,本文設計的智能手環在計步的準確度與低功耗方面都有顯著提升,有進一步研究和推廣的價值。
MSP430F5529;智能手環;超低功耗;μC/OS-Ⅱ
智能手環是一種穿戴式智能設備,其最基本的功能是計步和睡眠質量追蹤,而這兩個最基本的數據都是依靠手環中的加速度傳感器來測量的。加入用戶身高、體重、年齡等數值后通過軟件計算可得出消耗熱量[1-3]、行走距離、睡眠質量[4]等其他數據。目前其困境主要來源兩個方面,一方面是數據的準確性,計步的原理是根據人行走時擺臂產生的加速度數據來統計步數,如何屏蔽非行走時擺臂產生的干擾是計步算法的一大難點,而僅依靠睡眠時手臂產生的加速度數據,以多導睡眠圖(包含腦電圖、心電圖、肌電圖等10多種生理信號)的標準來衡量睡眠質量不夠科學和嚴謹,只能作為一種參考;另一方面智能手環的待機時間也是制約其發展的一大因素,在供電電池電量受體積所限的情況下必須降低系統功耗達到延長待機的目的。本文設計的智能手環特點在于采用了TI公司的MSP430超低功耗單片機為主控制器,在其上移植了 μC/OS-Ⅱ操作系統,完成了整個系統的軟硬件設計,并根據反復測試的實驗數據設計了精確度更高的計步算法。
本文將系統硬件部分劃分為三個模塊:系統主模塊、顯示模塊和數據通信模塊,系統硬件的結構框圖如圖1所示。顯示模塊選用ST公司的STM8L101K3經濟型單片機驅動的19×5字母LED點陣顯示數據。數據通信模塊選用 CC2541的低功耗藍牙芯片,完成與 IOS或ANDROID設備通信。系統主模塊主要由 LIS3DH傳感器、BQ2423電源管理模塊和MSP430F5529單片機組成。

圖1 智能手環硬件結構框圖
系統選擇MSP430F5529單片機為主控制器,其主要優勢如下:
(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,在滿足本系統應用的情況下 MSP430F5529擁有最低的價格。
LIS3DH是ST公司出品的一款低功耗三軸加速度芯片,其有自動休眠的功能,本系統中如果 20 s內傳感器沒有檢測到任何加速度的變化則自動進入休眠狀態,當加速度變化時LIS3DH會被喚醒。內置有96級的FIFO可以作為數據緩存存儲32組XYZ軸的加速度數據,當FIFO溢出時會產生一個中斷輸出,將中斷輸出映射到MSP430F5529單片機的外部中斷源上能將430單片機從待機模式喚醒讀取FIFO中的數據,緩存的存在能使430單片機一次連續讀取32組的數據,相比一次讀取一組數據的方式能讓430單片機更多時間處于待機模式。LIS3DH芯片本身支持 SPI或者I2C兩種接口,本系統選擇SPI,其具體外圍電路如圖2所示。數字IO的供電雖然與芯片加速度部分的供電電壓相等,但必需保證IO部分先于加速度部分工作,否則芯片的初始化會有問題,因此加速度部分供電引腳VDD相比數字IO供電引腳VDD_IO另外并聯了一個大電容以保證VDD_IO足夠的上電時間。

圖2 LIS3 DH模塊電路圖
3.1移植μC/OS-Ⅱ系統
μC/OS-Ⅱ是一種采用優先級搶占式調度方案的實時操作系統,經過多年研究已經成功移植到多種MSP430系列的單片機中。本系統在 MSP430F5529上成功移植了μC/OS-Ⅱ系統,移植的關鍵部分是根據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()函數調用,功能是運行優先級最高的就緒任務;OSCtxSw(),是一個任務級的任務切換函數,調用該函數可能造成系統任務重新調度;OSIntCtxSw(),中斷級的任務切換函數;OSTickISR(),提供一個定時Tick。
(3)OS_CPU_C.C文件編寫
在OS_CPU_C.C文件中需要改寫6個函數,實際需要修改的只有 OSTaskStkInit()函數,其余 5個函數只需聲明。OSTaskStkInit()函數由 OSTaskCreate()函數和OSTaskCreateExt()函數調用,用來初始化任務的堆棧。其代碼編寫如下:


3.2任務設計
智能手環的應用非常強調低功耗特性。MSP430系列[4]的特點也在于此。如果由于運行μC/OS-Ⅱ而破壞了單片機的低功耗特性是得不償失的。在整個系統設計中,設計一個最低優先級的任務 Task_EnterLPM3(),其作用就是使系統進入LPM3的待機模式。這樣,在其他高優先級的任務都運行完畢后,系統會調用這個任務使整個系統進入低功耗工作模式,當其他任務又恢復運行時,會自動進入其特定的工作狀態,以達到降低功耗的目的。
當 MSP430F5529在完成對各模塊的初始化和任務的創建后就調用 OSStart()函數,此時系統任務由 μC/ OS-Ⅱ進行調度,開始 Task_EnterLPM3()任務處于就緒態,其余所有任務都掛起,MCU進入LPM3的待機模式,通過系統中斷,在中斷服務程序中將對應任務喚醒成就緒態,其他任務按優先級的高低搶占CPU運行,運行完后再次掛起[5]。
本系統中斷和任務主要設計了以下幾種:
(1)MCU內部RTC的定時中斷(alarm interrupt),當RTC時鐘走到定時時間觸發中斷,在中斷服務程序中喚醒定時任務,任務函數震動馬達,達到無聲喚醒的鬧鐘功能。
(2)MCU內部的 RTC的時鐘時間事件中斷(clock time event interrupt),當RTC時鐘走到第二天0時觸發時鐘時間事件中斷,同上,當任務函數獲取CPU后將當天測得的步數、卡路里消耗、睡眠質量等數據自動存入MCU片內SRAM中。
(3)LIS3DH內部 FIFO溢出中斷,任務函數喚醒MCU處理FIFO中的加速度數據。
(4)CC2541藍牙模塊接收到手機發送的數據,觸發UARTRX中斷,任務函數根據不同的發送數據完成不同的操作,如進行數據同步,或修改內部的參數(身高、體重、步長、時間、鬧鐘等)。
(5)按鍵中斷,任務函數根據按鍵的時間、次數進行復位,在LED點陣上顯示數據,開關藍牙等操作。
本系統程序在 μC/OS-Ⅱ調度下的流程圖如下圖 3所示。

圖3 系統程序流程圖
智能手環的一大重要功能就是計步,而計步的準確性除依賴高精度的傳感器外,還需要復雜的軟件算法來實現,本文參考多次測試的實驗數據進行算法的分析設計。
行走時產生的加速度數據波形是周期性的類正弦波[6],具有周期性且運動步數與正弦波數一致,在經濾波[7]處理后的加速度數據中尋找波峰,當出現一對波峰時,判斷是否滿足三個條件:一是兩個波峰的時間間隔是否在時間窗口內;二是局部最值之差是否滿足軟件設置的閾值;三是系統是否處于計步確認模式。如上述條件都滿足則步數加一,流程圖如圖4所示。

圖4 計步算法流程圖
每秒行走的步數在[2,5]區間內,第一個條件的時間窗口定義了人行走一步所需的最短和最長時間,不滿足就不計步。不同的運動形式(如打字時手臂的微小晃動與步行時手臂的擺動)產生的運動沖擊力不同,從而導致加速度幅度變化不同,第二個條件中加速度的局部最大最小值之差[8]可以反映正弦波形的幅度大小,通過其與閾值進行比較可以判斷人是否處于行走狀態。為判斷LIS3DH傳感器檢測到的加速度是真正的步行還是偶爾的擾動所致,第三個條件中設計兩個工作狀態:搜索模式和確認模式[8-9],系統最初處于搜索模式,此時檢測到的步數計入緩存,若計入緩存的步數大于兩步則進入確認模式,開始正常計步并將之前緩存中的步數加上;系統處于確認模式時,若出現不滿足條件的情形,如數據波峰間隔不在時間窗口內則退出計步,進入搜索模式重新搜索。
按照前面智能手環的軟硬件設計完成實驗模型的搭建,選用TI公司的MSP-EXP430F5529LP評估板外接上傳感器模塊、藍牙模塊和顯示模塊,用 3.7 V的鋰電池為系統供電,使用藍牙助手APK驗證藍牙模塊與手機通信的連通性,實際模型如圖5所示。

圖5 實驗模型運行情況
為檢測手環測量數據的精確性與系統的低功耗是否達到預期的效果,分別對系統計步的精確度與待機功耗做了合理的測試。表1是A、B、C、D四名被測試者將實驗模型綁在手腕上的計步測試結果,檢測步數是模型的顯示結果,實際步數是兩名旁觀者口頭計數的平均值。

表1 計步測試精確度
因為智能手環在實際使用中藍牙和顯示模塊不需要經常開啟,測量實驗模型的待機(關閉藍牙和顯示模塊)功耗能反應系統在電池供電下實際運行時間。如下表2是兩名被測試者(A和B)在一星期內使用手環(關閉藍牙和顯示模塊)電池電量的消耗情況,電池電量為90 mAh。
本次試驗在構建智能手環軟硬件系統方面探討了如何降低整個系統的功耗,并最終選擇了以MSP430F5529為主控制器移植 μC/OS-Ⅱ的設計方案,16位的MSP430單片機兼顧了性能與低功耗的特點,相比目前電池容量40 mAh、普遍待機7~10天的智能手環產品,本系統在同等電池容量40 mAh下能將待機時間延長至 15~20天,且在計步方面有更高的精確度,有進一步研究的意義與價值。

表2 待機功耗測試表
[1]向劍鋒,李之俊.應用步頻建立步行能耗預測公式的研究[J].中國運動醫學雜志,2013,31(3):198-201.
[2]江崇民,邱淑敏,王歡,等.平板運動跑臺和場地環境測試走、跑運動能量消耗的比較研究[J].體育科學,2011,30(7):30-36.
[3]王步標,華明.運動生理學[M].北京:高等教育出版杜,2011.
[4]范志祥.基于腕動信息的睡眠監測儀研究[D].重慶:重慶大學,2008.
[5]沈建華,楊艷琴.MSP430系列 16位超低功耗單片機原理與實踐[M].北京:北京航空航天大學出版社,2008.
[6]韓文正,馮迪,李鵬,等.基于加速度傳感器 LIS3DH的計步器設計[J].傳感器與微系統,2012,31(11):97-99.
[7]武曉春.數字信號處理原理與實現[M].蘭州:蘭州大學出版社,2007.
[8]宋浩然,廖文帥,趙一鳴.基于加速度傳感器 ADXL330的高精度計步器[J].傳感技術學報,2006,19(4):1005-1008.
[9]謝如花.步數檢測方法及在手腕式計步器中的應用研究[D].蘭州:蘭州交通大學,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-Ⅱ的低功耗智能手環設計[J].微型機與應用,2015,34(15):95-98.
2015-03-05)
王磊(1990-),男,碩士研究生,主要研究方向:嵌入式。
邵平凡(1956-),男,碩士研究生導師,教授,主要研究方向:嵌入式系統。