劉凌, 劉琦, 陳凱
(西安文理學院 機械與材料工程學院, 西安 710065)
智能家居是一種被認為智能化的住宅生活,是智能建筑的重要組成部分。近年來,隨著人們生活水平和科技水平的提高,智能家居的質量和功能也在不斷的提高。智能家居,不能很簡單的認為是家居或者是房間,而是一個大的系統,它將房間布局、家居設備、家居環境等有機的結合在一起,通過智能小型電腦,使用戶的生活變得智能化。本文的智能家居系統,使用典型的智能家居設計模型,通過客戶端口上的BOA服務器來控制接口。BOA服務器是一個可以提供可視化的網頁接口,通過網頁上的按鈕,可以將信息發送到EXYNOS4412開發板上,開發板對接收到數據進行一個分析,然后調用相應的應用程序來控制相應的模塊去做相應的工作。
本文的設計主要包括兩個部分:硬件電路搭建和程序設計。硬件電路主要是使用EXYNOS4412開發板作為核心SOC,使用ARM控制板做控制中心來控制蜂鳴器、電機、溫濕度傳感器等各個模塊來完成智能家居的系統控制和家居環境的控制,并且若家居環境處于危險狀況時報警。程序設計主要是使用C語言編寫出各個傳感器需要的驅動和需要實現的功能,其總體設計框圖如圖1所示:

圖1 總體設計框圖
MQ-2煙霧模塊是二氧化錫半導體氣敏材料的一種,也是表面離子式N型半導體的一種。當與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至而變化,就會引起表面導電率的變化。利用這一點就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導電率越大,輸出電阻越低,則輸出的模擬信號就越大。其原理圖如圖2所示。

圖2 MQ-2原理圖
DHT11溫濕度傳感器含有已校準的數字信號輸出,是一個復合傳感器。DHT11內部具有以下結構:一個干濕元件和一個測溫元件,它的特點是響應快、性價比高。
HY-SRF05當用戶選擇打開超聲波測距模塊時,超聲波測距模塊開始工作,當檢測到的數據小于設定值的時候,表明此時有人經過,家居環境處于不安全的狀態,同時觸發蜂鳴器報警;當用戶關閉安全模式時,超聲波測距模塊處于待機狀態。
HC-SR501的設計采用LHI778探頭設計,是基于紅外線技術的自動控制模塊,具有靈敏度高,可靠性強等特點,因此被廣泛應用于各類自動感應電器設備。其原理圖如圖3所示。
在本文所設計的智能家居模型中,人體紅外感應主要有兩種作用,一種為安全模式下的對家居環境安全的檢測,另一種為在智能模式下感應到有人經過時打開燈光的作用。其流程圖如圖4所示。

圖3 HC-SR501原理圖
zImage即為內核,rootos即為根文件系統。LINUX內核初始化的第一步是執行實模式下的匯編代碼,之后執行保護模式下init/main.c文件中的start_kernel()函數。start_kernel()函數首先會初始化CPU子系統,之后讓內存和進程管理系統就位,接下來啟動外部總線和I/O設備,最后一步是激活初始化(init)程序,它是所有Linux進程的父進程。初始化進程執行啟動必要的內核服務的用戶空間腳本。
1)在PC端搭建共享文件夾。
mkdir /rootos 在根目錄下創建rootos文件夾
vim /etc/exports 打開nfs服務器配置文件,寫入共享的文件夾
service nfs restart 重啟服務器

