陳浩鑫,鐘雄源,葉格豪,甘浩城,楊颯
(廣東第二師范學(xué)院,廣東廣州,510303)
隨著智能信息技術(shù)飛速發(fā)展,國(guó)民經(jīng)濟(jì)能力穩(wěn)固提升,人民的生活質(zhì)量得到極大改善。與此同時(shí),人們面臨的學(xué)習(xí)、工作等方面的壓力逐漸增大,身體時(shí)常處于亞健康狀態(tài)。運(yùn)動(dòng)成為人們保持良好健康狀態(tài)的一種有效措施,運(yùn)動(dòng)手表也因此成為一種時(shí)尚的電子產(chǎn)品,為人們提供實(shí)時(shí)運(yùn)動(dòng)數(shù)據(jù)和環(huán)境信息[1~4]。本文設(shè)計(jì)了一款攜帶便捷且具有運(yùn)動(dòng)健康監(jiān)測(cè)功能的智能手表,該系統(tǒng)選用STM32F411CEU6 (主頻:100MHz RAM:128KB ROM:512KB)作為主控芯片,連接了MPU6050 六軸陀螺儀模塊和BMP180 氣壓計(jì)模塊,通過(guò)TP4056 充電模塊和TPS63STM32F411CEU6020 升降壓模塊給系統(tǒng)續(xù)航,利用TFT 彩色屏作為顯示模塊,用于顯示時(shí)間、溫度、氣壓和海拔等信息,并具有屏幕亮度調(diào)節(jié),定時(shí)熄屏,抬手喚醒,步數(shù)計(jì)量等功能,可為運(yùn)動(dòng)者實(shí)時(shí)提供運(yùn)動(dòng)信息和環(huán)境數(shù)據(jù)。
本文設(shè)計(jì)的智能手表以STM32F411 芯片為核心,使用UCOSIII 操作系統(tǒng)對(duì)任務(wù)進(jìn)行調(diào)度,硬件部分采用BMP180大氣壓計(jì)量傳感器模塊實(shí)現(xiàn)溫度和大氣壓的測(cè)量與記錄,MPU6050 陀螺儀傳感器模塊檢測(cè)運(yùn)動(dòng)者的運(yùn)動(dòng)信息、記錄步數(shù)和活動(dòng)距離等,使用TP4056 和TPS63070 電源管理模塊保證電源使用安全。本系統(tǒng)使用ISP1.14 寸LCD 顯示模塊進(jìn)行信息顯示,其UI 交互界面基于LittlevGL 編寫(xiě),方便用戶與手表的交互。系統(tǒng)硬件設(shè)計(jì)框圖見(jiàn)圖1 所示。
圖1 系統(tǒng)硬件設(shè)計(jì)框圖
(1)圖形界面:本智能手表人機(jī)交互界面基于LVGL圖形庫(kù)進(jìn)行設(shè)計(jì),該圖形庫(kù)是一個(gè)輕量級(jí)的嵌入式圖形庫(kù),提供了創(chuàng)建嵌入式 GUI 所需的一切,具有易于使用的圖形元素,美麗的視覺(jué)效果和低內(nèi)存占用等特點(diǎn)[5]。同時(shí)LVGL圖形庫(kù)是純 C 語(yǔ)言實(shí)現(xiàn),易于移植,性能較好,能夠支持的空間和內(nèi)容較為豐富。非常適用于智能佩戴設(shè)備對(duì)于人機(jī)交互界面的需求。
(2)實(shí)體按鍵:為了方便用戶的使用,本設(shè)計(jì)在手表側(cè)面安裝了三個(gè)按鍵,這三個(gè)按鍵分別與主控芯片的PB0、PB1、PB2 引腳連接,用戶可通過(guò)這三個(gè)按鍵實(shí)現(xiàn)界面切換、功能選擇等操作。并利用實(shí)時(shí)操作系統(tǒng)UCOSIII 及時(shí)讀取按鍵信息,完成任務(wù)調(diào)度,實(shí)現(xiàn)界面的流暢切換,為用戶提供更好的交互體驗(yàn)感。
本次設(shè)計(jì)的智能手表主要實(shí)現(xiàn)以下幾個(gè)功能 :
(1)實(shí)時(shí)時(shí)間顯示:本設(shè)計(jì)采用的主控芯片具有 RTC實(shí)時(shí)時(shí)鐘功能,可以通過(guò)按鍵設(shè)置時(shí)間、查看時(shí)間。
(2)自動(dòng)息屏:若超過(guò)30s 沒(méi)有進(jìn)行任何操作,系統(tǒng)會(huì)自動(dòng)息屏進(jìn)入低功耗模式,此時(shí)只保留少數(shù)任務(wù)繼續(xù)進(jìn)行。
(3)背光亮度調(diào)節(jié):可通過(guò)按鍵調(diào)節(jié)屏幕亮度以適應(yīng)環(huán)境光照,減低能耗。
(4)抬手喚醒:在熄屏低功耗模式下,會(huì)通過(guò)MPU6050 陀螺儀傳感器獲取航向角、俯仰角、橫滾角數(shù)據(jù)判斷是否抬起手臂,是的話退出低功耗模式。
(5)溫度、氣壓數(shù)據(jù)顯示: 利用BMP180 大氣壓計(jì)量模塊,獲取溫度、大氣壓強(qiáng)的實(shí)時(shí)數(shù)據(jù),并在顯示屏上顯示。
(6)海拔高度測(cè)量:氣壓或大氣壓力來(lái)自地球上空氣的重量。該壓力在海平面約為每平方厘米1 千克。氣壓與海平面的高度具有近似線性的反比,因此通過(guò)BMP180 傳感器獲取的大氣壓強(qiáng)經(jīng)過(guò)簡(jiǎn)單換算即可得出海拔高度的數(shù)據(jù)。
(7)步數(shù)計(jì)量:通過(guò)陀螺儀 MPU6050 與濾波、計(jì)步算法 得出較為準(zhǔn)確的步數(shù),同時(shí)算出距離與消耗的卡路里。
(8)計(jì)時(shí):通過(guò)顯示屏顯示計(jì)時(shí)界面,利用定時(shí)器實(shí)現(xiàn)計(jì)時(shí)功能。
本系統(tǒng)采用STM32F411CEU6 作為主控芯片,其內(nèi)核是Cortex-M4。相比其它單片機(jī),STM32F411CEU6 的資源更加豐富,有多個(gè)串口通信接口、IIC 接口、SPI 接口,有著512KB 的FLASH 容量和128KB 的運(yùn)行內(nèi)存,同時(shí)它的工作頻率達(dá)到100 MHz,運(yùn)行速率快,還有DMA 等外設(shè),其還具有多種低功耗模式,開(kāi)發(fā)者可根據(jù)情況選擇不同模式來(lái)減低芯片的能耗。這些特點(diǎn)讓它得到了廣泛的應(yīng)用。STM32 主控芯片與各模塊引腳連接圖見(jiàn)圖2 所示。本設(shè)計(jì)利用STM32F411CEU6 芯片自帶的RTC(Real Time Clock)功能,可以輕松設(shè)置時(shí)間信息并讀取實(shí)時(shí)時(shí)間,完成時(shí)間顯示,定時(shí),計(jì)時(shí)功能的實(shí)現(xiàn)。
圖2 主控芯片與各模塊引腳連接圖
圖3 TP4056 模塊原理圖
TP4056 是一款完整的單節(jié)鋰離子電池線性充電器,采用了內(nèi)部PMOSFET 架構(gòu)。同時(shí),TP4056 芯片集成了防倒充電路,還有著熱反饋,可對(duì)充電電流進(jìn)行自動(dòng)調(diào)節(jié),以便在大功率操作或高溫度條件下對(duì)芯片溫度加以限制,保障了設(shè)計(jì)安全。當(dāng)輸入電壓被移除時(shí),TP4056 自動(dòng)進(jìn)入一個(gè)低電流狀態(tài),將電池漏電流降至2μA 以下,充分保護(hù)了使用者的使用安全。另外,TP4056 還有著電池溫度檢測(cè)、欠壓閉鎖、自動(dòng)再充電和兩個(gè)用于指示充電、結(jié)束的LED 狀態(tài)引腳的特點(diǎn)。
TPS63020 是一款升降壓芯片,能夠?qū)㈦姵仉妷恨D(zhuǎn)化成電路需要的穩(wěn)定電壓。TPS63020 支持輸出電壓為1.2V至5.5V,輸入電壓為1.8V 至5.5V,可通過(guò)電路設(shè)計(jì)獲取想要的電壓。TPS63020 還具有平均電流模式buckboost 轉(zhuǎn)換的特性,能夠?qū)崿F(xiàn)模式之間的自動(dòng)轉(zhuǎn)換。同時(shí),TPS63020 具有過(guò)熱、過(guò)壓保護(hù)的功能,能夠很好地保護(hù)電路,延長(zhǎng)電路的使用時(shí)間。TPS63020 升降壓模塊電路如圖4 所示。
圖4 TPS63020 升降壓模塊原理圖
BMP180 是一款新型的數(shù)字氣壓傳感器,具有非常高的性能,適合智能的高精度測(cè)量和數(shù)據(jù)采集,并輸出高精度的壓力(或高度)和溫度測(cè)量數(shù)據(jù)。其能夠檢測(cè)大氣壓強(qiáng)和環(huán)境溫度,且數(shù)據(jù)具有很好的準(zhǔn)確性[6]。同時(shí),BMP180 內(nèi)部有多個(gè)寄存器,通過(guò)通信可以配置BMP180 的工作模式,以便于獲取壓強(qiáng)、氣溫?cái)?shù)據(jù)。因其使用方便、數(shù)據(jù)準(zhǔn)確,BMP180有著很廣泛的應(yīng)用。BMP180 傳感器模塊電路如圖5 所示。BMP180 大氣計(jì)壓傳感器的SCL 引腳和SDA 引腳分別與主控芯片的PB8 引腳和PB9 引腳像連接并進(jìn)行IIC 通訊,用于獲取溫度,氣壓,海拔等數(shù)據(jù),并通過(guò)TFT-LCD 屏顯示出來(lái)。
圖5 大氣計(jì)壓模塊原理圖
本系統(tǒng)采用的是 MPU-6050 型六軸加速度傳感器,對(duì)運(yùn)動(dòng) 者的運(yùn)動(dòng)信息進(jìn)行數(shù)據(jù)采集。MPU6050 是一款6 軸的運(yùn)動(dòng)傳感器,其內(nèi)部整合了三軸MEMS 陀螺儀、三軸MEMS 加速度計(jì)[7、8]。MPU6050 的各個(gè)數(shù)據(jù)由16 位的寄存器存放,具有良好的精度,并且其擁有一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器DMP,可以減少使用者復(fù)雜的融合演算數(shù)據(jù)等過(guò)程。MPU6050 模塊電路如圖6 所示。其采用IIC 通信的方式,SCL 引腳和SDA 引腳分別與主控芯片的PB6、PB7引腳連接用于獲取3 種偏轉(zhuǎn)角。通過(guò)獲取三種偏轉(zhuǎn)角我們可以實(shí)現(xiàn)抬手喚醒以及步數(shù)計(jì)量等功能。
圖6 六軸傳感器模塊原理圖
本系統(tǒng)基于整體硬件設(shè)計(jì)綜合考慮,采用1.14 寸IPS彩色的TFT-LCD 屏作為頁(yè)面顯示模塊,其具有發(fā)光效率高且能耗低,色彩更好,視角廣,畫(huà)面不易失真,售價(jià)相對(duì)便宜等特點(diǎn)而被廣泛應(yīng)用在電子產(chǎn)品中。LCD 顯示模塊電路如圖7 所示。其SCL 引腳和主控芯片PA5 引腳,SDA 引腳和PA7 引腳連接,利用IIC 的通信協(xié)議實(shí)現(xiàn)數(shù)據(jù)的獲取,并通過(guò)主控芯片的PA10 引腳以PWN 的方式實(shí)現(xiàn)對(duì)顯示屏亮度的調(diào)節(jié),節(jié)約能耗。
圖7 LCD 顯示模塊原理圖
相對(duì)于傳統(tǒng)的前后臺(tái)編程思想,本設(shè)計(jì)為了提高產(chǎn)品的實(shí)時(shí)性以及功能的可拓展性,在系統(tǒng)軟件設(shè)計(jì)上采用了嵌入式實(shí)時(shí)操作系統(tǒng)UCOSIII 來(lái)幫助實(shí)現(xiàn)各任務(wù)的調(diào)度以及內(nèi)存管理。
Micrium 公司開(kāi)發(fā)的 UCOSIII 系統(tǒng)是一種可裁剪、可固化、可剝奪的第三代微型實(shí)時(shí)操作系統(tǒng),其提供了實(shí)時(shí)操作系統(tǒng)所需的所有功能,包括任務(wù)調(diào)度、任務(wù)通信、同步、內(nèi)存管理、中斷管理、定時(shí)管理等等是該系統(tǒng)的特性。[9、10]可剝奪內(nèi)核顧名思義就是可以剝奪其他任務(wù)的CPU 使用權(quán),它總是運(yùn)行就緒任務(wù)中的優(yōu)先級(jí)最高的那個(gè)任務(wù),當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)準(zhǔn)備就緒,并且此時(shí)發(fā)生了任務(wù)調(diào)度,那么這個(gè)高優(yōu)先級(jí)的任務(wù)就會(huì)獲得CPU 的使用權(quán)。不同于UCOSII,UCOSIII 支持創(chuàng)建相同優(yōu)先級(jí)的任務(wù),相同優(yōu)先級(jí)的任務(wù)在任務(wù)調(diào)度時(shí)將采用時(shí)間片輪轉(zhuǎn)調(diào)度,從而提高了系統(tǒng)運(yùn)行的實(shí)時(shí)性。
本智能手表系統(tǒng)利用實(shí)時(shí)操作UCOSIII 進(jìn)行任務(wù)調(diào)度,并將整個(gè)系統(tǒng)的功能分成了起始任務(wù),界面顯示任務(wù),以及其他幾個(gè)對(duì)不同硬件數(shù)據(jù)消息進(jìn)行更新和獲取的任務(wù),每個(gè)任務(wù)實(shí)現(xiàn)智能手表的部分功能,系統(tǒng)軟件總體設(shè)計(jì)流程如圖8 所示。
圖8 軟件系統(tǒng)設(shè)計(jì)流程圖
系統(tǒng)上電后,會(huì)先對(duì)實(shí)時(shí)操作系統(tǒng)UCOSIII 進(jìn)行初始化工作,其中包括:初始化操作系統(tǒng)的內(nèi)核、初始化任務(wù)空閑鏈表、建立任務(wù)控制塊數(shù)據(jù)類型、創(chuàng)建信號(hào)量,完成對(duì)內(nèi)存的管理。在這之后對(duì)MCU 進(jìn)行初始化,其中包括時(shí)鐘頻率初始化的設(shè)置、串口通信速率的設(shè)置等。最后創(chuàng)建起始任務(wù),并開(kāi)啟操作系統(tǒng)進(jìn)行任務(wù)調(diào)度。
操作系統(tǒng)初始化完畢并開(kāi)啟任務(wù)調(diào)度后,起始任務(wù)被執(zhí)行。起始任務(wù)會(huì)負(fù)責(zé)實(shí)現(xiàn)各種外設(shè)模塊配置的初始化,LVGL初始化以及顯示界面的初始化。接著創(chuàng)建所需的信號(hào)量、消息隊(duì)列、互斥量、事件標(biāo)志組等用于幫助實(shí)現(xiàn)各個(gè)任務(wù)的同步。之后起始任務(wù)創(chuàng)建其他應(yīng)用任務(wù),并在前面的工作完成后刪除自身任務(wù),進(jìn)入休眠態(tài)防止系統(tǒng)在任務(wù)調(diào)度中再次執(zhí)行起始任務(wù)。
起始任務(wù)執(zhí)行完畢后操作系統(tǒng)將按照各任務(wù)的優(yōu)先級(jí)以及是否處于就緒狀態(tài)對(duì)其他任務(wù)進(jìn)行任務(wù)調(diào)度,保證系統(tǒng)實(shí)時(shí)性。
具體各任務(wù)的詳細(xì)功能描述如下。
溫度氣壓獲取任務(wù):利用BMP180傳感器模塊獲取更新的溫度值和氣壓值并儲(chǔ)存起來(lái),熄屏低功耗模式下該任務(wù)不執(zhí)行。
歐拉角獲取與計(jì)步任務(wù):利用MPU6050 陀螺儀傳感器獲取三種偏轉(zhuǎn)角并完成步數(shù)計(jì)量功能,在低功耗熄屏模式下可通過(guò)獲取一次較大的抬手動(dòng)作的角度退出低功耗熄屏模式實(shí)現(xiàn)抬手喚醒功能。
按鍵信息獲取任務(wù):獲取使用者對(duì)按鍵的操作信息,并執(zhí)行相應(yīng)的功能,若存在30s 沒(méi)有獲取到按鍵操作信息的情況,則進(jìn)入低功耗熄屏模式。
界面顯示任務(wù):該任務(wù)主要為了實(shí)時(shí)運(yùn)行LVGL 內(nèi)部任務(wù)處理函數(shù)。該函數(shù)主要負(fù)責(zé)LVGL 幾乎所有的事務(wù)處理,只有在無(wú)阻塞的任務(wù)中才能夠?qū)崟r(shí)響應(yīng)用戶對(duì)于LVGL 的所有操作。例如顯示渲染事件、動(dòng)畫(huà)事件等等。通過(guò)本任務(wù)完成顯示屏上的界面顯示和數(shù)據(jù)的顯示,在低功耗模式下該任務(wù)不執(zhí)行。
實(shí)時(shí)時(shí)間獲取任務(wù):獲取RTC 實(shí)時(shí)時(shí)間并保存,在熄屏低功耗模式下,該任務(wù)不會(huì)執(zhí)行,只有在手表處于喚醒狀態(tài)下才會(huì)執(zhí)行。
本文設(shè)計(jì)了一款基于STM32F411CEU6 的智能手表,該手表采用UCOSIII 操作系統(tǒng)進(jìn)行任務(wù)調(diào)度,能夠更好地對(duì)各模塊功能進(jìn)行管理,提高了智能手表的運(yùn)行效率。在用戶操作上使用LVGL 編寫(xiě)了GUI,使各項(xiàng)數(shù)據(jù)信息可視化,用戶可以方便地讀取到手表所檢測(cè)的信息,能夠更加及時(shí)有效地讓用戶了解自己的狀態(tài),且在GUI 的輔助下,用戶能夠更方便地操作手表。該款智能手表系統(tǒng)結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)單,便于用戶操作,且具有性能高、功耗低、安全可靠、成本低廉等優(yōu)點(diǎn),可以被應(yīng)用和推廣。