郭星智,楊桂華
(桂林理工大學(xué) 機械與控制工程學(xué)院,廣西桂林,541004)
隨著移動技術(shù)的步伐不斷前進(jìn),伴隨著智能化的傳統(tǒng)電子產(chǎn)品也逐漸進(jìn)入到人們的生活。人們在享受科技發(fā)展所帶來的紅利的同時,對于智能產(chǎn)品的需求也逐漸增多。而在近年來,智能手表這一款充滿智能,充滿科技的產(chǎn)品逐漸進(jìn)入人們的眼簾。相比于過去只能用來查看時間的傳統(tǒng)手表,智能手表的問世使得手表不僅具有可靠的傳統(tǒng)功能,而且也能通過互聯(lián)網(wǎng)或者藍(lán)牙與智能設(shè)備相連接,以獲取國家新聞、天氣數(shù)據(jù)等重要信息。智能手表在人們的運動、睡眠、通話、娛樂等方面扮演著非常重要的角色,其技術(shù)的發(fā)展和功能的改進(jìn)也將不斷改變?nèi)藗兊纳?,給人們帶來更多的智能體驗[1]。
智能手表的種類主要分為三種,分別為成人智能手表、老人智能手表以及兒童定位智能手表。老人和兒童智能手表在功能上更偏向于安全定位、預(yù)防走失、SOS求救等方面,主要為了保障兒童的安全和呵護(hù)老人的健康。而成人智能手表,主要以提升手表功能的多樣性以及可玩性,來滿足成年人的休閑娛樂運動等日常需求。本文也將以成人智能手表為功能設(shè)計的方向,其主要功能有天氣信息顯示、全年日歷、運動計步、背光調(diào)節(jié)、表盤切換、心率檢測、久坐提醒、指南針、游戲、秒表、計算器、手電筒以及系統(tǒng)設(shè)置等。
當(dāng)今,智能手表不僅要滿足功能上的要求還要滿足外觀上的要求,外觀設(shè)計已經(jīng)成為智能可穿戴產(chǎn)品的一個重要影響因素[2]。在如今的智能手表中,表盤的結(jié)構(gòu)主要分為方形和圓形兩種。在方形手表中,因其方形的表盤設(shè)計,使得內(nèi)容顯示的區(qū)域會更加廣,也符合原本軟件系統(tǒng)的設(shè)計邏輯。傳統(tǒng)的手表多以圓形的表盤進(jìn)行設(shè)計,圓形結(jié)構(gòu)的手表,搭配圓形的顯示屏,更能給人一種熟悉感,且美觀大方。所以,本文中的智能手表模型結(jié)構(gòu)使用SOLIDWORKS軟件進(jìn)行設(shè)計,其總體外觀渲染圖如圖1所示,主要以圓形作為設(shè)計屬性。同時采用了典型的“三明治”結(jié)構(gòu),分為底層、中框和頂層。三層之間通過兩組不同規(guī)格的內(nèi)六角螺絲來連接固定。其中,頂層主要裝配電容觸摸屏,并適當(dāng)增加幾何圖形元素,提升手表的整體美感。中框主要裝配主板和表帶,并需要根據(jù)主板上的按鍵、充電接口等具體位置進(jìn)行合理的規(guī)劃設(shè)計。底層結(jié)構(gòu)主要用來裝配鋰電池,同時合理設(shè)計心率傳感器的開孔位置,使心率傳感器能夠正常的工作。
圖1 模型渲染圖
智能手表硬件結(jié)構(gòu)框圖如圖2所示。主要包括ESP32主控芯片、實時時鐘芯片、心率傳感器、磁場傳感器、加速度傳感器、電容觸摸屏模塊、側(cè)邊按鍵、蜂鳴器以及電源模塊等。由于尺寸限制,為了盡可能地節(jié)省PCB的布局空間,所有的元器件都將選用較小封裝的貼片類型,同時為了契合屏幕大小,將PCB設(shè)計為半徑19mm的圓形結(jié)構(gòu)。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖
智能手表系統(tǒng)結(jié)構(gòu)主要分為兩個部分,即系統(tǒng)的功能部分和系統(tǒng)的交互部分。系統(tǒng)功能部分包括:(1)天氣信息顯示。通過WiFi功能連接網(wǎng)絡(luò),訪問心知天氣提供的API獲取Json格式的天氣信息數(shù)據(jù),并解析得到最低氣溫、最高氣溫、空氣質(zhì)量、當(dāng)前溫度和天氣現(xiàn)象代碼等有效數(shù)據(jù)顯示在天氣卡片界面上。(2)全年日歷。全年日歷顯示主要是以翻頁形式的日歷本,通過點擊相應(yīng)按鈕顯示以當(dāng)年當(dāng)月為基準(zhǔn)的前一個月或者后一個月的數(shù)據(jù),其范圍為1900年到2100年。(3)運動記步。運動記步通過加速度傳感器檢測人體行走的步數(shù)以及運動狀態(tài),并計算出運動的距離以及消耗的卡路里。(4)心率檢測。心率檢測主要是通過心率傳感器獲取人體的心率數(shù)據(jù)以曲線圖表的方式在心率檢測卡片界面上顯示出來,并記錄當(dāng)次心率檢測的最低和最高值。(5)久坐提醒。久坐提醒主要是通過加速度傳感器檢測人體狀態(tài)來實現(xiàn),如果人體處于靜止?fàn)顟B(tài),則會進(jìn)行周期為30分鐘的計時。在計時周期內(nèi)如果靜止?fàn)顟B(tài)未發(fā)生改變,則會記錄一次久坐并提醒,反之則重新計時。(6)背光調(diào)節(jié)。主要是以PWM的方式來實現(xiàn)屏幕背光的調(diào)節(jié),其亮度值范圍在0~255之間。(7)表盤切換。通過表盤切換界面來進(jìn)行不同表盤的切換,系統(tǒng)設(shè)計了六個不同風(fēng)格類型的表盤,這六個表盤可來回進(jìn)行切換,其切換亦可通過長按表盤卡片進(jìn)入到表盤切換界面。(8)指南針。通過獲取磁場傳感器數(shù)據(jù)控制指針旋轉(zhuǎn)到相應(yīng)的位置來進(jìn)行方位的指示。(9)游戲娛樂。通過點擊2048游戲圖標(biāo)進(jìn)入游戲。除此之外,還具有秒表功能、計算器、手電筒等功能。
系統(tǒng)交互部分包括:(1)圖形界面。圖形界面是智能手表系統(tǒng)組成中十分重要的一部分,論文通過GUI進(jìn)行設(shè)計,GUI集成了圖形操作系統(tǒng)以及內(nèi)存管理。(2)實體按鍵。論文設(shè)計了觸摸屏的交互,但考慮用戶物理操作上的反饋感,彌補觸摸屏操作的不足,增加了按鍵的使用,有效縮短了交互過程,為用戶提供極佳的交互體驗感。
核心電路如圖3所示,其主要包含四個部分,分別是主控電路、復(fù)位電路、時鐘電路和接口電路。本設(shè)計采用了以ESP32-PICO-D4為核心的主控模塊TTGO-MICRO32,該核心采用了系統(tǒng)級封裝。在芯片內(nèi)部已經(jīng)集成了基本的外設(shè)電路、FLASH電路、40MHz晶振電路和RF匹配鏈路[3]。由于該核心的I2C接口引腳為開漏輸出,并沒有輸出高電平的能力,所以需要為其添加上拉電阻,并合理地選擇上拉電阻的阻值。BM8563MEA時鐘作為本設(shè)計的時間數(shù)據(jù)來源,需要為其匹配外部32.768kHz的晶振,并根據(jù)晶振的規(guī)格合理的匹配相應(yīng)的電容。接口電路采用了Type-C口,不僅能夠通過下載器下載程序,還可以作為鋰電池的充電接口。復(fù)位電路主要連接主控芯片的EN引腳,需要采用上拉電阻的方式進(jìn)行設(shè)計。
圖3 核心電路
智能手表外圍電路主要包括各傳感器電路、電源管理電路、交互設(shè)備電路。傳感器模塊電路如圖4所示,其主要是心率傳感器模塊、磁場傳感器、加速度傳感器的外圍基礎(chǔ)電路設(shè)計,其中。所有傳感器都通過I2C總線與主控芯片上的SDA和SCL引腳相連接。電源管理電路如圖5所示,其主要包括三部分,分別為鋰電池管理電路、電源復(fù)用器電路和線性降壓電路。交互設(shè)備電路如圖6所示,該電路主要包含蜂鳴器電路、電容觸摸屏電路以及按鍵電路。
圖4 傳感器電路
圖5 電源管理電路
系統(tǒng)軟件所有的程序采用模塊化的編程設(shè)計,采用了面向?qū)ο蟮木幊趟季S,將每個界面、應(yīng)用單獨進(jìn)行封裝,極大程度上減少了代碼的耦合性使得代碼結(jié)構(gòu)清晰,易于維護(hù)或者增刪功能。代碼結(jié)構(gòu)框架分為三個層次,分別為應(yīng)用層、系統(tǒng)框架層和硬件抽象層,代碼結(jié)構(gòu)框圖如圖7所示。其中硬件抽象層主要是硬件驅(qū)動的初始化設(shè)置,應(yīng)用層主要是交互界面的開發(fā)以及功能的實現(xiàn),框架層主要是操作系統(tǒng)任務(wù)和頁面的調(diào)度管理。
圖7 代碼結(jié)構(gòu)框架
硬件抽象層程序設(shè)計主要負(fù)責(zé)硬件的初始化以及硬件層的數(shù)據(jù)獲取。其中包括RTC驅(qū)動初始化、屏幕背光驅(qū)動初始化、屏幕顯示驅(qū)動初始化、屏幕觸摸驅(qū)動初始化、按鍵驅(qū)動初始化、加速度傳感器驅(qū)動初始化、磁場傳感器驅(qū)動初始化、心率傳感器驅(qū)動初始化、蜂鳴器驅(qū)動初始化等。
3.2.1 頁面調(diào)度管理
在頁面管理中,包括頁面的交互邏輯和頁面加載邏輯。頁面交互邏輯的實現(xiàn)在硬件上依靠于電容觸摸屏觸摸數(shù)據(jù),在軟件上依靠于LVGL圖形庫設(shè)備驅(qū)動TouchPad事件類型。通過兩者的耦合,可通過在觸摸屏上實現(xiàn)滾動、點擊、長按、向上滑動、向下滑動、向左滑動、向右滑動等基本事件類型,并將此類事件回調(diào)給LVGL驅(qū)動設(shè)備管理函數(shù)。通過獲取到的這些基本事件輸入類型和聲明的多類函數(shù)指針,就可以將已經(jīng)設(shè)計好的界面通過回調(diào)函數(shù)的方式進(jìn)行頁面的切換。
(1)主界面交互邏輯
主界面的交互觸發(fā)方式通過上下左右滑動實現(xiàn),并可通過長按時鐘界面進(jìn)入表盤切換界面。主界面交互邏輯圖示如8所示。
圖8 主界面交互邏輯圖
(2)頁面加載邏輯
頁面的加載主要分為頁面加載完成、頁面將顯示、頁面完成顯示、頁面將消失、頁面完成消失五個步驟。其中頁面加載完成指的是對每個頁面分配相對應(yīng)的頁面ID,并對其封裝函數(shù)進(jìn)行初始化。頁面將顯示指的是頁面初始化完成后,即將顯示頁面。在這個過程中,可以為頁面的顯示創(chuàng)建相對應(yīng)的動畫效果。頁面將消失指的是頁面退出即將消失的過程,在這個過程中也可以為其設(shè)定過渡的動畫效果,同樣在完成動畫效果后頁面完成消失。在頁面的切換過程中,上述邏輯可以實現(xiàn)非常高級的切換效果。頁面加載邏輯圖示如圖9所示。
圖9 頁面加載邏輯圖
3.2.2 操作系統(tǒng)任務(wù)
操作系統(tǒng)的任務(wù)主要有硬件消息更新任務(wù)、LVGL線程任務(wù)、WiFi異步連接任務(wù)。
(1)硬件消息更新任務(wù)
該任務(wù)主要用于定時刷新硬件流數(shù)據(jù)。通過獲取系統(tǒng)毫秒級的心跳時鐘,為硬件抽象層中封裝好的需要定時更新消息的函數(shù)進(jìn)行周期性更新。每個函數(shù)可以自由設(shè)定其更新的時間。例如按鍵狀態(tài)檢測的更新周期為30ms,每經(jīng)過30ms即檢測一次按鍵狀態(tài),通過返回按鍵的狀態(tài)值即可實時響應(yīng)到按鍵按下的消息并執(zhí)行響應(yīng)功能。類似的還有心率檢測數(shù)據(jù)、定時低功耗熄屏、步數(shù)更新、蜂鳴器提示音更新等等。
(2)LVGL線程任務(wù)
該任務(wù)主要為了實時運行LVGL內(nèi)部任務(wù)處理函數(shù)。該函數(shù)主要負(fù)責(zé)LVGL幾乎所有的事務(wù)處理,只有在無阻塞的任務(wù)中才能夠?qū)崟r響應(yīng)用戶對于LVLG的所有操作。例如輸入驅(qū)動事件、顯示渲染事件、動畫事件等等。與此同時,需要給予LVGL一個系統(tǒng)心跳,讓其內(nèi)部知道系統(tǒng)內(nèi)部經(jīng)過時間,這樣才能在精確的處理所有具有時間概念的事件。例如動畫的時間線,LVGL定時器重復(fù)的周期時間等。
(3)WiFi異步連接任務(wù)
由于在使用WiFi時,系統(tǒng)會處于正在連接的阻塞態(tài),使得其他任務(wù)不能繼續(xù)正常運行。所以就需要為WiFi的連接創(chuàng)建一個線程。該線程在開啟WiFi連接時創(chuàng)建,在連接完成后刪除。創(chuàng)建該任務(wù)的優(yōu)點就是以異步處理的方式進(jìn)行WiFi的連接,在連接過程中不會阻塞系統(tǒng)正在運行的其他任務(wù),能夠保證所有數(shù)據(jù)都能夠正常的響應(yīng)。
應(yīng)用層是整個軟件框架中最頂層的部分,以結(jié)構(gòu)層和硬件層作為載體,將所有的數(shù)據(jù)以及結(jié)構(gòu)框架以界面的形式展現(xiàn)在用戶面前,并在符合結(jié)構(gòu)層的操作邏輯下,穩(wěn)定運行。在應(yīng)用層中,主要有主界面(由久坐提醒卡片、心率檢測卡片、時鐘卡片、天氣卡片、快捷設(shè)置卡片組成)、表盤切換界面和應(yīng)用界面組成,如圖10所示。
圖10 主界面卡片效果圖
系統(tǒng)在執(zhí)行上電操作時,首先會對硬件抽象層中的所有驅(qū)動以及對LVGL圖形庫的顯示設(shè)備、輸入設(shè)備、內(nèi)存管理、交互界面等進(jìn)行初始化操作,在所有初始化完成后即進(jìn)入FreeRTOS任務(wù),該任務(wù)包含LVGL任務(wù)處理函數(shù)以及硬件數(shù)據(jù)更新函數(shù)。FreeRTOS任務(wù)將會一直運行并負(fù)責(zé)整個系統(tǒng)的所有事件,直至進(jìn)入主控芯片的關(guān)機模式結(jié)程序。主程序流程圖如圖11所示。
圖11 主程序流程圖
產(chǎn)品的硬件電路原理圖以及PCB Layout通過立創(chuàng)EDA標(biāo)準(zhǔn)版軟件設(shè)計完成,設(shè)計了PCB Layout 3D圖,并精心焊接制作電路板如圖12所示。產(chǎn)品制作完成后,對產(chǎn)品主板的供電電路進(jìn)行了測試 ,并通過編寫心率傳感器、加速度傳感器、磁場傳感器、按鍵、WiFi功能、RTC時鐘等測試程序,檢測相應(yīng)的外設(shè)是否能夠正常地進(jìn)行工作并讀取數(shù)據(jù)。產(chǎn)品電源電路、外圍設(shè)備電路均能夠正常工作,手表的續(xù)航時間以及數(shù)據(jù)記錄準(zhǔn)確。
圖12 PCB板實物圖
論文設(shè)計并實現(xiàn)了一款基于單片機的多功能智能手表。從電子元器件的選型、主板原理圖的設(shè)計和主板的焊接制作、軟件框架的搭建、交互界面的設(shè)計、3D結(jié)構(gòu)的建模到產(chǎn)品的制作完成,設(shè)計的功能全部都可正常使用,系統(tǒng)運行穩(wěn)定。盡管如此,在整體之上依然有許多可有優(yōu)化完善的地方:
(1)主控板本身自帶的RAM依然較小,無法開發(fā)出更多更加實用的功能,但可通過對硬件電路的重新設(shè)計,為主控芯片外接PSRAM來解決。
(2)手表的手電筒功能,因其發(fā)亮原為屏幕背光,需要在環(huán)境較暗的地方才能體現(xiàn)出照明的效果??赏ㄟ^修改模型和電路,為其增加亮度更高的LED燈進(jìn)行解決。
(3)手表的交互界面在切換界面時,增加了全屏的動畫效果,使得界面刷新流暢度有所下降??梢酝ㄟ^外接PSRAM,增加圖形庫顯示驅(qū)動的渲染顯存來解決。