郭星智,楊桂華
(桂林理工大學 機械與控制工程學院,廣西桂林,541004)
隨著移動技術的步伐不斷前進,伴隨著智能化的傳統電子產品也逐漸進入到人們的生活。人們在享受科技發展所帶來的紅利的同時,對于智能產品的需求也逐漸增多。而在近年來,智能手表這一款充滿智能,充滿科技的產品逐漸進入人們的眼簾。相比于過去只能用來查看時間的傳統手表,智能手表的問世使得手表不僅具有可靠的傳統功能,而且也能通過互聯網或者藍牙與智能設備相連接,以獲取國家新聞、天氣數據等重要信息。智能手表在人們的運動、睡眠、通話、娛樂等方面扮演著非常重要的角色,其技術的發展和功能的改進也將不斷改變人們的生活,給人們帶來更多的智能體驗[1]。
智能手表的種類主要分為三種,分別為成人智能手表、老人智能手表以及兒童定位智能手表。老人和兒童智能手表在功能上更偏向于安全定位、預防走失、SOS求救等方面,主要為了保障兒童的安全和呵護老人的健康。而成人智能手表,主要以提升手表功能的多樣性以及可玩性,來滿足成年人的休閑娛樂運動等日常需求。本文也將以成人智能手表為功能設計的方向,其主要功能有天氣信息顯示、全年日歷、運動計步、背光調節、表盤切換、心率檢測、久坐提醒、指南針、游戲、秒表、計算器、手電筒以及系統設置等。
當今,智能手表不僅要滿足功能上的要求還要滿足外觀上的要求,外觀設計已經成為智能可穿戴產品的一個重要影響因素[2]。在如今的智能手表中,表盤的結構主要分為方形和圓形兩種。在方形手表中,因其方形的表盤設計,使得內容顯示的區域會更加廣,也符合原本軟件系統的設計邏輯。傳統的手表多以圓形的表盤進行設計,圓形結構的手表,搭配圓形的顯示屏,更能給人一種熟悉感,且美觀大方。所以,本文中的智能手表模型結構使用SOLIDWORKS軟件進行設計,其總體外觀渲染圖如圖1所示,主要以圓形作為設計屬性。同時采用了典型的“三明治”結構,分為底層、中框和頂層。三層之間通過兩組不同規格的內六角螺絲來連接固定。其中,頂層主要裝配電容觸摸屏,并適當增加幾何圖形元素,提升手表的整體美感。中框主要裝配主板和表帶,并需要根據主板上的按鍵、充電接口等具體位置進行合理的規劃設計。底層結構主要用來裝配鋰電池,同時合理設計心率傳感器的開孔位置,使心率傳感器能夠正常的工作。

圖1 模型渲染圖
智能手表硬件結構框圖如圖2所示。主要包括ESP32主控芯片、實時時鐘芯片、心率傳感器、磁場傳感器、加速度傳感器、電容觸摸屏模塊、側邊按鍵、蜂鳴器以及電源模塊等。由于尺寸限制,為了盡可能地節省PCB的布局空間,所有的元器件都將選用較小封裝的貼片類型,同時為了契合屏幕大小,將PCB設計為半徑19mm的圓形結構。

