隨著電子、微電子、軟件、通信、控制以及多媒體技術的發(fā)展,人們逐漸對自己的生活提出一種更高的要求,他們需要一種智能化、可交互,并且融合現(xiàn)代創(chuàng)新科技的產(chǎn)品來改善他們的生活環(huán)境,使他們的生活更加安全、舒適、便捷、智能�;谏鲜鲂枨�,我們迎來了智能家居的時代。
智能家居是一種以樓宇建筑為平臺,利用網(wǎng)絡通信技術、自動控制技術以及綜合布線技術等實現(xiàn)住宅設施與家庭日常事務高效管理的集成控制系統(tǒng)。在國外,運用智能家居理念的著名建筑有位于日本東京的本田青山大廈、NEC辦公大廈等。在中國,由于對智能家居的認知起步較晚,發(fā)展相對滯后,海爾、清華同方是現(xiàn)今國內(nèi)為數(shù)不多的大型智能家居控制系統(tǒng)供應商之一。
在智能家居領域,安全是重中之重。一直以來,安全都是整個社會賴以生存與發(fā)展的基礎,尤其在現(xiàn)代化技術高度發(fā)展的今天,犯罪手段越來越高明,潛在安全隱患越來越多,所以提升現(xiàn)代化安防技術就顯得至關重要。
本文所述的智能家居控制系統(tǒng)主要包含三類監(jiān)控功能:室內(nèi)溫度監(jiān)控、室內(nèi)煙霧監(jiān)控以及紅外門禁監(jiān)控。與此同時,在軟件實現(xiàn)上預留了串口轉換硬件模塊(GPRS轉串口模塊、Zigbee轉串口模塊)的接口,以便于實現(xiàn)硬件功能的拓展。系統(tǒng)的Zigbee模塊不僅可以用于客戶端與服務器端的通信,而且可以作為匯聚節(jié)點,將來自其它Zigbee錨節(jié)點的定位信號強度匯總,運用相應的定位算法進行處理,實現(xiàn)對進入室內(nèi)非法分子的zigbee多點定位。
除此之外,該系統(tǒng)還支持軟件版本查詢、軟件升級以及設備自檢,實時采集硬件設備的使用狀況(CPU頻率、剩余內(nèi)存、剩余閃存空間等),將相關的工作參數(shù)上報至操作與維護終端,并且可以手動配置相應參數(shù)。
1 開發(fā)環(huán)境
1)硬件開發(fā)平臺。
天嵌TQ210開發(fā)板、溫度傳感器(DS18B20)、煙霧傳感器(MQ-2)、紅外傳感器(D204S)、zigbee轉串口模塊(FBee_FZB5000+)等。
2)軟件開發(fā)平臺:Linux(Ubuntu_12.04)。
3)嵌入式Linux內(nèi)核:Kernel_2.6.35.7。
4)根文件系統(tǒng)的制作工具Busybox:busybox_1.19.4。
5)輔助軟件:QT4.8.1(qtcreator,qtdesigner)。
6)網(wǎng)絡通信協(xié)議:用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)。
7)網(wǎng)絡環(huán)境:Ethernet。
8)編譯器:gcc、arm-linux-gcc(4.4.6)。
9)軟件調試工具:GDB。
2 系統(tǒng)的軟件架構
智能家居控制系統(tǒng)的硬件組成主要包含四大部分:終端控制器、遠程控制器、傳感器模塊以及硬件拓展模塊。為了支持該系統(tǒng)的硬件,并且設計一個性能優(yōu)良、可靠性高的軟件系統(tǒng),必須遵循合理的設計規(guī)范與系統(tǒng)架構。
圖1 Linux開發(fā)環(huán)境的軟件架構圖
3 系統(tǒng)工作流程
1)服務器端:待系統(tǒng)上電之后,啟動bootloader引導程序,初始化硬件、啟動內(nèi)核以及完成內(nèi)存映射等;之后加載內(nèi)核,初始化驅動程序,并且掛載根文件系統(tǒng);待根文件系統(tǒng)掛載之后,初始化系統(tǒng)配置,掛載用戶分區(qū),啟動應用程序。接下來,系統(tǒng)完成初始化日志與消息、創(chuàng)建4條線程以及創(chuàng)建服務器端socket通信等工作;最后,系統(tǒng)開啟服務器端的業(yè)務流程,監(jiān)控室內(nèi)溫度、煙霧以及紅外門禁信息,并且啟動信息查詢與上報反饋機制。
2)客戶端:首先啟動客戶端軟件,加載主界面并且初始化界面元素信息;然后創(chuàng)建客戶端socket通信,并且構建消息,將其傳輸給服務器端,等待服務器端的消息響應;最后接收來自服務器端的數(shù)據(jù),直到服務器端線程結束,main函數(shù)返回為止。
4 具體技術實現(xiàn)
根據(jù)實際需要,設計基于arm體系結構的智能家居控制系統(tǒng)主要分為以下幾個步驟。
4.1 Bootloader
Bootloader是在系統(tǒng)內(nèi)核加載之前運行的一段精簡的引導程序,它擔負著硬件初始化與操作系統(tǒng)引導的雙重職責。也就是說,我們不僅可以通過這段程序實現(xiàn)初始化硬件設備、建立內(nèi)存空間映射以及壞塊檢測等功能,為系統(tǒng)的軟硬件搭建一個良好的交互環(huán)境,而且可以將操作系統(tǒng)從NAND Flash等存儲器中加載至RAM中,為最終運行Linux操作系統(tǒng)內(nèi)核做準備。
Bootloader可以分為Stage1與Stage2兩大部分,前者主要實現(xiàn)與系統(tǒng)硬件體系結構關聯(lián)程度高的引導程序代碼與板級初始化代碼,通常使用匯編語言編寫;后者主要實現(xiàn)功能更加復雜的,并且具有好的可讀性與可移植性的程序代碼,通常使用C語言編寫。
4.2 驅動程序開發(fā)
嵌入式Linux系統(tǒng)的設備驅動可以分為三大類型:字符設備驅動(Character Device Driver)、塊設備驅動(Block Device Driver)、網(wǎng)絡設備驅動(Network Device Driver)。
它作為內(nèi)核的一部分,主要完成以下功能:
1)設備的初始化、與設備相關系統(tǒng)資源的分配與回收。
2)在底層硬件與內(nèi)核之間建立信息交互環(huán)境,以便于傳遞數(shù)據(jù)。
3)在設備與應用程序之間實現(xiàn)數(shù)據(jù)交互。
4)檢測與處理設備出現(xiàn)的異�;蛘咤e誤。
驅動開發(fā)的一般流程如圖2所示。
圖2 底層驅動的基本開發(fā)流程
除此之外,在驅動程序的開發(fā)過程中還會用到中斷處理、定時器、等待隊列、內(nèi)存與I/O訪問、Input子系統(tǒng)以及平臺總線架構等機制。
4.3 封裝接口函數(shù),制作動態(tài)庫
通過系統(tǒng)調用,實現(xiàn)面向用戶態(tài)接口函數(shù)的封裝,變量的封裝形式采用結構體,功能的封裝采用函數(shù),使用指針傳遞參數(shù)。
動態(tài)庫的制作很簡單,只需要使用如下指令即可:
arm-linux-gcc-fpic-shared xx.c-o libxx.so-I include_path
4.4 根文件系統(tǒng)的制作
根文件系統(tǒng)的制作主要依賴于BusyBox工具。
1)首先在busybox目錄下,執(zhí)行make menuconfig命令配置相應的屬性;然后修改busybox自帶Makefile文件,將第164行與第190行分別修改成為CROSS_COMPILE?=arm-linux-與ARCH?=arm;最后順序執(zhí)行make與make install指令,根據(jù)Makefile可以得知busybox的缺省安裝目錄在/_install目錄下。
2)在根文件系統(tǒng)rootfs中創(chuàng)建必要的目錄(例如:etc、sys、proc、tmp、var、home、lib、etc、root等)。
3)庫文件的部署。將一些必要的庫文件與加載器拷貝到根文件系統(tǒng)rootfs中/lib/目錄下,若不清楚庫文件的存放位置,可以使用which is arm-linux-gcc進行查找;若需要查看busybox使用共享庫(動態(tài)庫)信息,可以使用arm-linux-readelf-d busybox與arm-linux-readelf–a app|grep“shared”命令進行查看。
4)文件系統(tǒng)瘦身。可以使用sudo arm-linux-strip*命令對文件進行瘦身,以便于縮小文件系統(tǒng)的體積,節(jié)約內(nèi)存或者閃存空間。
5)添加必要的配置信息(例如:etc/inittab、etc/fstab、etc/profile、etc/init.d/rcS等)。
6)配置相應的環(huán)境,通過NFS掛載測試。
7)制作文件系統(tǒng)鏡像。在制作文件系統(tǒng)鏡像時,最常用的幾種文件系統(tǒng)格式如下所示:cramfs、ramdisk、initramfs、yaffs2等。
圖3 根文件系統(tǒng)鏡像的制作流程
上述的四種文件格式也可以綜合使用,本文綜合它們的優(yōu)點,使用cramfs(rootfs)+yaffs2(userdata)方式制作鏡像文件。
4.5 運行在開發(fā)板上的監(jiān)控軟件的設計
1)底層硬件驅動程序的編寫與修改。
2)封裝用戶態(tài)的接口函數(shù),并且將其封裝成為動態(tài)庫(*.so)。
3)依次完成設備初始化,創(chuàng)建4條并行獨立線程以及完善相應的線程處理函數(shù)等工作,在main()函數(shù)返回之前,必須使用pthread_join()分別等待線程的結束。
4.6 設備操作與維護軟件的設計
1)完成服務器端的配套功能。
在該項目中不需要過多考慮數(shù)據(jù)安全性與完整性校驗問題,因此選用UDP(用戶數(shù)據(jù)報協(xié)議))的通信模式。
創(chuàng)建服務器端socket通信函數(shù)create_socket(),在該函數(shù)中以結構體類型指針的方式傳遞數(shù)據(jù)包內(nèi)容,并且完成數(shù)據(jù)包接收與解析工作,判斷下一步應該做出哪種類型的響應;與此同時,完成消息請求處理與反饋功能。
2)完成客戶端界面設計與功能的實現(xiàn)。
使用Qt4.8.7進行上位機界面設計與功能實現(xiàn)。
①通過QtCreator與QtDesigner設計上位機的圖形界面。
②創(chuàng)建客戶端socket通信,完成信號函數(shù)與相應槽函數(shù)的匹配連接(通過QObject::connect()實現(xiàn))。
③實現(xiàn)消息通信與處理機制。
④實現(xiàn)2種不同方式(串口登錄與網(wǎng)口登錄)的登錄功能。
4.7 終端軟件設計(支持實時性)
1)使用QtCreator與QtDesigner設計終端軟件的圖形界面。
2)完成相應功能(接受來自傳感器與系統(tǒng)內(nèi)部的實時信息并且將其反饋至圖形界面)。
3)Qt庫的移植:
①下載并且解壓Qt的私有函數(shù)庫與觸摸屏TouchScreen的函數(shù)庫;
②首先在vi環(huán)境中cd到解壓之后的tslib目錄下,先后執(zhí)行./autogen-clean.sh與./autogen.sh腳本,然后依次執(zhí)行./configure--host=arm-linux--prefix=/opt/arm/tslib、make、make install指令;
③首先在vi環(huán)境中cd到解壓之后的qt-everywhere-opensource-src-4.8.4目錄下,執(zhí)行cp../build.sh.命令將上級文件夾中的build.sh可執(zhí)行腳本文件拷貝到當前目錄中,修改./mkspecs/qws/linux-arm-g++/qmake.conf文件,在arm-linux-gcc或者arm-linux-g++之后添加-lts,保存退出,然后./build.sh,接下來make,最后make install。
4)交叉編譯:在Qt工程目錄下,依次執(zhí)行/opt/arm/qt/bin/qmake–project、/opt/arm/qt/bin/qmake、make命令。
5)Qt庫的部署:構建文件系統(tǒng)rootfs中/etc/目錄下的profile文件,在該文件中添加export QWS_KEYBOARD="TTY:/dev/event1"命令設置相應的環(huán)境變量;并且將文件夾qt與tslib拷貝到開發(fā)板rootfs指定目錄下。
5 Zigbee定位算法
將采集到的Zigbee信號強度信息導入shadowing模型
(1)
其中,d為射頻信號接收端與發(fā)射端自檢的距離,d0為參考距離,Pr(d)為基站接收到用戶節(jié)點的信號強度,Pr(d0)為基站接收到由參考點發(fā)送的信號強度。
利用(1)式可以計算出錨節(jié)點到未知節(jié)點之間的距離d,接下來建立定位模型(在100×100的試驗區(qū)域內(nèi)),本文采用基于三邊測距的LMS格型濾波改進算法對定位信息進行處理,仿真結果如圖5所示。
6 結束語
該系統(tǒng)基于ARM體系結構與Linux開發(fā)平臺,通過三類傳感器對家庭環(huán)境中的溫度、煙霧以及紅外門禁進行實時監(jiān)控,并且可以通過Internet遠程查看與設置系統(tǒng)的各類參數(shù),也可以通過串口對系統(tǒng)功能進行拓展。與此同時,該系統(tǒng)支持短信與Zigbee通信功能,當家庭有非法分子入侵時,觸發(fā)紅外門禁,并且啟動Zigbee定位,運用該定位算法可以較為準確地確定非法分子在室內(nèi)的位置,并且將定位信息反饋給用戶,增強了系統(tǒng)的功能。
該系統(tǒng)穩(wěn)定可靠、智能化程度較高,并且具有較好的拓展性,這些優(yōu)點使它具有很好的應用前景與巨大的市場潛力。
在智能家居領域,安全是重中之重。一直以來,安全都是整個社會賴以生存與發(fā)展的基礎,尤其在現(xiàn)代化技術高度發(fā)展的今天,犯罪手段越來越高明,潛在安全隱患越來越多,所以提升現(xiàn)代化安防技術就顯得至關重要。
本文所述的智能家居控制系統(tǒng)主要包含三類監(jiān)控功能:室內(nèi)溫度監(jiān)控、室內(nèi)煙霧監(jiān)控以及紅外門禁監(jiān)控。與此同時,在軟件實現(xiàn)上預留了串口轉換硬件模塊(GPRS轉串口模塊、Zigbee轉串口模塊)的接口,以便于實現(xiàn)硬件功能的拓展。系統(tǒng)的Zigbee模塊不僅可以用于客戶端與服務器端的通信,而且可以作為匯聚節(jié)點,將來自其它Zigbee錨節(jié)點的定位信號強度匯總,運用相應的定位算法進行處理,實現(xiàn)對進入室內(nèi)非法分子的zigbee多點定位。
除此之外,該系統(tǒng)還支持軟件版本查詢、軟件升級以及設備自檢,實時采集硬件設備的使用狀況(CPU頻率、剩余內(nèi)存、剩余閃存空間等),將相關的工作參數(shù)上報至操作與維護終端,并且可以手動配置相應參數(shù)。
1 開發(fā)環(huán)境
1)硬件開發(fā)平臺。
天嵌TQ210開發(fā)板、溫度傳感器(DS18B20)、煙霧傳感器(MQ-2)、紅外傳感器(D204S)、zigbee轉串口模塊(FBee_FZB5000+)等。
2)軟件開發(fā)平臺:Linux(Ubuntu_12.04)。
3)嵌入式Linux內(nèi)核:Kernel_2.6.35.7。
4)根文件系統(tǒng)的制作工具Busybox:busybox_1.19.4。
5)輔助軟件:QT4.8.1(qtcreator,qtdesigner)。
6)網(wǎng)絡通信協(xié)議:用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)。
7)網(wǎng)絡環(huán)境:Ethernet。
8)編譯器:gcc、arm-linux-gcc(4.4.6)。
9)軟件調試工具:GDB。
2 系統(tǒng)的軟件架構
智能家居控制系統(tǒng)的硬件組成主要包含四大部分:終端控制器、遠程控制器、傳感器模塊以及硬件拓展模塊。為了支持該系統(tǒng)的硬件,并且設計一個性能優(yōu)良、可靠性高的軟件系統(tǒng),必須遵循合理的設計規(guī)范與系統(tǒng)架構。
圖1 Linux開發(fā)環(huán)境的軟件架構圖
3 系統(tǒng)工作流程
1)服務器端:待系統(tǒng)上電之后,啟動bootloader引導程序,初始化硬件、啟動內(nèi)核以及完成內(nèi)存映射等;之后加載內(nèi)核,初始化驅動程序,并且掛載根文件系統(tǒng);待根文件系統(tǒng)掛載之后,初始化系統(tǒng)配置,掛載用戶分區(qū),啟動應用程序。接下來,系統(tǒng)完成初始化日志與消息、創(chuàng)建4條線程以及創(chuàng)建服務器端socket通信等工作;最后,系統(tǒng)開啟服務器端的業(yè)務流程,監(jiān)控室內(nèi)溫度、煙霧以及紅外門禁信息,并且啟動信息查詢與上報反饋機制。
2)客戶端:首先啟動客戶端軟件,加載主界面并且初始化界面元素信息;然后創(chuàng)建客戶端socket通信,并且構建消息,將其傳輸給服務器端,等待服務器端的消息響應;最后接收來自服務器端的數(shù)據(jù),直到服務器端線程結束,main函數(shù)返回為止。
4 具體技術實現(xiàn)
根據(jù)實際需要,設計基于arm體系結構的智能家居控制系統(tǒng)主要分為以下幾個步驟。
4.1 Bootloader
Bootloader是在系統(tǒng)內(nèi)核加載之前運行的一段精簡的引導程序,它擔負著硬件初始化與操作系統(tǒng)引導的雙重職責。也就是說,我們不僅可以通過這段程序實現(xiàn)初始化硬件設備、建立內(nèi)存空間映射以及壞塊檢測等功能,為系統(tǒng)的軟硬件搭建一個良好的交互環(huán)境,而且可以將操作系統(tǒng)從NAND Flash等存儲器中加載至RAM中,為最終運行Linux操作系統(tǒng)內(nèi)核做準備。
Bootloader可以分為Stage1與Stage2兩大部分,前者主要實現(xiàn)與系統(tǒng)硬件體系結構關聯(lián)程度高的引導程序代碼與板級初始化代碼,通常使用匯編語言編寫;后者主要實現(xiàn)功能更加復雜的,并且具有好的可讀性與可移植性的程序代碼,通常使用C語言編寫。
4.2 驅動程序開發(fā)
嵌入式Linux系統(tǒng)的設備驅動可以分為三大類型:字符設備驅動(Character Device Driver)、塊設備驅動(Block Device Driver)、網(wǎng)絡設備驅動(Network Device Driver)。
它作為內(nèi)核的一部分,主要完成以下功能:
1)設備的初始化、與設備相關系統(tǒng)資源的分配與回收。
2)在底層硬件與內(nèi)核之間建立信息交互環(huán)境,以便于傳遞數(shù)據(jù)。
3)在設備與應用程序之間實現(xiàn)數(shù)據(jù)交互。
4)檢測與處理設備出現(xiàn)的異�;蛘咤e誤。
驅動開發(fā)的一般流程如圖2所示。
圖2 底層驅動的基本開發(fā)流程
除此之外,在驅動程序的開發(fā)過程中還會用到中斷處理、定時器、等待隊列、內(nèi)存與I/O訪問、Input子系統(tǒng)以及平臺總線架構等機制。
4.3 封裝接口函數(shù),制作動態(tài)庫
通過系統(tǒng)調用,實現(xiàn)面向用戶態(tài)接口函數(shù)的封裝,變量的封裝形式采用結構體,功能的封裝采用函數(shù),使用指針傳遞參數(shù)。
動態(tài)庫的制作很簡單,只需要使用如下指令即可:
arm-linux-gcc-fpic-shared xx.c-o libxx.so-I include_path
4.4 根文件系統(tǒng)的制作
根文件系統(tǒng)的制作主要依賴于BusyBox工具。
1)首先在busybox目錄下,執(zhí)行make menuconfig命令配置相應的屬性;然后修改busybox自帶Makefile文件,將第164行與第190行分別修改成為CROSS_COMPILE?=arm-linux-與ARCH?=arm;最后順序執(zhí)行make與make install指令,根據(jù)Makefile可以得知busybox的缺省安裝目錄在/_install目錄下。
2)在根文件系統(tǒng)rootfs中創(chuàng)建必要的目錄(例如:etc、sys、proc、tmp、var、home、lib、etc、root等)。
3)庫文件的部署。將一些必要的庫文件與加載器拷貝到根文件系統(tǒng)rootfs中/lib/目錄下,若不清楚庫文件的存放位置,可以使用which is arm-linux-gcc進行查找;若需要查看busybox使用共享庫(動態(tài)庫)信息,可以使用arm-linux-readelf-d busybox與arm-linux-readelf–a app|grep“shared”命令進行查看。
4)文件系統(tǒng)瘦身。可以使用sudo arm-linux-strip*命令對文件進行瘦身,以便于縮小文件系統(tǒng)的體積,節(jié)約內(nèi)存或者閃存空間。
5)添加必要的配置信息(例如:etc/inittab、etc/fstab、etc/profile、etc/init.d/rcS等)。
6)配置相應的環(huán)境,通過NFS掛載測試。
7)制作文件系統(tǒng)鏡像。在制作文件系統(tǒng)鏡像時,最常用的幾種文件系統(tǒng)格式如下所示:cramfs、ramdisk、initramfs、yaffs2等。
圖3 根文件系統(tǒng)鏡像的制作流程
上述的四種文件格式也可以綜合使用,本文綜合它們的優(yōu)點,使用cramfs(rootfs)+yaffs2(userdata)方式制作鏡像文件。
4.5 運行在開發(fā)板上的監(jiān)控軟件的設計
1)底層硬件驅動程序的編寫與修改。
2)封裝用戶態(tài)的接口函數(shù),并且將其封裝成為動態(tài)庫(*.so)。
3)依次完成設備初始化,創(chuàng)建4條并行獨立線程以及完善相應的線程處理函數(shù)等工作,在main()函數(shù)返回之前,必須使用pthread_join()分別等待線程的結束。
4.6 設備操作與維護軟件的設計
1)完成服務器端的配套功能。
在該項目中不需要過多考慮數(shù)據(jù)安全性與完整性校驗問題,因此選用UDP(用戶數(shù)據(jù)報協(xié)議))的通信模式。
創(chuàng)建服務器端socket通信函數(shù)create_socket(),在該函數(shù)中以結構體類型指針的方式傳遞數(shù)據(jù)包內(nèi)容,并且完成數(shù)據(jù)包接收與解析工作,判斷下一步應該做出哪種類型的響應;與此同時,完成消息請求處理與反饋功能。
2)完成客戶端界面設計與功能的實現(xiàn)。
使用Qt4.8.7進行上位機界面設計與功能實現(xiàn)。
①通過QtCreator與QtDesigner設計上位機的圖形界面。
②創(chuàng)建客戶端socket通信,完成信號函數(shù)與相應槽函數(shù)的匹配連接(通過QObject::connect()實現(xiàn))。
③實現(xiàn)消息通信與處理機制。
④實現(xiàn)2種不同方式(串口登錄與網(wǎng)口登錄)的登錄功能。
4.7 終端軟件設計(支持實時性)
1)使用QtCreator與QtDesigner設計終端軟件的圖形界面。
2)完成相應功能(接受來自傳感器與系統(tǒng)內(nèi)部的實時信息并且將其反饋至圖形界面)。
3)Qt庫的移植:
①下載并且解壓Qt的私有函數(shù)庫與觸摸屏TouchScreen的函數(shù)庫;
②首先在vi環(huán)境中cd到解壓之后的tslib目錄下,先后執(zhí)行./autogen-clean.sh與./autogen.sh腳本,然后依次執(zhí)行./configure--host=arm-linux--prefix=/opt/arm/tslib、make、make install指令;
③首先在vi環(huán)境中cd到解壓之后的qt-everywhere-opensource-src-4.8.4目錄下,執(zhí)行cp../build.sh.命令將上級文件夾中的build.sh可執(zhí)行腳本文件拷貝到當前目錄中,修改./mkspecs/qws/linux-arm-g++/qmake.conf文件,在arm-linux-gcc或者arm-linux-g++之后添加-lts,保存退出,然后./build.sh,接下來make,最后make install。
4)交叉編譯:在Qt工程目錄下,依次執(zhí)行/opt/arm/qt/bin/qmake–project、/opt/arm/qt/bin/qmake、make命令。
5)Qt庫的部署:構建文件系統(tǒng)rootfs中/etc/目錄下的profile文件,在該文件中添加export QWS_KEYBOARD="TTY:/dev/event1"命令設置相應的環(huán)境變量;并且將文件夾qt與tslib拷貝到開發(fā)板rootfs指定目錄下。
5 Zigbee定位算法
將采集到的Zigbee信號強度信息導入shadowing模型
(1)
其中,d為射頻信號接收端與發(fā)射端自檢的距離,d0為參考距離,Pr(d)為基站接收到用戶節(jié)點的信號強度,Pr(d0)為基站接收到由參考點發(fā)送的信號強度。
利用(1)式可以計算出錨節(jié)點到未知節(jié)點之間的距離d,接下來建立定位模型(在100×100的試驗區(qū)域內(nèi)),本文采用基于三邊測距的LMS格型濾波改進算法對定位信息進行處理,仿真結果如圖5所示。
6 結束語
該系統(tǒng)基于ARM體系結構與Linux開發(fā)平臺,通過三類傳感器對家庭環(huán)境中的溫度、煙霧以及紅外門禁進行實時監(jiān)控,并且可以通過Internet遠程查看與設置系統(tǒng)的各類參數(shù),也可以通過串口對系統(tǒng)功能進行拓展。與此同時,該系統(tǒng)支持短信與Zigbee通信功能,當家庭有非法分子入侵時,觸發(fā)紅外門禁,并且啟動Zigbee定位,運用該定位算法可以較為準確地確定非法分子在室內(nèi)的位置,并且將定位信息反饋給用戶,增強了系統(tǒng)的功能。
該系統(tǒng)穩(wěn)定可靠、智能化程度較高,并且具有較好的拓展性,這些優(yōu)點使它具有很好的應用前景與巨大的市場潛力。