王紅娟,陶葉,譚博武,周婕,穆天宇,李俊祥
(湖南工業大學,湖南株洲,412007)
現代科技為我們帶來生活便利的同時也對我們的身體素質造成相對的影響,其中電子產品對眼部的傷害較大。據相關數據顯示,2021 年我國近視患者達6 億,青少年總體近視率為53.6%,位居世界第一。受疫情影響,2021 年兒童青少年近視率與高度近視比例呈上升趨勢。為此項目擬設計一款可有效緩解眼部疲勞預防青少年近視的多功能智能眼部按摩儀,可通過客戶端App 人為選定工作模式或各模塊的工作參數等,實現多模式、多功能、自定義等整體運行操作,達到有效緩解用戶眼部疲勞、肌肉放松等效果[1~2]。
智能眼部按摩儀以STM32 為核心,對其他各模塊進行控制。并且通過藍牙連接手機App,通過手機App 對STM32 進行控制。最后實現可以通過手機App 對智能眼部按摩儀進行溫度氣壓等的參數控制的功能。
該系統由STM32、電源控制模塊、溫度控制模塊、氣壓控制模塊、電機控制模塊、音樂控制模塊手機App 構成。使用時,用戶可在手機App 上下發指令,在設備與手機通過藍牙連接后,傳輸至按摩儀,并通過STM32 對各模塊進行控制。
1.2.1 STM32 單片機控制系統模塊
考慮到載體的集成度,單片機采用STM32 系列,主要實現輸入信號數據的分析與處理,并輸出相應的指令,實現多模塊指令協調與多模塊控制。
1.2.2 溫度控制模塊
主要由溫度傳感器和石墨烯電熱膜構成,本項目選擇Pt100+AD623。在測量溫度方面,接觸式溫度傳感器所測量出的溫度更為精確,更能滿足人體所需的細微溫度變化。
在硬件之間的協調方面,單片機引腳與溫度傳感器直接相連,與石墨烯電熱膜需通過MOS 管開關電路進行連接。在通入電流后,石墨烯電熱膜發熱,溫度傳感器獲取囊內溫度信息并將此信息以電信號的形式傳入單片機,而單片機會根據判斷該溫度是否合理。而如果用戶在App 中做出溫度改變,單片機在獲取指令后也會對石墨烯電熱膜做出相應指令來調節溫度。
1.2.3 氣壓控制模塊
該部分包括氣壓信號采集系統、氣泵和疊加式氣囊等。
首先是氣壓信號采集系統,該部分主要由壓電式諧振筒氣壓傳感器和單片機構成。
其次是氣泵的選擇,本項目選擇型號為FM2002的微型氣泵,該氣泵完全可以滿足該設備所需的抽氣與加壓,且功率適度,不會給電源造成太大的負擔。
最后則是疊加式氣囊的選擇。本項目依據人體眼部具體的形狀結構,設置了疊加式氣囊的安放形式。
本項目擬采用電動機模塊來實現多頻振動按3 摩功能。電動式電動按摩器結構較為復雜,振動頻率較高,約每分鐘5000 ~10000 次,功 率 為5 ~8W。因 此更符合按摩儀的振動要求。由于電機所需功率較大,而電源無法提供其所需的電流,所以在此,本項目引入驅動以此來放大電源所提供的信號。
1.2.4 音樂控制模塊
音頻播放裝置采用MP3 模塊,這類模塊使用簡單、音質好,在高要求的語言提示及音樂播放場合使用廣泛,MP3 模塊提供了內置NAND FLASH,保證了沒有插拔引起的問題;提供串口控制,使音頻能夠按照文件名播放,以及實現單次或循環播放等;提供USB 接口,用于更新語音或音樂;提供各種靈活的控制功能,如按時間播放、按列表播放等等。且串口MP3 模塊為用戶提供了便捷的使用環境,模塊將FAT 文件系統、USB驅動、U 盤管理等等功能集于一身,對外提供串口控制。使用者只需要提供簡單的串口指令,就可以方便地實現各種靈活的語音播放、控制。
1.2.5 電源控制模塊
本項目中采用市場上通用的鋰電池與電源管理器,這樣使得無論在有無外界供電的情況下,電源都可以給各個硬件提供穩定的電能,確保眼部按摩儀都可以正常地工作。在電源開啟的同時,顯示燈點亮,且在顯示燈上會顯示當前鋰電池所剩余的電量。當電量低于20%時,顯示燈變紅以說明需要充電。充電部分采用有線充電,接口為新型的Type-c 接口。
1.2.6 電機控制模塊
電動機和單片機的引腳相連,電動機接收單片機引腳發出的信號調節轉動頻率,從而調節振動按摩的頻率。在協調工作方面,在電動機接受單片機所發出的指令后,電動機主軸的轉動通過聯軸彈簧傳到偏心輪上,偏心輪把電動機的旋轉運動轉化為往復運動,并把往復運動傳給振動頭,以此實現振動。用戶可以在App 中在范圍內調節振動頻率,選擇自己感覺最舒適的振動頻率。在電路連接方面,電源先將電流輸入驅動中放大,再輸入電機中,從而啟動運行電機。
眼部按摩儀軟件部分的任務是控制系統硬件部分使之完成既定的程序,并且作為App端與硬件層面的通信橋梁,將用戶在App端進行的操作下達給硬件層執行,而將各硬件部分的狀態返回給用戶App 界面。系統軟件設計包括藍牙通信、溫度控制、氣壓控制和振動電機控制四個部分。系統軟件設計流程圖如圖2所示。