圖2 系統硬件結構框圖
智能手表系統結構主要分為兩個部分,即系統的功能部分和系統的交互部分。系統功能部分包括:(1)天氣信息顯示。通過WiFi功能連接網絡,訪問心知天氣提供的API獲取Json格式的天氣信息數據,并解析得到最低氣溫、最高氣溫、空氣質量、當前溫度和天氣現象代碼等有效數據顯示在天氣卡片界面上。(2)全年日歷。全年日歷顯示主要是以翻頁形式的日歷本,通過點擊相應按鈕顯示以當年當月為基準的前一個月或者后一個月的數據,其范圍為1900年到2100年。(3)運動記步。運動記步通過加速度傳感器檢測人體行走的步數以及運動狀態,并計算出運動的距離以及消耗的卡路里。(4)心率檢測。心率檢測主要是通過心率傳感器獲取人體的心率數據以曲線圖表的方式在心率檢測卡片界面上顯示出來,并記錄當次心率檢測的最低和最高值。(5)久坐提醒。久坐提醒主要是通過加速度傳感器檢測人體狀態來實現,如果人體處于靜止狀態,則會進行周期為30分鐘的計時。在計時周期內如果靜止狀態未發生改變,則會記錄一次久坐并提醒,反之則重新計時。(6)背光調節。主要是以PWM的方式來實現屏幕背光的調節,其亮度值范圍在0~255之間。(7)表盤切換。通過表盤切換界面來進行不同表盤的切換,系統設計了六個不同風格類型的表盤,這六個表盤可來回進行切換,其切換亦可通過長按表盤卡片進入到表盤切換界面。(8)指南針。通過獲取磁場傳感器數據控制指針旋轉到相應的位置來進行方位的指示。(9)游戲娛樂。通過點擊2048游戲圖標進入游戲。除此之外,還具有秒表功能、計算器、手電筒等功能。
系統交互部分包括:(1)圖形界面。圖形界面是智能手表系統組成中十分重要的一部分,論文通過GUI進行設計,GUI集成了圖形操作系統以及內存管理。(2)實體按鍵。論文設計了觸摸屏的交互,但考慮用戶物理操作上的反饋感,彌補觸摸屏操作的不足,增加了按鍵的使用,有效縮短了交互過程,為用戶提供極佳的交互體驗感。
核心電路如圖3所示,其主要包含四個部分,分別是主控電路、復位電路、時鐘電路和接口電路。本設計采用了以ESP32-PICO-D4為核心的主控模塊TTGO-MICRO32,該核心采用了系統級封裝。在芯片內部已經集成了基本的外設電路、FLASH電路、40MHz晶振電路和RF匹配鏈路[3]。由于該核心的I2C接口引腳為開漏輸出,并沒有輸出高電平的能力,所以需要為其添加上拉電阻,并合理地選擇上拉電阻的阻值。BM8563MEA時鐘作為本設計的時間數據來源,需要為其匹配外部32.768kHz的晶振,并根據晶振的規格合理的匹配相應的電容。接口電路采用了Type-C口,不僅能夠通過下載器下載程序,還可以作為鋰電池的充電接口。復位電路主要連接主控芯片的EN引腳,需要采用上拉電阻的方式進行設計。

圖3 核心電路
智能手表外圍電路主要包括各傳感器電路、電源管理電路、交互設備電路。傳感器模塊電路如圖4所示,其主要是心率傳感器模塊、磁場傳感器、加速度傳感器的外圍基礎電路設計,其中。所有傳感器都通過I2C總線與主控芯片上的SDA和SCL引腳相連接。電源管理電路如圖5所示,其主要包括三部分,分別為鋰電池管理電路、電源復用器電路和線性降壓電路。交互設備電路如圖6所示,該電路主要包含蜂鳴器電路、電容觸摸屏電路以及按鍵電路。

圖4 傳感器電路

圖5 電源管理電路
系統軟件所有的程序采用模塊化的編程設計,采用了面向對象的編程思維,將每個界面、應用單獨進行封裝,極大程度上減少了代碼的耦合性使得代碼結構清晰,易于維護或者增刪功能。代碼結構框架分為三個層次,分別為應用層、系統框架層和硬件抽象層,代碼結構框圖如圖7所示。其中硬件抽象層主要是硬件驅動的初始化設置,應用層主要是交互界面的開發以及功能的實現,框架層主要是操作系統任務和頁面的調度管理。

圖7 代碼結構框架
硬件抽象層程序設計主要負責硬件的初始化以及硬件層的數據獲取。其中包括RTC驅動初始化、屏幕背光驅動初始化、屏幕顯示驅動初始化、屏幕觸摸驅動初始化、按鍵驅動初始化、加速度傳感器驅動初始化、磁場傳感器驅動初始化、心率傳感器驅動初始化、蜂鳴器驅動初始化等。
3.2.1 頁面調度管理
在頁面管理中,包括頁面的交互邏輯和頁面加載邏輯。頁面交互邏輯的實現在硬件上依靠于電容觸摸屏觸摸數據,在軟件上依靠于LVGL圖形庫設備驅動TouchPad事件類型。通過兩者的耦合,可通過在觸摸屏上實現滾動、點擊、長按、向上滑動、向下滑動、向左滑動、向右滑動等基本事件類型,并將此類事件回調給LVGL驅動設備管理函數。通過獲取到的這些基本事件輸入類型和聲明的多類函數指針,就可以將已經設計好的界面通過回調函數的方式進行頁面的切換。
(1)主界面交互邏輯
主界面的交互觸發方式通過上下左右滑動實現,并可通過長按時鐘界面進入表盤切換界面。主界面交互邏輯圖示如8所示。

