周 強(qiáng),陳躍鵬,陳 玄,成 舟,張 憲
(武漢理工大學(xué) 自動(dòng)化學(xué)院,湖北 武漢430070)
學(xué)生去圖書館自習(xí),有可能因人滿為患而白跑一趟;外出旅游時(shí),有可能因?yàn)榫包c(diǎn)人數(shù)太多而影響觀賞心情;去火車站乘車也會(huì)由于人多而覺(jué)得心煩。筆者將試圖解決這類問(wèn)題,設(shè)計(jì)思路是將紅外計(jì)數(shù)器安裝在進(jìn)出口,計(jì)算進(jìn)出人數(shù),并與其最大可容納的人數(shù)進(jìn)行比較,再將數(shù)據(jù)傳輸?shù)较鄳?yīng)的官方網(wǎng)站上,讓用戶通過(guò)電腦或者手機(jī)登錄其官方網(wǎng)站,查詢來(lái)這里的人數(shù)和還可容納的人數(shù)從而了解相關(guān)情況,這樣就可以合理安排自己的時(shí)間和要去的地方,避免交通擁堵,既可以為人們提供方便,又可以節(jié)省時(shí)間。
該系統(tǒng)由紅外計(jì)數(shù)裝置、ARM 控制裝置和官方網(wǎng)站實(shí)時(shí)更新系統(tǒng)3 部分組成。紅外計(jì)數(shù)裝置測(cè)量進(jìn)出區(qū)域的人數(shù);ARM 控制裝置從計(jì)數(shù)裝置得到數(shù)據(jù),然后傳輸?shù)较嚓P(guān)網(wǎng)站并實(shí)時(shí)更新;官方網(wǎng)站供人們查詢相關(guān)信息,其流程如圖1 所示。
圖1 系統(tǒng)流程圖
利用紅外傳感器,檢測(cè)進(jìn)出的人數(shù)。在每個(gè)區(qū)域門口的內(nèi)外兩側(cè)安裝紅外線發(fā)射裝置和接收裝置,其由兩個(gè)紅外對(duì)管組成[1]。安裝時(shí)讓每對(duì)紅外對(duì)管保持在對(duì)立面,即發(fā)射器可以照射到接收端,其保持在每個(gè)經(jīng)過(guò)的人都可以被檢測(cè)到的高度,并確認(rèn)兩根數(shù)據(jù)線哪根在內(nèi)哪根在外。計(jì)數(shù)裝置開始計(jì)數(shù),沒(méi)有人進(jìn)入時(shí),內(nèi)外接收端的數(shù)據(jù)傳送給嵌入式處理器時(shí)保持在低電平,當(dāng)有人進(jìn)入時(shí)會(huì)阻擋紅外線照射,首先使外面接收器信號(hào)變成高電平,接著里面的接收器信號(hào)也變成高電平,計(jì)數(shù)系統(tǒng)記錄該區(qū)域增加一人[2]。同樣當(dāng)有人離開該區(qū)域時(shí),會(huì)使里面接收器的信號(hào)先變成高電平,接著外面接收器的信號(hào)變成高電平,與進(jìn)來(lái)的時(shí)候正好相反,計(jì)數(shù)系統(tǒng)記錄人數(shù)減少一人。每過(guò)一段時(shí)間系統(tǒng)將采集的數(shù)據(jù)傳給嵌入式系統(tǒng)進(jìn)行存儲(chǔ)顯示。
檢測(cè)裝置由紅外線發(fā)射端和接收端兩部分組成,其電路圖如圖2 所示[3]。其中,圖2(a)為紅外線發(fā)射裝置電路圖,圖2(b)為紅外線接收裝置電路圖。
圖2 紅外線發(fā)射電路和紅外線接收電路圖
ARM 控制裝置中的主芯片采用LPC2292 芯片。LPC2292 是一款基于16/32 位ARM7TDMIS、具有支持實(shí)時(shí)仿真和跟蹤的CPU 并帶有256 kB 嵌入的高速Flash 存儲(chǔ)器。LPC2292 采用144腳封裝、多個(gè)32 位定時(shí)器、8 路10 位ADC、兩路高級(jí)CAN 通道和PWM 輸出及多達(dá)9 個(gè)的外部中斷[4]。由于內(nèi)置了寬范圍的串口通信接口,也適合于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器等其他各種類型的應(yīng)用。
LPC2292 內(nèi)部沒(méi)有集成以太網(wǎng)的控制器,需要在片外搭建一個(gè)以太網(wǎng)接口電路。DM9000A是一種功能強(qiáng)大、性價(jià)比高的以太網(wǎng)控制芯片,適用于嵌入式系統(tǒng)設(shè)計(jì),因此采用DM9000A 控制芯片實(shí)現(xiàn)以太網(wǎng)接口[5]。用SD 卡存儲(chǔ)測(cè)試數(shù)據(jù),其讀出和存儲(chǔ)速度較快,且掉電之后存儲(chǔ)數(shù)據(jù)不會(huì)丟失。
2.3.1 網(wǎng)絡(luò)更新結(jié)構(gòu)
將紅外計(jì)數(shù)裝置安裝在相應(yīng)區(qū)域的門口,完成現(xiàn)場(chǎng)數(shù)據(jù)采集、傳輸數(shù)據(jù)和網(wǎng)頁(yè)顯示等功能,同時(shí)又通過(guò)擴(kuò)展RS -232 的串口與上一級(jí)服務(wù)器進(jìn)行通信,完成數(shù)據(jù)傳輸。控制室用PC 機(jī)對(duì)該區(qū)域的紅外計(jì)數(shù)器數(shù)據(jù)進(jìn)行傳輸與管理,PC 機(jī)是整個(gè)系統(tǒng)管理控制的核心,管理各部分的功能。而管理控制上位系統(tǒng),則是一個(gè)服務(wù)器和網(wǎng)關(guān),經(jīng)過(guò)相關(guān)數(shù)據(jù)庫(kù)技術(shù)可以將嵌入式系統(tǒng)接收的數(shù)據(jù)通過(guò)以太網(wǎng)在瀏覽器(Web)上顯示并實(shí)時(shí)更新數(shù)據(jù),使以太網(wǎng)上的用戶可以查看詳細(xì)信息,從而形成瀏覽器與服務(wù)器的一體化系統(tǒng),網(wǎng)絡(luò)更新結(jié)構(gòu)如圖3 所示。
圖3 網(wǎng)絡(luò)更新結(jié)構(gòu)
2.3.2 網(wǎng)絡(luò)軟件設(shè)計(jì)
以太網(wǎng)接口電路的工作原理是:嵌入式系統(tǒng)上電時(shí),處理器初始化DM9000A,之后DM900A進(jìn)入等待數(shù)據(jù)收發(fā)的狀態(tài);若處理器要將接收數(shù)據(jù)幀發(fā)送到以太網(wǎng)上,先要通過(guò)上層協(xié)議函數(shù)對(duì)接收數(shù)據(jù)進(jìn)行封裝,再由總線發(fā)送到DM9000A的緩沖區(qū),將數(shù)據(jù)信息裝到DM9000A 的寄存器中,使能發(fā)送命令后,DM9000A 可將數(shù)據(jù)自動(dòng)發(fā)送出去;當(dāng)處理器接收到以太網(wǎng)數(shù)據(jù)幀時(shí),檢測(cè)幀是否正確并保存正確的數(shù)據(jù)幀,然后上層協(xié)議將發(fā)送來(lái)的數(shù)據(jù)幀進(jìn)行處理。網(wǎng)絡(luò)接口的軟件設(shè)計(jì)包括網(wǎng)卡驅(qū)動(dòng)程序和上層通信協(xié)議。網(wǎng)卡的驅(qū)動(dòng)程序包括芯片的初始化、數(shù)據(jù)幀的發(fā)送和接收。
(1)網(wǎng)絡(luò)接口驅(qū)動(dòng)程序設(shè)計(jì)。該系統(tǒng)的集成開發(fā)工具是ARM Developer Suite 1.2。在該開發(fā)環(huán)境下編寫網(wǎng)絡(luò)接口驅(qū)動(dòng)程序DM9000A.h 頭文件和DM9000A.c 源文件。在DM9000A . c 源文件中調(diào)用DM9000A. h 宏定義的片內(nèi)寄存器、各個(gè)端口的地址等信息。DM9000A .c 源文件中包含的函數(shù)有InitNic ()、phy - read ()、set -PHY- mode ()、phy - write ()、DM9000A -Init ()、Send- Packet ()、DM9000A- Exception ()和Rec- Packet()。
網(wǎng)絡(luò)接口程序設(shè)計(jì)主要由驅(qū)動(dòng)初始化、數(shù)據(jù)包的發(fā)送和數(shù)據(jù)包的接收3 部分組成。初始化使DM9000A 啟動(dòng)時(shí)處于數(shù)據(jù)接收和發(fā)送就緒狀態(tài);數(shù)據(jù)包的發(fā)送則要計(jì)算發(fā)送幀長(zhǎng)度、設(shè)置發(fā)送寄存器函數(shù)等;接收的數(shù)據(jù)先保存在DM9000A 內(nèi)部相應(yīng)地址中,當(dāng)接收命令發(fā)出后,DM9000A 自動(dòng)接收數(shù)據(jù)[6]。
(2)uC/OS -II 的移植。先根據(jù)設(shè)計(jì)要求劃分出相對(duì)獨(dú)立的幾個(gè)子功能模塊,將每個(gè)模塊看作一個(gè)獨(dú)立的任務(wù)。而任務(wù)是一個(gè)比較特殊的函數(shù),是無(wú)限循環(huán)、不返回函數(shù),要在循環(huán)里完成相應(yīng)的功能。按照操作系統(tǒng)的實(shí)時(shí)調(diào)度算法,多個(gè)任務(wù)之間依據(jù)任務(wù)的優(yōu)先級(jí)來(lái)決定執(zhí)行任務(wù)的先后順序。用戶可以通過(guò)中斷程序來(lái)中斷正在執(zhí)行的任務(wù)。與其他程序相比,該程序具有任務(wù)明確、修改方便、思路清晰和編程方便等特點(diǎn)。系統(tǒng)運(yùn)行基本模式如圖4 所示。
圖4 多任務(wù)運(yùn)行模式
要實(shí)現(xiàn)嵌入式的TCP/IP 協(xié)議,需要先將uC/OS-II 移植到LPC2292 里面。在LPC2292 中,如果需要移植uC/OS -II,則應(yīng)該提供兩個(gè)或3 個(gè)文件,即OS_CPU. H、OS_CPU_C. C 和OS_CPU_A.ASM。要在OS_CPU. H 里面涵蓋幾個(gè)常數(shù)的定義及幾個(gè)類型的定義;若在OS_CPU_C. C 和OS_CPU_A. ASM 中設(shè)置含有時(shí)鐘節(jié)拍中斷服務(wù)程序代碼和幾個(gè)函數(shù)的定義,則還要修改其之間的數(shù)據(jù)函數(shù)及類型[7]。
(3)TCP/IP 協(xié)議。uC/OS-Ⅱ的操作系統(tǒng)移植的TCP/IP 協(xié)議棧只需要IP 協(xié)議、ARP 協(xié)議、ICMP 協(xié)議、TCP 協(xié)議及HTTP 協(xié)議。發(fā)送數(shù)據(jù)時(shí),相關(guān)的應(yīng)用程序通過(guò)SOCKET API 的接口函數(shù)并運(yùn)用到TCP/IP 協(xié)議棧相關(guān)的數(shù)據(jù)通信等功能。發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的過(guò)程截然相反。接收數(shù)據(jù)時(shí),傳送過(guò)來(lái)的以太網(wǎng)幀是用網(wǎng)卡驅(qū)動(dòng)程序來(lái)接收的,然后交給以太網(wǎng)層進(jìn)行甄別,用以太網(wǎng)層對(duì)幀頭判斷數(shù)據(jù)幀的類型。如果是ARP 報(bào)文,就要用ARP 協(xié)議模塊進(jìn)行處理;如果是IP 報(bào)文,就要用IP 協(xié)議進(jìn)行處理,接著依據(jù)報(bào)文中的上層協(xié)議字段標(biāo)識(shí),把相關(guān)報(bào)文給相應(yīng)的協(xié)議(如TCP協(xié)議、UDP 協(xié)議或ICMP 協(xié)議)進(jìn)行處理;如果是TCP 報(bào)文段,接收TCP 報(bào)頭的信息,依據(jù)報(bào)頭中的端口字段標(biāo)識(shí),即可給相應(yīng)的應(yīng)用程序HTTP處理數(shù)據(jù)。終端數(shù)據(jù)和以太網(wǎng)用在HTTP 端口上,用TCP 協(xié)議傳遞,并可以對(duì)數(shù)據(jù)進(jìn)行處理。TCP/IP 協(xié)議實(shí)現(xiàn)的流程如圖5 所示。
圖5 TCP/IP 協(xié)議實(shí)現(xiàn)的流程圖
2.3.3 網(wǎng)頁(yè)制作與更新
網(wǎng)頁(yè)制作與更新是在官方網(wǎng)站上添加要顯示的數(shù)據(jù),并進(jìn)行數(shù)據(jù)的實(shí)時(shí)更新,讓用戶能第一時(shí)間了解所需信息。
嵌入式Web 服務(wù)器技術(shù)是實(shí)現(xiàn)嵌入式網(wǎng)頁(yè)顯示更新的重要組成部分。嵌入式Web 服務(wù)器可以實(shí)現(xiàn)Web 管理和訪問(wèn)嵌入式設(shè)備的功能。嵌入式Web 服務(wù)器的原理是通過(guò)HTTP 協(xié)議與用戶瀏覽器進(jìn)行信息交換,而在嵌入式設(shè)備的內(nèi)部則要通過(guò)動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)與嵌入式網(wǎng)頁(yè)進(jìn)行信息交換。根據(jù)嵌入式系統(tǒng)特點(diǎn),采用系統(tǒng)資源消耗較小的CGI 技術(shù)來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)交互信息。嵌入式Web 服務(wù)器的基本原理如圖6 所示。
圖6 嵌入式Web 服務(wù)器的基本原理
實(shí)現(xiàn)ARM 處理器LPC2292 的Web 服務(wù)器技術(shù)包括超文本傳輸協(xié)議HTTP 和網(wǎng)關(guān)接口CGI。超文本傳輸協(xié)議是Web 服務(wù)器用來(lái)處理服務(wù)器與用戶機(jī)之間的數(shù)據(jù)流協(xié)議。服務(wù)器與用戶機(jī)之間會(huì)話流程包括用戶機(jī)與服務(wù)器建立連接、用戶機(jī)向服務(wù)器發(fā)送請(qǐng)求和服務(wù)器對(duì)請(qǐng)求的回應(yīng)。CGI 網(wǎng)關(guān)接口的功能是在網(wǎng)絡(luò)環(huán)境下傳遞相關(guān)信息給Web 服務(wù)器,再由Web 服務(wù)器運(yùn)行相關(guān)程序來(lái)完成相關(guān)的工作[8]。CGI 程序能在Web 中加入動(dòng)態(tài)內(nèi)容,其中包括獲取傳輸數(shù)據(jù)、提取與處理有效數(shù)據(jù)和向用戶返回?cái)?shù)據(jù)。
該系統(tǒng)基于HTML 語(yǔ)言設(shè)計(jì)瀏覽頁(yè)面,HTML 是以<元素名>標(biāo)簽形式的指令集[9]。當(dāng)連接到網(wǎng)頁(yè)時(shí),Web 瀏覽器將進(jìn)行解釋執(zhí)行,在內(nèi)存中“構(gòu)建”這個(gè)網(wǎng)頁(yè),然后在用戶屏幕上顯示在內(nèi)存中“構(gòu)建”好的網(wǎng)頁(yè)。一個(gè)簡(jiǎn)單的HTML 網(wǎng)頁(yè)結(jié)構(gòu)如圖7 所示。
圖7 HTML 網(wǎng)頁(yè)結(jié)構(gòu)示意圖
頁(yè)面設(shè)計(jì)需要數(shù)據(jù)能實(shí)時(shí)更新,頁(yè)面實(shí)時(shí)更新的過(guò)程包括:瀏覽器向后臺(tái)的服務(wù)器發(fā)送網(wǎng)頁(yè)訪問(wèn)請(qǐng)求;后臺(tái)服務(wù)器向客戶端發(fā)送包含數(shù)據(jù)更新的網(wǎng)頁(yè);啟動(dòng)工作之后,后臺(tái)服務(wù)器將進(jìn)行查詢并將獲取的更新數(shù)據(jù)發(fā)送到客戶端。為了實(shí)現(xiàn)網(wǎng)頁(yè)的實(shí)時(shí)更新,可以用HTML 語(yǔ)言中的META 標(biāo)記,只需在HTML 網(wǎng)頁(yè)的開始端添加一條META 標(biāo)記,<META HTTP -EQUIV =“refresh”content =“3”>,就能實(shí)現(xiàn)每3 s 刷新一次網(wǎng)頁(yè)[10]。
整個(gè)網(wǎng)頁(yè)查詢過(guò)程則是經(jīng)過(guò)Internet 把用戶相關(guān)請(qǐng)求反饋到Web 服務(wù)器上,Web 服務(wù)器把從用戶接收到的請(qǐng)求給CGI 程序進(jìn)行處理,CGI 程序即可對(duì)從計(jì)數(shù)器傳送過(guò)來(lái)的數(shù)據(jù)進(jìn)行必要的處理,并將處理后的數(shù)據(jù)傳送給Web 服務(wù)器,最后Web 服務(wù)器將用戶想要的結(jié)果發(fā)送給用戶。
介紹了將計(jì)數(shù)裝置通過(guò)嵌入式Web 網(wǎng)關(guān)接入到Internet 的方案,完成一種頁(yè)面查詢?nèi)藬?shù)的系統(tǒng)。該系統(tǒng)采用B/S 結(jié)構(gòu)模式,用戶只需安裝Web 瀏覽器即可知道圖書館、旅游景點(diǎn)等地的人數(shù),給網(wǎng)絡(luò)用戶帶來(lái)很大的方便。該系統(tǒng)還可以擴(kuò)展功能,將網(wǎng)頁(yè)制作成APP 形式,方便手機(jī)用戶及時(shí)、方便、快捷、有效地了解情況。
[1]吳菲,李仰軍.基于S3C2410 的傳感器網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)[J].山西電子技術(shù),2010,37(4):17 -18.
[2]彭敏.基于嵌入式的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].信息技術(shù),2010,33(9):88 -89.
[3]賀云超,郭麗. 基于紅外傳感器的多功能教室狀態(tài)監(jiān)測(cè)系統(tǒng)[J].中國(guó)科技信息,2012(14):87 -89.
[4]劉炳祥,程武山.基于ARM 處理器的USB 數(shù)據(jù)采集系統(tǒng)[J].上海工程技術(shù)大學(xué)學(xué)報(bào),2011,25(4):358-361.
[5]劉余,孟小華.嵌入式智能家居終端通信模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(8):1689-1692.
[6]于暉,溫陽(yáng)東,劉衛(wèi)平.基于LPC2292 的嵌入式以太網(wǎng)通信的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2007(1):24 -24.
[7]林川,吳景東.LPC2292 的uC/OS -Ⅱ硬件抽象層構(gòu)建[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(3):24-24.
[8]吳文龍,林培杰,程樹英,等.基于嵌入式Web 技術(shù)的家庭電能管理系統(tǒng)設(shè)計(jì)[J].電子技術(shù),2013(8):75 -78.
[9]韓雷,錢???嵌入式動(dòng)態(tài)Web 網(wǎng)頁(yè)實(shí)現(xiàn)方法探究[J].信息技術(shù),2012(1):181 -182.
[10]余翔. 一種嵌入式Web 服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].世界電子元器件,2007(9):113 -115.