武志鵬 陶松嵐



摘 要:將智能手機應用于家居生活是發展的必然趨勢,設計一種基于Android和藍牙的無線遙控開關系統。該系統利用手機等智能終端作為上位機,通過藍牙功能發出指令,以單片機作為下位機的執行端,利用藍牙模塊接收指令,經Arduino Nano處理后驅動機械結構完成開關的動作。實驗測試結果表明,該系統具有低成本、低功耗、穩定、安全、易嵌入等優點,不需要改動原有電路就可隨時拆卸并更換安裝位置。
關鍵詞:Android;藍牙;遙控開關;智能家居;智能終端;Arduino Nano
中圖分類號:TP393.1;TS976.9文獻標識碼:A文章編號:2095-1302(2019)09-00-03
0 引 言
家庭生活是人們日常生活的重要組成部分,如何搭建一個方便使用、高效率、低成本的智能家居系統,進而為人們提供一個方便快捷、舒適安全的家庭生活環境,是近來信息技術從業者研究的一個熱點問題。傳統的智能家居通信多采用有線方式,其缺點是布線繁雜、安裝成本高、系統升級困難、擴展性和移動性差。室內常用的開關面板如圖1所示,由蓋板和翹板組成,按動翹板可以實現開關的通斷。該面板使用廣泛,若要進行智能化改造,必然需要改動原有墻體線路[1-4]。
針對上述情況,本文提供一種簡單有效的開關面板無線控制方式如圖2所示。本體與基座采用螺釘連接,通過過盈配合罩扣在蓋板上。在本體中,以舵機為原動機,曲柄滑塊機構為執行部件,仿照手指按動翹板;控制系統采用基于藍牙技術的無線通信方式;整個裝置采用放置在電池倉中的可充電鋰電池供電。本裝置采用罩扣式安裝,安裝方便,不改動原有接線,不需要專業技術便可安裝,可隨時拆卸并更換安裝位置。
1 系統概述
本家居控制器采用低功耗的微控單元和無線通信模塊,這樣保證了系統的穩定性、低功耗和低成本;與無線通信模塊之間采用心跳鏈路工作模式,保證了設備響應時效性。
系統工作時,以手機等智能終端作為上位機,利用藍牙功能發出指令,以單片機為核心的下位機,通過藍牙透傳模塊接收指令,經處理后由數字引腳發出控制信號使機械結構完成開關動作。系統采用電池供電,為避免電池的快速消耗,下位機在與上位機連接后,如果在單位時間內沒有接收到有效指令,則進入休眠狀態。由單片機內置定時器定期喚醒,發送一個同步幀至上位機,上位機接收到同步幀之后才會進行有效的數據交流,使執行終端從休眠模式轉入工作模式執行任務,系統執行完后繼續休眠以節省電量。系統總體設計如圖3所示[5-7]。
2 硬件選型
單片機模塊采用Arduino Nano,它是一種基于ATMEGA 328P的小型單片機集成板,有16 KB的閃存用于存儲代碼。Arduino Nano上的14個數字引腳都可以用作輸入或輸出,可以使用pinMode(),DigalWrite()和DigalRead()函數進行操作,每個引腳工作電壓為5 V,驅動電流為40 mA,并有內部上拉電阻,A6,A7針腳可以讀取模擬信號用來監控電源模塊。ATMEGA 328P有8種節電設置,SLEEP 指令可以使MCU 進入掉電模式,降低功耗。另外,該集成板具有UART串行通信引腳,可用于接收和發送TTL串行數據。
藍牙通信在生活中的應用非常廣泛,大多數無線設備支持此功能。本設計中藍牙模塊采用HC-05藍牙透傳模塊,其優點是體積小巧、貼片生產、穩定性好、易嵌入。HC-05采用了CSR主流藍牙芯片,藍牙V2.0協議標準,輸入電壓為3.6~6 V,可設置多種波特率,空曠地有效距離為10 m,能滿足室內使用。可以與各種帶藍牙功能的電腦、藍牙主機,以及大部分帶藍牙的手機、PDA等智能終端配對。其模塊上引出接口,包括VCC,GND,TXD,RXD。調試時可以采用AT指令設置通信參數,藍牙模塊發送端TXD,接Arduino Nano上的RXD引腳;藍牙模塊接收端RXD,接Arduino Nano上的TXD引腳。
電源模塊為可充電電池供電,用于向執行裝置提供工作電源。本系統24 h連續工作過程中,處于低功耗休眠狀態,無線接收模塊周期性喚醒,以激活系統進行工作,進一步降低了能耗,提高了系統可靠性。
電機驅動模塊采用MG996R舵機,以舵機為原動機的機械裝置可以實現對開關面板的按動操作。MG996R舵機質量輕,響應速度快,控制精度適中,工作電壓為4.8~7.2 V,可以與MCU、藍牙模塊共用電源。
下位機硬件框圖及實物如圖4所示。
3 軟件設計
軟件部分主要是應用計算機編程語言設計應用程序對各類信號進行處理計算,最終實現對硬件的控制。本系統需要在軟硬件協同工作實現對開關的遠程控制,分為上位機軟件和下位機軟件。上位機軟件是安卓移動端APP,用戶通過APP發送指令;下位機軟件在Arduino Nano中,用于接收指令驅動舵機。
3.1 上位機APP設計
以Android系統為例,系統中上位機與下位機之間由藍牙通信實現數據傳輸,上位機部分主要功能為:打開應用程序時,與對應的下位機藍牙模塊建立連接,將指令通過藍牙功能發送至下位機的藍牙模塊。啟動APP后,系統首先會判斷是否支持藍牙,如圖5(a)所示;確認支持后再判斷藍牙狀態,此時應使藍牙功能處于打開狀態,并掃描搜索附近藍牙設備,如圖5(b)所示;完成與硬件采集設備的匹配連接,連接成功后跳轉到操作界面進行數據的傳輸,如圖5(c)所示。本系統使用安卓Eclipse設計了一款手機APP,使用方便,調試難度低。
3.2 下位機程序設計
下位機部分主要通過藍牙模塊接收指令,并驅動舵機旋轉指定角度等動作,故單片機的程序設計較為簡單。
程序首先對Arduino Nano的引腳、串口波特率等進行初始化設置,將通信模塊設置為接收狀態,并使Arduino Nano進入低功耗模式。當接收到正確數據后產生中斷,對外圍電路開始供電,系統各模塊反饋信息給Arduino Nano。而后Arduino Nano退出低功耗模式,對數據進行處理,一方面驅動舵機,另一方面通過藍牙串口將數據發送至上位機。數據發送完成后再次進入低功耗模式。
使用Arduino Nano編寫藍牙通信程序簡單快捷,完成串口通信波特率(本文采用9 600 b/s)等參數初始化設置后,利用Serial.read()函數讀取藍牙模塊傳入的數據,根據讀到的數據執行相應的動作。由于開關只有兩種狀態,本文中,若藍牙模塊收到數據“1”,則舵機旋轉到0°,然后返回到20°;若讀到數據“2”,則舵機旋轉到40°,然后返回到20°。需要注意,這里的“1”和“2”是由上位機APP中的設定而決定,Arduino Nano程序中的設定與上位機APP端的編碼必須一致。Arduino Nano串口通信程序如下:
值得注意的是,組建系統之前需要用AT指令對HC-05藍牙模塊進行設置,包括藍牙名稱、波特率、配對碼等參數。另外,系統軟件設計時應采用模塊化設計思想,這樣有利于系統調試,而且便于在項目間進行移植。
4 結 語
通過以上軟硬件構成的一系列的接收、觸發動作,可以較為理想地手動與電動控制開關。舵機驅動的機械機構運行在指定位置按動翹板后,立即自動返回至初始位置以釋放翹板,解決了手動與電動兼具的問題。無線通信裝置接收到移動終端發來的指令信號,通過其內置的應用軟件,根據開或關的動作指令控制機械結構,行進一定的距離按動翹板,以達到本裝置的應用目的[2,8-9]。
該系統充分利用藍牙通信的廣泛性和智能終端的便捷性,安裝簡單,無需布線,無用電隱患,通過合理布置,可以將整個室內的開關組網控制。對系統的軟硬件進行改裝,能夠實現其他電器的無線控制組網功能,可廣泛應用在不便于布線改線的居家辦公場合,具有一定的實用價值。
參 考 文 獻
[1]古麗扎提·海拉提,胡志華.智能化窗與簾系統的節能自動控制設計[J].上海第二工業大學學報,2016,33(4):308-313.
[2]賈陽靜,鄒念育,雷冬鳴,等.基于Android和WiFi通信的智能家居系統設計[J].大連工業大學學報,2016,35(1):67-71.
[3]羅娟,賈亞龍,孔瀚文.基于Android的個性化智能家居控制終端[J].工業控制計算機,2018,31(3):41-42.
[4]關天屹.基于物聯網的教室空氣質量控制系統設計[J].工業控制計算機,2018,31(1):22-23.
[5]李楊,郭培源,劉波,等.基于嵌入式技術的居室健康環境監測系統[J].電子技術應用,2014,40(8):24-26.
[6]劉靜,楊正校,沈健.基于WiFi的安卓智能家居控制與監測系統的設計[J].軟件,2014,35(6):19-22.
[7]黃瑾瑜,馮乃喬,沈文輝.基于Android系統和藍牙通信的電機語音控制系統[J].工業控制計算機,2018,31(7):19-20.
[8]于洪濤,吳迪,朱齊山,等.一種基于無線透傳傳感網絡的分布式環境監測系統的設計[J].現代電子技術,2015,38(18):128-132.
[9]肖俊紅,邵廣賢.基于物聯網的井下環境監測數據無線傳輸系統設計[J].煤礦機械,2015,36(1):242-243.
[10]陳建明,郭香靜,趙明明.壓電式無源無線開關的設計[J].科技創新與應用,2015(3):19-20.