圖3 石墨烯加熱裝置程序流程圖

圖4 App流程圖

圖5 主界面設置
本系統采用藍牙作為通信模塊,藍牙通信軟件設計部分實現用戶App端數據與按摩儀內單片機數據的交互。系統上電后進行藍牙配對,配對成功后進行雙向數據傳輸,當用戶在App 內下達指令后,經藍牙透傳到單片機內,解析指令后判斷接收到的是音樂數據還是模塊控制信號。而關于眼部按摩儀設備內部則是通過藍牙通信將App 內部數據進行分析、處理,同時將數據庫系統的數據通過藍牙通信進行讀取反饋回App 中。若接收到的為音樂數據,則將其轉為音樂對應的電平信號后使揚聲器播放音樂;若接收到的為模塊控制信號,則根據指令調度各模塊按照編寫的控制程序執行命令。
溫度控制軟件設計部分主要實現對眼部按摩儀熱敷溫度的控制,溫度控制軟件包括石墨烯加熱裝置軟件設計和Pt100 溫度傳感器軟件設計。單片機將溫度設置信息轉化為電平信號,而電平信號控制石墨烯加熱裝置進行溫度升降,溫度升降過程中傳感器檢測儀器內溫度是否有超出限制,超出限制后進行合理地反饋調節。它可以實現的具體調溫范圍為30℃~42℃。開機后系統自動進入記憶模式,石墨烯發熱裝置將溫度加熱到上次保存的溫度值,當用戶更改參數設置后,程序判斷溫度當前值高于或低于設定值,若當前值高于設定值,則使加熱裝置進行降溫調整,反之則使加熱裝置進行升溫調整。
氣壓控制軟件設計部分主要實現對眼部按摩儀氣囊內壓力的控制。開機后系統自動進入記憶模式,在客戶端中選擇相應的模式或自定義調控氣壓后,藍牙接收App 所傳輸的信號并將此信號傳入單片機,單片機根據上次保存的氣壓值控制氣泵閥門開度大小,當用戶更改參數設置后,程序判斷氣壓當前值高于或低于設定值,若當前值高于設定值,則調節氣泵的閥門開度減小以實現降低氣囊氣壓的效果,反之則增大氣泵的閥門開度以實現增大氣囊氣壓的效果。計算機在通過大數據獲取并保留用戶所使用的氣壓信息,等到下次使用時,按摩儀會自動調到當前擋位。
振動電機控制軟件設計部分主要實現對眼部按摩儀振動頻率的控制。經初始化電機裝置后,單片機獲取電機所在接口的地址,將所獲地址發送電機設置命令,隨后根據按摩儀的具體需求選擇合適的轉速大小,電機轉動帶動振動裝置振動,并將當前振動頻率數據傳輸至單片機。在開機后,單片機會自動根據上次保存的振動頻率值控制振動電機的振動頻率,當用戶更改參數設置后,程序判斷當前振動頻率值大于或小于設定值,若當前值大于設定值,則調節電機振動頻率使振動頻率變低,反之則調節電機振動頻率使振動頻率變高。
本APP 客戶端的集成開發環境為Android studio3.1,使用Java 語言進行開發。整個App 客戶端采用模塊化設計,由模式選擇、DIY 設置、播放音樂、分析報告、新手教程、藍牙連接、疑難解答等模塊組成。其中分析報告通過綜合分析設備使用情況來進行展示,而新手教程和疑難解答模塊則是由開發者編輯。
主界面是采用約束布局ConstraintLayout 來進行構建的。因為App 客戶端主界面的小部件比較多,而約束布局ConstraintLayout 是一個視圖容器組件,可以在API9 以上的Android 系統使用它,它的出現主要是為了解決布局嵌套過多的問題,以靈活的方式定位和調整小部件。因此,采用約束ConstraintLayout 可以節約開發成本,且更為美觀[3~6]。
其他界面則是根據需求,分別采用線性布局Linear-Layout 或LinearLayout 與ConstraintLayout 嵌 套 結 合 的方式來進行開發布局[7~9]。其中音樂列表界面采用Listview視圖構建。
3.2.1 主界面模塊
在客戶端安裝之后,啟動時,系統會先獲取設備的唯一標識碼UUID 號,然后判斷是否存在數據文件DIYdata.txt,如果不存在,系統會調用fileIsExists()函數以覆蓋式MODE_PRIVATE 創建文件并存入初始數據。如果已經存在,則會調用fileNoExists()函數來判斷文件中是否存在初始數據,不存在則會存入初始數據,用以防止用戶誤清文件數據[10~12]。
3.2.2 DIY 設置模塊
DIY 設置采用SeekBar 來設置,溫度區間設置為25℃~42℃,氣壓設置低、中、高三個等級,氣囊的振動頻率設置弱、中、強三個等級,時間可以設置0~30 分鐘。
選擇DIY 設置模塊之后,系統會第一時間讀取DIYdata.txt 文件中的數據,然后把數據傳輸到各個SeekBar 進度條上。每一項數據設置完之后,系統會將數據以覆蓋的方式存入DIYdata.txt 文件,進行數據存檔。
用戶進入客戶端之后,進行模式選擇以及DIY 設置的時候,系統會先判斷手機是否滿足android4.3 以上版本,再判斷手機是否開啟藍牙。如果沒有開啟,系統會彈出一個dialog 提示框,提醒用戶開啟手機藍牙。
系統會通過startLeScan()進行BLE 藍牙的掃描,然后對其掃描結果進行回調。掃描到目標設備之后,開始建立連接,當連接成功時,需要調用discoverServices()去獲取服務(Service)[13~14]。
發現系統服務(Service)之后,還需要獲取特定服務特性(Characteristic)及讀寫特征才能進行數據通訊。讀特征要通過setCharacteristicNotification()設置打開通知,這樣才能接收到消息[15]。
接收到數據后,系統會通過對比Characteristic 將數據發送到客戶端各個數據處理函數去。
本論文研究了智能眼部按摩儀的構造,各部分運作的原理,以及App的部分設計。經過大量實驗證實,該眼部按摩儀可以實現通過App 進行溫度氣壓等量的調控和藍牙播放功能。