劉選朝,田庚,陳威沖,張家田,嚴正國
(西安石油大學光電油氣測井與檢測教育部重點實驗室,西安710065)
隨著物聯網技術的發展,各種智能化家居產品順應市場需求大量出現[1],用戶對于智能家居互動的靈活性要求也越來越高。最近幾年,通過“單片機”對紅外線遙控信號進行存儲、轉發的技術已經有了長足發展,進而利用嵌入式系統不斷增強的技術優勢產生更為智能的應用也變得簡單可行[2]。同樣通過利用單片機作為微控制器對家電設備進行控制已經變得容易實現。當前流行手機App 在軟件層對家用電器進行控制,而本設計采用集成MPU6050 芯片的新型遙控器,通過收集人體姿態數據,實現一鍵控制家中各方位電器的效果,為智能家居中人機交互提供了另一種底層硬件解決思路。
為方便進行說明,假定室內各電器放置位置如圖1。
如圖1 所示,假設使用者位于沙發位置,電視機(電器1)位于其正前方,而頂燈(電器2)相對于使用者處在垂直上方的位置,燒水壺(電器3)位于使用者左側,側燈(電器4)位于使用者右側。
本設計利用這些家中各電器位置相對固定不變的特性,并參考現有的智能家居設計[3],利用MPU6050 的姿態檢測功能,通過判斷使用者操作遙控器指向不同的位置,改變按鍵鍵值,實現使用者坐在沙發上,通過一個按鍵即可對家中電器1-4 進行簡單的開關控制。
基于人體姿態檢測的體感家電控制系統控制回路主要由STM32F103C8T6 為主控制器,MPU6050 六軸姿態傳感器和紅外信號發射接收模塊組成。總體系統框圖如圖2 所示。
發送端也是移動端,其MPU6050 六軸姿態傳感器可時實獲得自身姿態參數通過I2C 發送給單片機,單片機對當前參數進行歸類,判斷移動端目前處于什么樣的位置,按照程序設計改變鍵值的紅外信號,當按鍵按下接收端根據接收到的紅外信號改變不同的I/O 口引腳電平,繼而控制不同的繼電器,達到控制主電路不同電器開關的作用。

圖2 系統總體框圖
STM32C8T6 作為一款發展成熟的主控芯片[4],其憑借低功耗、中斷系統完善、價格低廉、功能齊全等特性非常適用于本設計。
MPU6050 是一款姿態傳感器,集成了三軸陀螺儀和三軸加速度計。陀螺儀可測范圍為±250、±500、±1000、±2000°/s,加速度計可測范圍為±2、±4、±8、±16g[5]。MPU6050 數據寄存器的輸出范圍是-7FFF~7FFF,也即是-32767~32767[6]。在本設計需要得到加速度傳感器數據和陀螺儀數據,分別對發送端的俯仰角及轉向方位進行判斷??紤]到本設計對于數據精度要求不高,針對角速度我們設計在±2000(°/s)范圍,因為陀螺儀的ADC 為16 位分辨率,所以得到靈敏度為:65536/4000=16.4LSB/(°/s)。設置加速度傳感器的滿量程范圍為±2g,因為加速度傳感器的ADC 也是16 位,所以得到靈敏度為:65536/4=16384LSB/g。
紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強、信息傳輸可靠、功耗低、成本低、易實現等顯著優點[7]。該模塊使用STC11F02E 將紅外信號進行分析解碼,轉換成6 字節的紅外信號協議,使其可通過串口對紅外信號進行改變設置。

圖3 紅外模塊電路圖
系統主程序流圖如圖所示:上電后進行通用初始化,包括系統初始化及MPU6050 初始化。因為該系統對于姿態數據參數測量頻率要求不高,因此可直接在主程序中通過無限循環讀取MPU6050 傳來的數據,繼而通過讀取到的數據改變按鍵鍵值。當按鍵按下,便通過串口向紅外模塊發送數據,紅外模塊即發送紅外信號進行通信。

圖4 主程序流圖
(1)初始化IIC 接口。
(2)復位MPU6050。
(3)設置角速度傳感器和加速度傳感器的滿量程范圍。
(4)設置其他參數。配置中斷、FIFO、數字低通濾波器。
(5)設置系統時鐘。
(6)使能角速度傳感器(陀螺儀)和加速度傳感器。
在串口進行輸出時,可以按照下面的程序將紅外指令進行輸出。

(1)紅外信號協議
該紅外模塊定義的通信協議如下:在本設計中地址位為默認地址A1。操作位表示當前工作狀態,在此設計中只使用了紅外模塊發射狀態,不改變其通信地址狀態和波特率,因此操作位為F1。數據位1、2、3 則為接收到的紅外編碼信息[8]。

表1 紅外信號協議
(2)紅外信號編碼設置
根據紅外信號協議,定義控制各電器紅外指令表如表2。

表2 各電器紅外指令編碼
根據本文開頭舉的例子,家中電器1-4 相對于沙發(使用者)的方位在如表3 總結。

表3 家中電器方位
當搭載MPU6050 的控制器指向不同的方位時,其產生的姿態數據體現在匿名四軸上位機軟件如圖5-8所示。

圖5 指向電器1

圖6 指向電器2

圖7 指向電器3

圖8 指向電器4
針對其數據的特征對其進行界定如表4 所示。

表4 控制各電器界定范圍
將其寫入程序中,當控制器按鍵按下時,在中斷服務函數中對六軸傳感器的數據進行解析并對比,針對不同的數據發出不同的控制信號,即可實現根據傳感器數據對不同的電器進行控制。
在本設計中只針對電器的開關進行控制,其控制過程較為簡單,利用小電流控制大電流的思想,使用5V 繼電器模塊對大功率電器進行控制,甚至可以使用5V 繼電器模塊控制斷路器,通過控制斷路器線圈通斷電繼而控制更大功率電器。此節不是本文的重點,因此不再贅述。
本設計面向家居智能控制,利用家用電器相對位置通常不變的特性,根據使用者姿態實時改變鍵值,達到“一鍵控制”家中電器的效果。當實現這一功能后,再進行改進即可對遙控器集成更多的按鍵,進行更復雜的控制。該設計為當前智能家居控制發展提供了一種新的底層硬件解決思路,為智能家居的普及和發展進行了有意義的探索。
但是該設計不足之處非常明顯,即使用者使用該控制器對家中電器進行控制時,該控制器與其他電器的相對位置也不能變化,換句話說,遙控器的位置在家中位置也必須是固定的。針對這一問題,可參考2017年本科生電子大賽“可見光室內定位裝置”題目,讓遙控器通過類似的思路對其功能進行升級,使其對自身在室內的定位進行自動檢測,從而改變數據庫,實現遙控器在室內不同位置也能實現對家中電器“一鍵控制”的功能。