圖8 主界面交互邏輯圖
(2)頁面加載邏輯
頁面的加載主要分為頁面加載完成、頁面將顯示、頁面完成顯示、頁面將消失、頁面完成消失五個步驟。其中頁面加載完成指的是對每個頁面分配相對應的頁面ID,并對其封裝函數進行初始化。頁面將顯示指的是頁面初始化完成后,即將顯示頁面。在這個過程中,可以為頁面的顯示創建相對應的動畫效果。頁面將消失指的是頁面退出即將消失的過程,在這個過程中也可以為其設定過渡的動畫效果,同樣在完成動畫效果后頁面完成消失。在頁面的切換過程中,上述邏輯可以實現非常高級的切換效果。頁面加載邏輯圖示如圖9所示。

圖9 頁面加載邏輯圖
3.2.2 操作系統任務
操作系統的任務主要有硬件消息更新任務、LVGL線程任務、WiFi異步連接任務。
(1)硬件消息更新任務
該任務主要用于定時刷新硬件流數據。通過獲取系統毫秒級的心跳時鐘,為硬件抽象層中封裝好的需要定時更新消息的函數進行周期性更新。每個函數可以自由設定其更新的時間。例如按鍵狀態檢測的更新周期為30ms,每經過30ms即檢測一次按鍵狀態,通過返回按鍵的狀態值即可實時響應到按鍵按下的消息并執行響應功能。類似的還有心率檢測數據、定時低功耗熄屏、步數更新、蜂鳴器提示音更新等等。
(2)LVGL線程任務
該任務主要為了實時運行LVGL內部任務處理函數。該函數主要負責LVGL幾乎所有的事務處理,只有在無阻塞的任務中才能夠實時響應用戶對于LVLG的所有操作。例如輸入驅動事件、顯示渲染事件、動畫事件等等。與此同時,需要給予LVGL一個系統心跳,讓其內部知道系統內部經過時間,這樣才能在精確的處理所有具有時間概念的事件。例如動畫的時間線,LVGL定時器重復的周期時間等。
(3)WiFi異步連接任務
由于在使用WiFi時,系統會處于正在連接的阻塞態,使得其他任務不能繼續正常運行。所以就需要為WiFi的連接創建一個線程。該線程在開啟WiFi連接時創建,在連接完成后刪除。創建該任務的優點就是以異步處理的方式進行WiFi的連接,在連接過程中不會阻塞系統正在運行的其他任務,能夠保證所有數據都能夠正常的響應。
應用層是整個軟件框架中最頂層的部分,以結構層和硬件層作為載體,將所有的數據以及結構框架以界面的形式展現在用戶面前,并在符合結構層的操作邏輯下,穩定運行。在應用層中,主要有主界面(由久坐提醒卡片、心率檢測卡片、時鐘卡片、天氣卡片、快捷設置卡片組成)、表盤切換界面和應用界面組成,如圖10所示。

圖10 主界面卡片效果圖
系統在執行上電操作時,首先會對硬件抽象層中的所有驅動以及對LVGL圖形庫的顯示設備、輸入設備、內存管理、交互界面等進行初始化操作,在所有初始化完成后即進入FreeRTOS任務,該任務包含LVGL任務處理函數以及硬件數據更新函數。FreeRTOS任務將會一直運行并負責整個系統的所有事件,直至進入主控芯片的關機模式結程序。主程序流程圖如圖11所示。

圖11 主程序流程圖
產品的硬件電路原理圖以及PCB Layout通過立創EDA標準版軟件設計完成,設計了PCB Layout 3D圖,并精心焊接制作電路板如圖12所示。產品制作完成后,對產品主板的供電電路進行了測試 ,并通過編寫心率傳感器、加速度傳感器、磁場傳感器、按鍵、WiFi功能、RTC時鐘等測試程序,檢測相應的外設是否能夠正常地進行工作并讀取數據。產品電源電路、外圍設備電路均能夠正常工作,手表的續航時間以及數據記錄準確。

圖12 PCB板實物圖
論文設計并實現了一款基于單片機的多功能智能手表。從電子元器件的選型、主板原理圖的設計和主板的焊接制作、軟件框架的搭建、交互界面的設計、3D結構的建模到產品的制作完成,設計的功能全部都可正常使用,系統運行穩定。盡管如此,在整體之上依然有許多可有優化完善的地方:
(1)主控板本身自帶的RAM依然較小,無法開發出更多更加實用的功能,但可通過對硬件電路的重新設計,為主控芯片外接PSRAM來解決。
(2)手表的手電筒功能,因其發亮原為屏幕背光,需要在環境較暗的地方才能體現出照明的效果。可通過修改模型和電路,為其增加亮度更高的LED燈進行解決。
(3)手表的交互界面在切換界面時,增加了全屏的動畫效果,使得界面刷新流暢度有所下降。可以通過外接PSRAM,增加圖形庫顯示驅動的渲染顯存來解決。