摘要:智能手表是一種新型的可穿戴式設備,其中蘊含了大量的新穎的設計理念,包括傳感器的實時監測生命體征,無線通信將實時的監控數據向其他設備發送。它的出現體現了可穿戴式設備的快速發展,同時也體現出可穿戴式設備的應用將一步一步走向人們的生活。而其智能手機客戶端,在保證智能手表的基礎功能的前提下,同時優化了智能手表的用戶體驗,并收集來自智能手表的數據,向服務器傳輸,達到云端監控的目的。設計將主要闡述構建基礎可穿戴設備的幾項關鍵技術,如可穿戴技術、無線通訊技術(BLE 傳輸、Socket 傳輸)、相關傳感器技術、單片機系統、以及iOS的應用開發,其中還會對新型的TI CC2540 BLE 技術以及iOS BLE 技術進行詳細的介紹與分析。
0 引言
智能手機的發展增速很快,但是可穿戴式設備的發展還是相對空白,不僅市面上可以看到的產品有限,而且目前的產品涉及面也相對較窄,技術還不算成熟,所以可穿戴式設備還算是一個相對新穎的領域。但作為繼智能手機之后的下一個智能終端熱點,它的潛力不可估量。所以有研究能力的科技公司早早地就已經進行對該領域的開發,如三星的SamsungGear,Google 的Google glass。目前可穿戴式設備的研究領域主要涉及到傳感器技術以及無線通訊技術。
本項目主要通過整合單片機系統、BLE 技術及相關傳感器技術,設計出可穿戴設備,再通過開發iOS 應用作為客戶端,最終設計出相對完整的可穿戴式設備及其客戶端的開發。其中客戶端通過接入互聯網可以與云端服務器進行交互,從而獲取云端服務器的支持。
1 系統結構
本項目整體是按照數據采集—數據分析-數據處理-控制輸出-回饋的框架來實現,利用DHT11 溫濕度傳感器收集環境數據,再通過Atmel 單片機芯片[3]進行數據分析,隨后通過藍牙芯片將數據發送給手機客戶端。手機客戶端以處理數據為主,并可以通過藍牙向智能手表發送信息,從而達到控制智能手表的目的。
智能手表及其手機客戶端的系統框架圖如圖1 所示:
圖1 系統框圖
2 系統硬件設計
2.1 Bluno 開發板介紹
圖2 Bluno 主控板實物圖
Bluno 主控板是基于ATmega528 芯片,有14 個數字I/O 口,其中6 個I/O 口可以以PWM 口來用,6個模擬輸入口,16 MHz 的晶振頻率,一個USB。一個TI CC2540 芯片,支持低功耗藍牙通信。同時主控板支持I2C 和SPI 總線,提供UART TLL 串口通信。
2.2 Arduino 拓展板介紹
圖3 Bluno 拓展板實物圖
Bluno 拓展主要為主控板提供額外的拓展功能,它內部含有一個128*64 的OLED 顯示屏,一個有源蜂鳴器,一個DHT11 溫濕度傳感器,一個1.5 A 繼電器模塊,一個螺旋電位器,一個RGB LED 燈,一個Mini 搖桿按鍵。
2.3 手機硬件
本項目開發的手機客戶端是iOS 應用,所以,最終完成的應用可以兼容iOS 6 及以上iOS 系統,iPhone 4s及以上iPhone 設備。
3 系統軟件設計
系統軟件設計主要包括兩大部分,智能手表部分和手機客戶端部分。其中智能手表部分的軟件主要有BLE 通訊部分,傳感器數據采集部分,時間功能,以及單片機系統組成。而手機客戶端部分主要由BLE通訊部分,Socket 通訊部分,設備控制部分組成。系統流程圖如圖4 所示:
圖4 系統主程序流程圖
3.1 BLE 通訊協議
BLE 通訊采用UTF8 編碼,幀格式如下所示:
< Command > content1;
< Command > content1, content2,…;
< Command + ExtraString>stringLength;
3.2 藍牙通訊協議
智能手表藍牙通訊主要由兩個部分組成,分別是BLE 雙向透傳模塊和串口封裝模塊。
BLE 雙向透傳模塊是基于BLE 協議棧以及OSAL(TI CC2540 內部的實時系統)的開發。而串口雙向透傳的目的在于忽略協議棧以及OSAL 的成分,將其視為一個簡單的輸入輸出系統。所以在進行串口透傳之前,要設定固定的BLE service 以及固定BLE characteristic。整個系統的流程最開始需要進入初始化流程,分別是硬件初始化、OSAL 初始化、BLE 協議棧初始化、串口初始化、應用層初始化。當整個系統初始化完成以后進入事件輪詢流程。
串口接收數據部分:BLE 協議棧檢測到characteristic的變化后,會調用用戶填入的回調函數,而在整個回調函數中可以處理characteristic 的數據,隨后將有效數據填入串口回調函數最終將數據輸出至串口。
串口發送數據部分:串口收到數據后將調用串口回調函數,在回調函數中調用BLE 協議棧提供的寫入characteristic 函數,隨后將數據處理并寫入characteristic中(對于監聽該characteristic 的設備而言,將能夠發現該值的變化,從而讀取數據)。
由于雙向透傳模塊并沒有隱藏串口,所以如果想要進行數據I/O,還需要經過串口的操作,勢必會帶來不必要的麻煩。所以設計串口封裝模塊,忽略串口的存在,并遵循通信協議下的數據收發格式。
3.3 智能手表傳感器數據采集
本項目主要使用的傳感器是DHT11 溫濕度傳感器。DHT11 是一個相對較友好的硬件模塊。它對數據的封裝以及數據的IO 已經做了很好的處理。對于軟件上的設計,所做的工作不多。首先需要進行DHT11的初始化,主要目的是通知DHT11 做好準備。
而在讀取數據時,由于讀取數據的方式是同步的,所以在智能手表系統需要等待DHT11 設備處理并準備好數據后,才能讀取。其中準備過程以及讀取過程都需要進行硬延時。這在一定程度上會對系統的定時功能造成影響(尤其本設計是一塊手表,所以對時間有著嚴格的要求),所以系統獲取DHT11 數據是有一個較長的軟延時間隔。
3.4 智能手表時間功能
時間功能主要由時間類以及日期類組成,其中時間類負責時分秒的計算,而日期類主要負責日期的計算。
3.5 智能手表單片機系統
整個單片機系統由顯示模塊、系統初始化模塊、系統定時器模塊、系統時間輪詢模塊串口輪詢以及BLE 通訊輪詢組成。其中顯示模塊負責封裝硬件信息,并設計適合進行軟件操作的接口。
系統初始化主要包含以下幾個任務:OLED 初始化、串口初始化、系統時鐘設置、繼電器及蜂鳴器初始化、BLE 通訊模塊初始化、系統狀態位初始化。
系統定時器進程的設置是因為在單片機中能夠設置的定時器是十分有限的。所以只能利用有限的定時器去“生成”更多的定時器。在本設計中,如果需要新增定時器,首先需要添加自定義定時器。隨后系統定時器進程將會根據自定義定時器進行生成定時。
系統事件的輪詢主要的實現是基于系統定時器的實現。每隔50 ms 對系統事件進行檢測,所涉及到的系統事件主要為按鍵事件。
串口收發輪詢用于收發來自串口的數據,其目的主要用于調試。BLE 通訊輪詢進程主要用于收發來自BLE 通訊模塊的數據。其流程如圖5 所示:
圖5 BLE 通訊流程
3.6 手機客戶端藍牙通訊
BLE 通訊的設計主要使用了Cocoa touch 自帶的Core Bluetooth 框架,并再此之上進行二次開發,并對BLE 的特性進行一定程度的隱藏。在本設計中,iOS 客戶端的BLE 角色是Central 的,需要進行廣播的搜索,以及鏈接的建立,找到感興趣的peripheral后,訂閱其中的characteristic,最終實現數據的交互。
3.7 手機客戶端Socket 通訊
Socket 類的設計使用了Cocoa touch 中的CF-Socket,并將Socket 的特性進行了一定程度的隱藏,以方便與云端服務器進行通訊。
3.8 手機客戶端硬件控制
設備控制模塊主要負責配置智能手表的信息,當配置完成以后,將數據發送給智能手表。
4 結束語
本系統設計出的智能手表及其客戶端具有以下特點:
(1)Bluno 主控板及其拓展板是基于Arduino 平臺,方便進行硬件設計以及軟件開發。
(2)本項目使用的BLE 通訊不僅功耗低,而且能夠保證相對可靠地通訊,它可以在開闊的空間內達到120 m 的通訊距離。
(3)使用的iOS 平臺具有較好的兼容性,可以兼容iPhone 4s 及以上的設備。
(4)手機客戶端可以與云端服務器進行通訊,可以將智能手表手機的數據實時上傳到云端服務器,同時云端服務器也可以通過手機客戶端控制智能手表。
(審核編輯: 智匯張瑜)
分享