










摘 要:隨著科學技術的不斷發展,物聯網技術已經被廣泛應用于人們的日常生活中。其中,智能家居的出現與發展給人們的生活方式帶來了巨大的變化。但目前智能家居技術產品沒有統一的標準,并且價格昂貴,難以實現真正的家居應用。針對這一問題,提出一種以Android平臺為基礎的智能家居系統方案,該方案包括控制平臺搭建、終端 APP設計、智能電器仿真。現場控制平臺設計是智能家居系統的核心,方案采用ARM9嵌入式開發板。主要設計內容有現場控制平臺硬件搭建、現場控制平臺Android系統移植、智能家居電器模擬裝置、驅動程序移植、Android應用軟件設計等。方案采用無線WiFi與硬件設備進行通信,同時又作為服務器與手機終端實時通信。手機終端APP作為遠程控制器對智能電器進行遠程控制。該智能家居系統設計具有很強的可拓展性和靈活性,易于二次開發,控制穩定性較高。
關鍵詞:智能家居;安卓系統;系統移植;驅動程序;應用程序;遠程控制
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2024)07-0-04
0 引 言
隨著科學技術的發展,物聯網技術已經被廣泛應用到工業生產和人們的日常生活中。智能家居的出現使得人們的家庭生活方式發生了巨大的變化。與傳統的家居相比,智能家居為人們提供了一種能夠進行遠程控制且更加智能、舒適的生活環境。物聯網智能家居具有智能化、實時性、多樣性、創新性等特點[1-2]。
我國智能家居發展起步相對較晚,但是發展前景和應用市場非常廣泛。目前,現有的智能家居系統兼容性差、操作復雜、價格昂貴。另外,當前智能家居沒有統一的規范和行業標準。使得一些智能家居產品協議標準不兼容,維護困難,二次開發難度大[3]。針對這一困境,提出一種以ARM9嵌入式開發板為核心的智能家居系統方案。根據控制需求,只需要適當添加外圍電路和設備,并編寫簡單的程序就可以實現遠程智能控制。
1 現場控制平臺設計
1.1 控制平臺硬件設計
根據控制方案設計需求,控制芯片采用Exynos4412,Exynos4412芯片是基于ARM Cortex-A9架構的高性能四核處理器[4]。核心板還包括外部內存、存儲芯片和多個外部接口。Exynos4412核心板如圖1所示。
1.2 控制平臺操作系統
為了提高系統開發的兼容性和可拓展性,操作系統選用Android 5.0。該系統具有開放性、硬件選擇多樣性、開發便利性等特點。Android 5.0系統采用分層架構方式。應用層位于最上層,該層是為用戶提供服務的,例如手機終端APP等。應用程序框架層用來提供API函數接口和組件,這些接口和組件包括:Views組件、Activity Manager、Content Provider、Service、Intent and Intent Filter等。系統庫是Android提供的內部函數庫,只能通過上層的應用程序框架層進行調用。常用的函數庫有:Media Framework、Surface Manager、SGL、OpenGL ES 1.0、SQLite等。運行環境層包括兩部分:Android核心函數庫提供Java核心函數庫功能,Dalvik虛擬機提供Java運行環境。Linux內核層用來提供各種系統服務和管理功能。Android 5.0系統架構如圖2所示。
1.3 智能家居電器模擬裝置
智能家居電器模擬裝置采用S3C2416開發板資源[5]。S3C2416開發板提供各種功能接口,以供開發者使用。S3C2416開發板移植的是開源Linux 3.1.8操作系統,S3C2416開發板如圖3所示。
2 現場控制平臺Android系統移植
2.1 啟動引導程序
嵌入式操作系統通常用Bootloader作為啟動引導程序。內核啟動前,Bootloader對硬件進行重置,并定位至RAM程序,完成內核啟動[6]。
Exynos4412啟動時序是完成Uboot加載的重要環節,直接決定系統啟動成功與否。Uboot的加載過程如圖4所示。
BL0是iROM中的一段初始化程序,包括一些基本系統指令。例如:重置DDR3、初始化Clock、重置Stack等。BL2根據OM值將Uboot.bin文件拷貝至DDR3中執行。Uboot.bin將Android內核定位至DDR3中,引導啟動Android內核。
Uboot的工作過程分為兩部分:第一部分,設置CPU工作模式,設置異常向量表地址,清空流水線,設置時鐘,初始化SDRAM,初始化串口等;第二部分,初始化外設,進入超循環,處理用戶指令,重置啟動內核參數,內核啟動。Uboot的工作流程如圖5所示。
2.2 Android Kernel移植
Android內核具有將近兩萬個文件,分別位于頂層目錄下的17個子目錄中[7]。Android內核代碼目錄如圖6所示。
移植Linux3.0.86內核到Exynos4412平臺上時需要設置Makefile文件,執行make menuconfig程序進行參數配置。這里可以配置串口設備、WiFi驅動、網卡設備等。參數配置完畢后,執行make命令即可生成內核鏡像文件。Linux內核圖形配置如圖7所示。
2.3 驅動程序移植
驅動程序是計算機與設備之間通信的程序,類似于軟硬件之間的接口。
溫度采集驅動程序:硬件設計采用DS18B20溫度傳感器[8-9]。DS18B20驅動程序屬于字符型,因此需要分析DS18B20驅動結構。DS18B20驅動結構框圖如圖8所示。
首先需要定義DS18B20驅動注冊函數和驅動卸載函數,用來訪問內核。驅動注冊函數中包括注冊文件結構體、創建類和創建設備節點。這里創建設備節點定位為ds18b20,在注冊文件操作結構體中可以定義溫度傳感器數據的讀取和寫入函數,還可以對其進行初始化設置。例如:read函數用來對DS18B20進行數據的讀取操作,write函數用來對DS18B20進行數據的寫操作,reset函數用來對DS18B20進行數據的初始化操作。
LCD驅動程序:硬件設計采用S702-AT070TN92型號7寸LCD電容屏[10]。LCD驅動結構框圖如圖9所示。
首先,配置數組4412_lcd,定義4412_get_lcd函數用來獲取數組信息并進行存儲。由S3cfb_set_platdata函數和S3c_fb截取數據發送至S3c數據結構體和S3c_fb_pd_win結構體。經過匹配函數,將S3c_fb_pd_win結構體數據送至fb_videomode結構體中,結合幀緩存信息結構體,并通過fb_videomode_to_var函數進入屏蔽信息結構體中。其次,由register_framebuffer函數將幀緩存信息結構體數據傳送至幀緩存信息結構體數組中,由get_fb_info函數將獲取的數據傳送至幀緩存信息結構體。最后由幀緩存結構體數據信息和文件操作結構體信息打開幀緩存獲取數據。
WiFi驅動程序:在各種Android設備中幾乎都會嵌入WiFi芯片,這里Android WiFi系統采用WPA_supplicant。硬件選用RT3070 USB接口WiFi模塊,Android WiFi系統主要模塊包括:WiFi服務、WiFi監聽器、WPA_supplicant、Linux WiFi驅動等。
Android WiFi系統結構主要包括四層。最上層為Android架構層,該層主要包括無線設置、WiFi設置、可接入點集、WiFi使能器、WiFi管理器、WiFi服務、WiFi監聽器等。第二層為Java本地接口層,主要完成Android_net_WiFi_WiFi接口設置。第三層為WPA_supplicant層,用來完成WPA客服端和WPA服務器配置。第四層為內核層,實現WiFi驅動功能。
Android WiFi系統結構框圖如圖10所示。
3 Android應用軟件設計
Android應用軟件設計是人機交互界面設計的重要環節。對于用戶而言,只需要對可視化界面進行簡單的操作,即可使用智能控制平臺。應用軟件設計過程中采用Android操作系統支持的接口函數和自定義接口函數相結合的方式。
3.1 溫度模塊軟件設計
溫度傳感器DS18B20將采集到的數據發送至控制平臺,由控制平臺對數據進行處理,并通過無線傳輸網絡連接手機終端APP,進而完成溫度顯示。當手機終端APP訪問服務器使用DS18B20時,會調用I18b20Service.aidl接口文件獲取18b20Service服務。在APP顯示窗口,使用組件TextView顯示溫度值。
DS18B20最高顯示精度為0.062 5,因此需要將采集到的數據乘以0.062 5才能得到真實值。在溫度顯示過程中,還要將數據轉換為十進制顯示。
3.2 遠程視頻監控軟件設計
遠程視頻監控模塊采用C/S架構,服務器采集視頻流,并在應用程序上顯示。服務器通過WiFi模塊聯網,可以在手機終端顯示。
硬件選用Z301攝像頭,V4L2驅動程序主要包括struct video_device、structv4l2_capability、structv4l2_format、structv4l2_pix_format、structv4l2_requestbuffers等結構體。V4L2驅動程序通過調用video_register_device函數實現。視頻編碼采用MJPEG-streamer實現,它可以將視頻流轉換為MJPEG格式。視頻流通常是YUV格式,MJPEG是RGB格式。因此,需要進行顯示格式轉換。YUV格式轉換為RGB格式的公式如下:
最后將編譯生成的input_uvc.so、output_http.so文件和可執行程序mipg_streamer放至現場控制平臺根目錄lib中。通過運行命令mjpg_streamer-i來配置現場IP地址和端口號。至此,MJPEG-streamer工具移植完成。
3.3 手機終端應用軟件設計
為增強開發平臺的通用性,遠程控制終端采用市場較為廣泛的Android系統手機。互聯網數據傳輸使用套接字Socket實現,協議為TCP/IP。用套接字Socket建立服務器和終端鏈接,用bind函數尋址端口,用connect函數發送鏈接,用accept函數監聽。連接建立完成后,即可使用send函數和recv函數進行數據傳輸。例如在手機終端視頻監控中,可以直接利用系統支持的API接口通過SurfaceView函數建立視頻播放平臺,這樣可以避免重新設計視頻播放程序。終端APP功能模塊設計和現場控制平臺設計具有類似的開發模式和流程,這里不再一一敘述。
4 結 語
本文對基于Android平臺的智能家居系統設計方案進行了研究。設計了現場控制架構,搭建了硬件平臺,完成了現場控制平臺Android系統移植、驅動程序移植、Android應用軟件設計,并采用無線WiFi與硬件設備進行通信。本文設計的智能家居系統結構簡單、便于維護、成本較低、可拓展性強,易于二次開發。
參考文獻
[1]朱敏玲,李寧.智能家居發展現狀及未來淺析[J].電視技術,2015,39(4):82-85.
[2]李曉陽. WiFi技術及其應用與發展[J]. 信息技術,2012,36(2):196-198.
[3] LIN C M,LIN J H,DOW C R R. Benchmark dalvik and native code for android system [J]. Innovations in bio-inspired computing and applications,2011,17(5):320-323.
[4]鞏琛,蔡文. 基于ARM的Linux驅動調試技術研究[J]. 計算機應用與軟件,2016,33(3):232-235.
[5]楊威,高文華. 基于Android的智能家居終端設計與研究[J]. 計算機技術與發展,2013,23(7):245-248.
[6] OGAWA N,OIKAWA S. Implementing the device driver of external human interaction device for the Android [C]// Proceedings of 2013 IEEE/ACIS 12th International Conference on Computer and Information Science(ICIS). Niigata,Japan:IEEE,2013:391-396.
[7]張定. 基于物聯網的智能家居的設計與研究[D]. 武漢:武漢理工大學,2015.
[8]劉巖. 基于S5PV210開發板的Android系統移植與應用開發[D]. 青島:中國海洋大學,2013.
[9]張蒙蒙. 基于Android智能家居系統設計[D].洛陽:河南科技大學,2017.
[10]嚴海洋. 基于ARM的智能家居系統的設計與實現[D]. 哈爾濱:哈爾濱工業大學,2013.