圖4 HC-SR501編程流程圖
cd UEA_160822/shared_arm_development/tools/Linux 進入到這個文件夾中
tar -Jxvf rootfs_qtopia_qt4-2016-11-23.tar.xz -C /rootos/ 將壓縮包解壓到/
rootos中cd /rootos 進入到解壓的目錄
mv rootfs_qtopia_qt4/*./ 將文件夾中的文件全部移出來
rm -rf rootfs_qtopia_qt4/ 刪除空文件夾
2)在kermit端通過設置環境變量讓bootloader掛載PC機的rootos。
set bootargs "root=/dev/nfs nfsroot=192.168.0.188:/rootos ip=192.168.0.187 console=ttySAC0,115200 lcd=S70"
3)取下網線,將開發板和PC機直連,將zImage發送到開發板,啟動內核,若啟動沒有完成,檢查PC機防火墻是否關閉或者PC機NFS服務是否開啟成功。
4)將/dev/mmcblk0p2掛載到/mnt:mount /dev/mmcblk0p2 /mnt/;將內核拷貝到/mnt目錄下
5)將/dev/mmcblk0p3掛載到/mn:tmount /dev/mmcblk0p3 /mnt/;將根文件拷貝到/mnt目錄下
6)重啟開發板。
7)在bootloader命令行修改環境變量
設置內核的自啟動:set bootcmd "ext2load mmc 0:2 40008000 zImage;bootm 40008000"
設置內核啟動后的文掛載:set bootargs "root=/dev/mmcblk0p3 console=ttySAC0,115200 lcd=S70"
8)重啟EXYNOS4412,若其成功啟動,則表明系統移植完成;若沒有成功啟動,則檢查環境變量等,如果還是不能進入系統,則需要重新移植內核和跟文件系統。
下載BOA服務器的源碼包boa-0.94.13.tar.tar,下載完成后解壓源碼包:tar xvf boa-0.94.13.tar.tar;進入到解壓好的目錄中cd boa-0.94.13/src;生成Makefile文件并對其進行修改,執行.configure生成Makefile文件;修改 src/compt.h文件;修改/src/log.c;修改src/boa.c;BOA服務器的配置。
CGI,即公用網關接口,Web服務器調用其他可執行程序的接口協議標準就是CGI來規定的。CGI工作過程如圖5所示。

圖5 CGI工作過程
通過網站現在mjpg-stream的源碼包jpegsrc.v8b.tar.gz;http://www.ijg.org/files/jpegsrc.v8b.tar.gz;解壓源碼包:tar xf jpegsrc.v8b.tar.gz;配置源碼包:cd jpeg-8b;編譯:make;安裝:make install;cp /jpeg/lib/libjpeg.* /rootfs/lib通過以上步驟,完成jpeg庫的移植。
通過http://sourceforge.net/projects/mjpg-streamer/下載并解壓源碼包;修改頂層makefile及plugins目錄中的各級makefile,將所有的CC=gcc修改為CC=arm-linux-gcc;修改 plugins/input_uvc/Makfile;編譯并移植庫文件:mkdir /rootfs/mjpg;cp *.so /rootfs/mjpg;cp mjpg-streamer /rootfs/bin.將攝像頭與EXYNOS4412連接,啟動網頁服務器/etc/boa/boa&;進入 mjpg_streamer 的文件夾,運行 mjpg_stream mjpg_streamer-i “/mjpg/input_uvc.so” -o “/mjpg/output_http.so -w./ www”& (注意:這里是板子的ip 192.168.0.168);瀏覽器上執行:http://192.168.0.168:8080/?action=snapshot。
控制終端的主界面如圖6所示。

圖6 終端界面
其中左側溫度和濕度顯示當前環境下的溫濕度度數;房門、電燈、窗簾、安全模式和懶人模式分別顯示其對應功能在終端上的開關狀態,當在終端上進行相應的操作的時候,會顯示相應功能是否打開。右側留下了門、智能模式、風扇、安全模式、窗簾和燈的按鈕,點擊相應的按鈕會進入到相應的操作界面,通過點擊開和關會對相應的傳感器進行操作。智能模式,打開智能模式后,當人體紅外傳感器檢測到有人經過時即打開燈光,延時4s關閉。安全模式。打開安全模式后,人體紅外傳感器,超聲波測距傳感器,煙霧傳感器開始工作。其中人體紅外傳感器是檢測是否有人非法進入到家中;超聲波測距模塊檢測窗口;煙霧傳感器檢測家中是否有火災發生或者是可燃氣體的泄漏;若家中有危險產生,則觸發蜂鳴器報警,提示用戶注意防范。查看界面,如圖7所示。
通過本軟件的開發,完成以下一些功能:
1) 家居控制系統

圖7 查看照片界面
通過終端上的提示按鍵或者網頁的提示來打開或者關閉燈光;通過終端屏幕上的提示按鍵或者網頁的提示來打開或者關閉窗簾;通過終端屏幕的提示按鍵或者網頁的提示按鈕來控制風扇來模擬家具中的通風系統;通過溫濕度傳感器實現對家居中溫濕度的監控,實現測量家居中溫濕度。
2) 安防系統
監控模塊:在沒有人在家的時候,用戶可以通過攝像頭實現對家居狀態的監控,以達到對家居的監控,同時監控系統有拍照功能;防火模塊:當發生火災時,必然有大量煙霧,通過煙霧傳感器的檢測來判斷當前家具是否發生異常,當發生異常時觸發蜂鳴器報警;防盜模塊:通過測量來人與窗口的距離來檢測它的安全狀態,當人體離窗戶距離過小時,會觸發蜂鳴器報警。
3) 網頁
當用戶的手機或者電腦的網絡和網絡服務器在局域網內,就可以使用網頁對家居中設備進行操作。