王 小 輝
(1.西安郵電大學(xué) 人文與外國語學(xué)院,西安 710121; 2.陜西師范大學(xué) 地理科學(xué)與旅游學(xué)院,西安 710119)
隨著當(dāng)今社會的高速發(fā)展,環(huán)境保護(hù)已成為本世紀(jì)內(nèi)人類必須面對的重大問題[1-2]。在過去的霧霾檢測中,大多數(shù)都是通過人為攜帶大型設(shè)備去采集環(huán)境的數(shù)據(jù),雖然技術(shù)簡單,但設(shè)備精度不夠高,難以實(shí)時檢測[3]。隨著科技不斷發(fā)展,嵌入式系統(tǒng)與ARM處理器的結(jié)合可以完成大多數(shù)數(shù)據(jù)采集與傳輸。
本文基于ARM處理器與Linux操作系統(tǒng)的城市霧霾天氣監(jiān)測系統(tǒng)具有很好的應(yīng)用價值[4-6],可以廣泛應(yīng)用于商場、醫(yī)院、電影院等人流密集區(qū)域。
實(shí)驗(yàn)系統(tǒng)基于ARM11微處理器S3C6410芯片,連接所需傳感器與WiFi接口。使之搭載嵌入式Linux系統(tǒng),通過交叉編譯添加需要的傳感器驅(qū)動程序,并且生成相對應(yīng)的Linux內(nèi)核[7],最后將內(nèi)核導(dǎo)入Tiny6410中。利用傳感器采集周圍環(huán)境的數(shù)據(jù),通過Socket網(wǎng)絡(luò)通信完成數(shù)據(jù)傳輸[8-10]。整體系統(tǒng)示意圖如圖1所示。
圖1 環(huán)境監(jiān)測系統(tǒng)
系統(tǒng)采用HU-10S作為溫濕度傳感器,采用GP2Y10 10AU0F作為PM2.5傳感器,HU-10S通過I/O口進(jìn)行數(shù)據(jù)傳輸,PM2.5傳感器經(jīng)過GPIO口與I/O口完成數(shù)據(jù)傳輸[11],如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)圖
采用嵌入式Linux系統(tǒng)為基礎(chǔ)平臺,根據(jù)設(shè)計的需求對Linux系統(tǒng)的U-boot、Linux內(nèi)核、文件系統(tǒng)進(jìn)行適當(dāng)?shù)募訙p與定制,方便了對系統(tǒng)的開發(fā)。增加了對wireless USB WiFi驅(qū)動、溫濕度傳感器與PM2.5傳感器驅(qū)動,將寫好的編譯內(nèi)核模塊通過交叉編譯的方式增加到Linux內(nèi)核中去,同時減少設(shè)計所用不到的驅(qū)動,完成系統(tǒng)的最小化。通過Socket網(wǎng)絡(luò)通信技術(shù)與讀取傳感器接收到數(shù)據(jù),編寫程序完成對系統(tǒng)內(nèi)數(shù)據(jù)的調(diào)出,實(shí)現(xiàn)了對監(jiān)測環(huán)境的信息采集與傳輸[12]。
實(shí)驗(yàn)設(shè)計利用HU-10S作為溫濕度傳感器并采用型號為GP2Y1010AU0F的傳感器采集PM2.5的數(shù)據(jù)。HU-10S溫濕度模塊通過傳感器接收到的非線性電阻信號由芯片LM2902轉(zhuǎn)換為電壓形式的電信號。GP2Y1010AU0F是由SHARP公司所研發(fā)的一個通過感器內(nèi)部所組成的相對分布的紅外發(fā)光二級管和光電結(jié)晶管的光學(xué)灰塵濃度檢測傳感器,其原理是利用光敏電阻的光敏特性檢測微小顆粒物的數(shù)量,從而根據(jù)輸出電壓的大小來判斷顆粒濃度[13-14]。
Linux系統(tǒng)主要由U-Boot、Linux內(nèi)核、文件系統(tǒng)和用戶程序組成[15]。其中系統(tǒng)內(nèi)置的U-Boot代碼與Bootloader程序用于引導(dǎo)系統(tǒng)啟動,Linux內(nèi)核需要根據(jù)實(shí)際需求定制好相應(yīng)的代碼,文件系統(tǒng)主要包含文件系統(tǒng)與其他的系統(tǒng)命令,此處使用rootfs_qtopia_qt4.img作為rootfs。應(yīng)用程序包括必須的驅(qū)動程序與交互界面等,即為Qtopia2.2的系統(tǒng)桌面。
主機(jī)安裝的Linux版本是Ubuntu14.0(64bit),安裝并設(shè)置完后開啟虛擬機(jī),即可開始使用Linux系統(tǒng),并且之后進(jìn)行編譯前的配置。
(1) 建立交叉編譯環(huán)境。在嵌入式開發(fā)過程中,為了將一些復(fù)雜無法編譯的程序在內(nèi)存有限的目標(biāo)機(jī)中運(yùn)行,必須通過資源豐富的主機(jī)編譯生成可執(zhí)行文件,編譯完成后通過宿主機(jī)與開發(fā)板的連接,將所寫程序的.c文件移植到開發(fā)板中運(yùn)行,從而完成目標(biāo)機(jī)中程序的正常運(yùn)行。
本文使用的是arm-linux-gcc-4.5.1,通過更改交叉編譯版本以及配置文件可以成功建立交叉編譯。
(2) U_Boot。U-Boot(Universal Boot Loader)具有GPL款項的開放源碼項目[16]。系統(tǒng)引導(dǎo)是U-Boot的主要作用。大多數(shù)U-Boot源代碼是根據(jù)Linux內(nèi)核源代碼經(jīng)過精簡和演變而形成。U-Boot的工作流程主要由Stage 1和Stage 2組成,具體流程如圖3所示。
圖3 U-Boot工作流程
使用CPU系統(tǒng)結(jié)構(gòu)的部分大多在Stage 1通過匯編語言來完成,Stage 2用C語言完成,具有較好的可讀性和移植性。U-Boot啟動中的第1步是定義入口,由于起始點(diǎn)必須是唯一,故定義起始點(diǎn)在0x0處;第2步是設(shè)置異常向量,并調(diào)整處理器的實(shí)時時鐘、控制中斷等寄存器,并且調(diào)整內(nèi)存控制寄存器的參數(shù);第3步是將ROM跳轉(zhuǎn)到RAM中并且繼續(xù)運(yùn)行。然后轉(zhuǎn)入U-Boot的Stage 2。
(1) 配置和編譯busybox。實(shí)際開發(fā)中,各開發(fā)板資源不同,因此,busybox源代碼應(yīng)根據(jù)所需重新配置,然后使用缺省的配置文件:peizhi.config。Tiny6410使用此配置文件編譯出的busybox可滿足多方面的要求。進(jìn)入busybox源代碼目錄,輸入命令#cp peizhi.config .config拷貝此文件到相應(yīng)文件夾,然后輸入make進(jìn)行編譯。編譯完成后生成busybox文件。它和開發(fā)板有同樣的安裝放法,并且busybox一般是不用更新的。
(2) 制作yaffs2文件系統(tǒng)映像。進(jìn)入Linux系統(tǒng)目錄后執(zhí)行命令:#mkyaffs2image-128 MB rootfs_qtopia_qt4 rootfs_qtopia_qt4.img,將rootfs_qtopia _qt4目錄壓制為yaffs2格式的rootfs_qtopia_qt4.img系統(tǒng)映像文件,它適用于塊頁組織結(jié)構(gòu)為“1 Page=2 Kbyte,1 Block=128 K”的SLC Nand Flash(如K9F2G08,K9K8G08等),下一步通過SD卡或者 USB下載可以把它燒寫到Nand Flash中。
(3) 移植嵌入式Linux系統(tǒng)?;赟D卡中的ini索引文件,修改安裝Linux系統(tǒng)所需的主要定義語句,配置部分如表1所示。表中,LCD共用同一個zImage,此系統(tǒng)所用的Superboot 會自動檢測 LCD 型號,Kernel源碼:arch/arm/mach-s3c64xx/mini6410-lcds.c會在 Command Line 中追加LED型號參數(shù)。撥動Tiny6410的“S2”開關(guān)為“SDBOOT”,并插入SD卡,伴隨著有序的“滴”聲音,Tiny6410開發(fā)板上的4盞綠燈開始閃爍,最后蜂鳴器響2聲,LED全部亮起,系統(tǒng)已經(jīng)完成了燒寫。執(zhí)行完畢后。重啟開發(fā)板就是Qtopia2.2.0系統(tǒng)了,如圖4所示。Qtopia是基于Qt開發(fā)的一個軟件平臺,主要用于嵌入式Linux系統(tǒng)或移動電話,Qtopia具有完善的窗口操作系統(tǒng)、游戲和多媒體等輔助應(yīng)用,可以縮短軟件的開發(fā)周期。
圖4 Qtopia2.2.0系統(tǒng)
在Linux系統(tǒng)中,傳感器大多數(shù)被認(rèn)為是一種特別的外置裝置,Linux系統(tǒng)通過系統(tǒng)的讀取來進(jìn)行驅(qū)動和控制各種傳感器。而在嵌入式Linux系統(tǒng)中,傳感器的操控是通過將相應(yīng)的硬件驅(qū)動加入相應(yīng)位置得以實(shí)現(xiàn)的,之后硬件傳感器就使用打開,讀寫等程序函數(shù)代碼對硬件設(shè)備進(jìn)行配置與命令,這樣就可以通過嵌入式Linux直接對設(shè)備進(jìn)行訪問。其中,硬件設(shè)備具體功能有初始化設(shè)備、啟動或者停止設(shè)備、將硬件設(shè)備上的數(shù)據(jù)發(fā)送到用戶程序上,并且將用戶程序的指令發(fā)送到硬件設(shè)備里,實(shí)現(xiàn)數(shù)據(jù)互通。
溫濕度傳感器的程序設(shè)計主要分為兩個階段,① 在內(nèi)核里面運(yùn)行,叫做內(nèi)核驅(qū)動程序;② 在用戶程序里運(yùn)行。這兩部分通過用戶程序里的文件操作函數(shù)完成數(shù)據(jù)的傳輸,具體的工作流程如圖5所示。
圖5 濕度測量的過程
首先啟動傳感器讀取相關(guān)引腳信息,根據(jù)時序控制經(jīng)過ADC采樣的方法完成采集信息的讀取。在用戶程序中,寫好了傳感器測量程序,其中就包括了ADC采樣與溫度,濕度對應(yīng)的函數(shù)值,此時可以輸出相應(yīng)的溫濕度數(shù)據(jù)。
PM2.5傳感器使用的是ADC信號的輸出方法。本文使用的Tiny6410開發(fā)板提供了一路GPIO口和一路I/O口,如果要收集檢測的數(shù)值,則必須通過GPIO向傳感器發(fā)送脈沖,通過發(fā)送1次脈沖,ADC即可采樣到1次數(shù)據(jù),這樣就得到了此刻周圍環(huán)境PM2.5的濃度。具體流程見圖6。
圖6 PM2.5傳感器工作流程
在上述流程中,驅(qū)動部分首先將ADC通道的對應(yīng)引腳設(shè)置為輸入,之后將GPIO的數(shù)值拉低,隨后開始ADC轉(zhuǎn)換,轉(zhuǎn)換完成后,將采樣的數(shù)據(jù)發(fā)送至用戶程序,最后拉高GPIO值,完成一次測量。而用戶程序收到了采樣數(shù)據(jù)之后,經(jīng)過計算輸出相應(yīng)的數(shù)值。
實(shí)驗(yàn)用戶程序的設(shè)計主要用以實(shí)現(xiàn)Socket網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)墓δ?,在嵌入式Linux中,Socket網(wǎng)絡(luò)通信是用戶訪問系統(tǒng)的主要途徑。通過編寫網(wǎng)絡(luò)連接與數(shù)據(jù)交換的函數(shù),實(shí)現(xiàn)了應(yīng)用程序?qū)鞲衅鞯淖x取,具體流程見圖7。
圖7 用戶程序的Socket通信
首先創(chuàng)建一個Server,并設(shè)置好待連接的端口。由PC機(jī)向目標(biāo)發(fā)起連接,如果Server發(fā)現(xiàn)連接信號,則接受連接請求,完成Socket的網(wǎng)絡(luò)連接。 然后打開設(shè)備文件,在/dev/gpio讀取ADC的采樣數(shù)據(jù),通過收發(fā)文件函數(shù)完成連接。之后通過html的格式發(fā)送到客戶端。通信完成后,等待停止指令結(jié)束循環(huán)。
本文設(shè)計了一套基于Tiny6410開發(fā)板的環(huán)境檢測系統(tǒng),實(shí)物如圖8所示,通過使用溫度計、濕度計以及天氣預(yù)報進(jìn)行數(shù)據(jù)對比,從而驗(yàn)證本系統(tǒng)的設(shè)計精度。
為了驗(yàn)證測試效果,實(shí)驗(yàn)選定學(xué)校操場、地鐵口、醫(yī)院、工廠以及室外為5個待測地點(diǎn)進(jìn)行實(shí)際測試,測試結(jié)果如圖9所示。圖中:左邊是手機(jī)收到的實(shí)時氣象信息,右邊是系統(tǒng)實(shí)際測試的結(jié)果。在戶外和大學(xué)操場上人流量較少實(shí)測數(shù)據(jù)偏低;在地鐵口、醫(yī)院人流密集的地方PM2.5的數(shù)據(jù)超過當(dāng)天預(yù)報值,在廠房由于工廠的廢氣排放超標(biāo),也可以導(dǎo)致該區(qū)域顆粒物數(shù)量陡增。由此可見,本系統(tǒng)的對PM2.5的測試數(shù)據(jù)較為穩(wěn)定,可以作為實(shí)際測試的數(shù)據(jù)來源。
通過以上多個地點(diǎn)的不同實(shí)驗(yàn),基于Tiny6410的城市霧霾檢測系統(tǒng)與實(shí)際的環(huán)境數(shù)據(jù)很接近,可以作為實(shí)際測試的相關(guān)需求。
將HU-10S和GP2Y1010AU0F傳感器根據(jù)其電氣特性及傳輸方法與Tiny6410開發(fā)板連接起來。通過嵌入式Linux系統(tǒng)的配置并且將配置好的內(nèi)核進(jìn)行移植。根據(jù)Tiny6410開發(fā)板和傳感器特性,以Socket網(wǎng)絡(luò)通信為基礎(chǔ)加入讀取傳感器采集的數(shù)據(jù),可以完成本文的預(yù)定目標(biāo)。通過實(shí)際測量可見,本文設(shè)計的城市霧霾檢測系統(tǒng)運(yùn)行良好,實(shí)際測出的溫濕度以及PM2.5濃度與氣象預(yù)報相差不多,可以更好地滿足人們對環(huán)境參數(shù)實(shí)時測試的更高的需求。