白鐵成 孟洪兵
摘要:針對(duì)傳統(tǒng)倉(cāng)儲(chǔ)管理效率低下的問(wèn)題,設(shè)計(jì)了一種基于物聯(lián)網(wǎng)技術(shù)的農(nóng)產(chǎn)品倉(cāng)儲(chǔ)智能管理系統(tǒng)。給出了系統(tǒng)的總體硬件和軟件設(shè)計(jì)方案。以ARM Cortex-M0和CC2430構(gòu)成系統(tǒng)的無(wú)線傳感器采集節(jié)點(diǎn),實(shí)現(xiàn)倉(cāng)庫(kù)溫度、濕度、光照度、物品刷卡信息的采集和發(fā)送,以ARM Cortex-A8、CC2430和GPRS模塊構(gòu)成數(shù)據(jù)處理中心,負(fù)責(zé)接收環(huán)境參數(shù)和物品信息,激活數(shù)據(jù)庫(kù)線程對(duì)數(shù)據(jù)進(jìn)行處理,構(gòu)建嵌入式Web服務(wù)器,使用戶通過(guò)網(wǎng)絡(luò)利用PC機(jī)進(jìn)行監(jiān)控,當(dāng)環(huán)境參數(shù)超過(guò)閾值時(shí)可通過(guò)GPRS短信息功能向用戶報(bào)警。實(shí)踐證明,該系統(tǒng)能夠增強(qiáng)庫(kù)房作業(yè)的準(zhǔn)確性和快捷性、降低儲(chǔ)存成本、保障農(nóng)產(chǎn)品倉(cāng)庫(kù)物資的安全。
關(guān)鍵詞:物聯(lián)網(wǎng); 嵌入式; 無(wú)線傳感器; 倉(cāng)儲(chǔ)管理系統(tǒng)
中圖分類(lèi)號(hào):TP399 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):0439-8114(2014)05-1173-05
隨著農(nóng)產(chǎn)品倉(cāng)庫(kù)大量的增加,倉(cāng)庫(kù)物品越來(lái)越多,其管理難度也越來(lái)越大,倉(cāng)庫(kù)的管理問(wèn)題也就提上了日程,如何優(yōu)化倉(cāng)庫(kù)的日常管理成為了一個(gè)重要的研究課題[1]。傳統(tǒng)的人工倉(cāng)庫(kù)作業(yè)模式和數(shù)據(jù)采集方式已難以滿足倉(cāng)庫(kù)管理快速、準(zhǔn)確的要求,嚴(yán)重影響了倉(cāng)庫(kù)的管理效率[2,3]。近幾年,物聯(lián)網(wǎng)技術(shù)在環(huán)境監(jiān)測(cè)和倉(cāng)庫(kù)管理方面得到了廣泛的應(yīng)用[4-6]。尤其是射頻識(shí)別(RFID)和無(wú)線傳感器技術(shù)的發(fā)展為倉(cāng)庫(kù)管理帶來(lái)了一場(chǎng)巨大的變革,簡(jiǎn)化繁雜的工作流程,有效改善供應(yīng)鏈的效率和透明度[7],可以對(duì)倉(cāng)庫(kù)環(huán)境監(jiān)控、入庫(kù)、出庫(kù)、調(diào)撥、移庫(kù)移位、庫(kù)存盤(pán)點(diǎn)等各個(gè)作業(yè)環(huán)節(jié)的數(shù)據(jù)進(jìn)行自動(dòng)化的數(shù)據(jù)采集,保證倉(cāng)庫(kù)管理各個(gè)環(huán)節(jié)數(shù)據(jù)輸入的速度和準(zhǔn)確性,確保管理人員及時(shí)準(zhǔn)確地掌握庫(kù)存的真實(shí)數(shù)據(jù),合理保持和控制倉(cāng)庫(kù)庫(kù)存,提高倉(cāng)庫(kù)管理的工作效率[8,9]。
在上述背景下,設(shè)計(jì)一種基于ZigBee無(wú)線傳感器網(wǎng)絡(luò)技術(shù)、嵌入式技術(shù)和計(jì)算機(jī)技術(shù)的農(nóng)產(chǎn)品倉(cāng)儲(chǔ)管理系統(tǒng),該系統(tǒng)能夠?qū)崟r(shí)監(jiān)控農(nóng)產(chǎn)品倉(cāng)庫(kù)的環(huán)境信息、進(jìn)出庫(kù)信息,改善傳統(tǒng)的倉(cāng)庫(kù)管理模式,增強(qiáng)庫(kù)房作業(yè)的準(zhǔn)確性和快捷性、減少整個(gè)倉(cāng)庫(kù)物資出入庫(kù)中由于管理不到位造成的非法出入庫(kù)、誤置、偷竊和庫(kù)存、出貨錯(cuò)誤等損失,并最大限度地降低儲(chǔ)存成本、保障倉(cāng)庫(kù)物資的安全。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)基于PC(可以是筆記本電腦、手機(jī))、嵌入式設(shè)備A8及嵌入式設(shè)備M0等,依托在各項(xiàng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、傳感器等技術(shù)的基礎(chǔ)上完成,以實(shí)現(xiàn)倉(cāng)庫(kù)信息遠(yuǎn)程監(jiān)控和智能化管理,體現(xiàn)信息獲取的實(shí)時(shí)性和分布性,使用戶更方便地管理倉(cāng)庫(kù)內(nèi)的信息及其特殊情況。
1.1 系統(tǒng)架構(gòu)
系統(tǒng)主要分為3個(gè)模塊:數(shù)據(jù)采集中心、前端數(shù)據(jù)處理中心和客戶端(PC、筆記本電腦和手機(jī)等)。系統(tǒng)總體架構(gòu)見(jiàn)圖1。
1.2 功能描述
具體功能描述如下。
1)通過(guò)數(shù)據(jù)采集中心(定義為M0)實(shí)時(shí)采集環(huán)境參數(shù),例如溫度、濕度、光感數(shù)據(jù),進(jìn)行物品刷卡,每個(gè)倉(cāng)庫(kù)構(gòu)成一個(gè)節(jié)點(diǎn);
2)通過(guò)ZigBee模塊把采集到的環(huán)境參數(shù)或物品信息發(fā)送給A8設(shè)備;
3)由A8的線程負(fù)責(zé)接收環(huán)境參數(shù)或物品信息,激活數(shù)據(jù)庫(kù)線程對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的處理,如果是環(huán)境參數(shù)則對(duì)環(huán)境參數(shù)進(jìn)行判斷處理,超過(guò)設(shè)定值報(bào)警并進(jìn)行控制調(diào)節(jié);
4)構(gòu)建嵌入式Web服務(wù)器,使用戶通過(guò)網(wǎng)絡(luò)利用PC機(jī)進(jìn)行監(jiān)控;
5)在Web頁(yè)面上設(shè)置控制按鈕,監(jiān)控設(shè)備識(shí)別用戶指令并進(jìn)行相應(yīng)動(dòng)作;
6)A8通過(guò)GPRS短信息功能向用戶報(bào)警。
2 系統(tǒng)實(shí)現(xiàn)
2.1 數(shù)據(jù)采集中心的實(shí)現(xiàn)
倉(cāng)庫(kù)的環(huán)境信息包括溫度、濕度、光照、三軸信息和出入庫(kù)信息,M0在硬件上選擇以ARM架構(gòu)的Cortex-M0微控制器,外接溫濕度傳感器DHT11、光照傳感器ISL29003、三軸加速傳感器MMA7455L、RFID射頻模塊CY14443-P、ZigBee無(wú)線通信模塊(CC2430)。軟件方面依靠Cortex-M0處理器強(qiáng)大的指令系統(tǒng)并配合Keil公司的Real View MDK裸機(jī)開(kāi)發(fā)平臺(tái)(支持自動(dòng)配置啟動(dòng)代碼,并且實(shí)現(xiàn)了一些基本的裸機(jī)函數(shù))實(shí)現(xiàn)采集部分的裸機(jī)程序。數(shù)據(jù)采集中心軟件實(shí)現(xiàn)流程圖如圖2。
數(shù)據(jù)采集中心(終端)對(duì)必須的環(huán)境信息(溫度、濕度、光照)進(jìn)行采集,每5 s采集一次,一些輔助信息(電池電量、Axis_3三軸加速度)采集也同步進(jìn)行,對(duì)以上數(shù)據(jù)采集后經(jīng)過(guò)處理打包發(fā)送給數(shù)據(jù)處理中心(Cortex-A8),由信息處理中心產(chǎn)生相應(yīng)的指令發(fā)回給終端(Cortex-M0)。對(duì)于基本信息除了供數(shù)據(jù)處理中心查看之外,還在終端上做了簡(jiǎn)單的數(shù)據(jù)顯示、運(yùn)行狀態(tài)顯示,考慮到數(shù)據(jù)處理中心與終端的交互安全性問(wèn)題,正常情況下終端是由數(shù)據(jù)處理中心全部控制的,當(dāng)可能的意外出現(xiàn),數(shù)據(jù)處理中心無(wú)法控制終端進(jìn)行環(huán)境異常報(bào)警時(shí),終端30 s之后自動(dòng)切換到自制模式,這時(shí)終端進(jìn)行自我環(huán)境異常檢測(cè),環(huán)境出現(xiàn)異常時(shí)打開(kāi)報(bào)警器報(bào)警,如遇溫度過(guò)高時(shí)風(fēng)扇設(shè)備會(huì)自行啟動(dòng),以調(diào)節(jié)溫度值,直至溫度正常時(shí)風(fēng)扇設(shè)備才會(huì)停止。該管理系統(tǒng)另外加了一個(gè)Axis_3三軸加速度報(bào)警,當(dāng)?shù)卣饡r(shí),由于不平衡而觸發(fā)了Axis_3三軸加速度報(bào)警器報(bào)警。
2.2 數(shù)據(jù)處理中心實(shí)現(xiàn)
數(shù)據(jù)處理中心(定義為A8),硬件上選擇基于三星S5PC100片上系統(tǒng)(以ARM架構(gòu)的cortex-A8為核),移植Linux嵌入式操作系統(tǒng)。該部分一方面要接收由數(shù)據(jù)采集中心發(fā)送過(guò)來(lái)的倉(cāng)庫(kù)信息,判斷接收到的倉(cāng)庫(kù)信息是環(huán)境信息還是貨物信息,并對(duì)不同類(lèi)型的倉(cāng)庫(kù)信息進(jìn)行不同的處理。對(duì)于環(huán)境信息,數(shù)據(jù)處理中心需要做如下3個(gè)方面的處理:①檢測(cè)相關(guān)參數(shù)是否超標(biāo),若超標(biāo)則應(yīng)該向執(zhí)行中心發(fā)送控制信息以便將環(huán)境參數(shù)調(diào)節(jié)到正常范圍,例如在溫度過(guò)高時(shí)開(kāi)起電風(fēng)扇同時(shí)報(bào)警器報(bào)警;②提供一種將這些環(huán)境信息反饋給系統(tǒng)使用者的機(jī)制;③將這些環(huán)境信息存放到數(shù)據(jù)庫(kù)中。對(duì)于貨物信息數(shù)據(jù)處理中心需要做如下3個(gè)方面的處理:①提供一種將這些貨物信息反饋給系統(tǒng)使用者的機(jī)制;②將這些貨物信息存放到數(shù)據(jù)庫(kù)中;③數(shù)據(jù)處理中心還要接收來(lái)自系統(tǒng)使用者的控制信息(用戶的控制信息主要是針對(duì)倉(cāng)庫(kù)環(huán)境上下限值的控制),并將這些控制信息處理之后以一定的格式發(fā)送給數(shù)據(jù)采集中心和執(zhí)行單元。另外作為優(yōu)化,當(dāng)數(shù)據(jù)處理中心檢測(cè)到有環(huán)境參數(shù)超標(biāo)時(shí)可以讓其驅(qū)動(dòng)GPRS模塊發(fā)送短信告知用戶。
數(shù)據(jù)處理中心軟件系統(tǒng)的架構(gòu)包括3大部分:操作系統(tǒng)、系統(tǒng)服務(wù)和應(yīng)用程序。操作系統(tǒng)移植Linux 2.635內(nèi)核,系統(tǒng)服務(wù)處于操作系統(tǒng)和應(yīng)用程序之間,系統(tǒng)服務(wù)架構(gòu)在操作系統(tǒng)之上,利用操作系統(tǒng)提供的接口來(lái)實(shí)現(xiàn)一些應(yīng)用程序需要使用的通用、核心的功能,并以接口的形式向上提供給應(yīng)用程序供應(yīng)用程序調(diào)用[10]。通過(guò)對(duì)需求的分析在這里需要使用的系統(tǒng)服務(wù)有Web服務(wù)器、WIFI WPA系統(tǒng)服務(wù)、SQlite3嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)、網(wǎng)絡(luò)視頻服務(wù)器。應(yīng)用程序是針對(duì)系統(tǒng)需求所設(shè)計(jì)出的實(shí)現(xiàn)特定功能的程序,根據(jù)對(duì)系統(tǒng)需求的分析,這里所設(shè)計(jì)的應(yīng)用程序?qū)崿F(xiàn)的功能是對(duì)數(shù)據(jù)的處理。M0(采集單元)采用裸機(jī)程序開(kāi)發(fā),這里不再具體說(shuō)明。其他程序(線程)均運(yùn)行在A8設(shè)備上,它們并不是裸機(jī)程序而是運(yùn)行在Linux操作系統(tǒng)之上的,這里從應(yīng)用層的角度給出了各個(gè)線程之間的關(guān)系,軟件構(gòu)架如圖3。
運(yùn)行在A8設(shè)備上的線程簡(jiǎn)介如下:
thread_client_request():處理消息隊(duì)列里請(qǐng)求的線程;
pthread_refresh():更新共享內(nèi)存里的實(shí)時(shí)數(shù)據(jù);
pthread_sqlite():數(shù)據(jù)庫(kù)線程;
pthread_transfer():接收M0數(shù)據(jù)線程;
pthread_analysis():M0數(shù)據(jù)分析線程;
pthread_uart_cmd():M0控制命令發(fā)送線程;
pthread_sms():短信模塊控制線程;
pthread_buzzer():A8報(bào)警器控制線程;
pthread_infrared():紅外(按鍵模擬)監(jiān)測(cè)線程;
pthread_led():A8 LED模塊線程;
pthread_camera():攝像頭模塊控制線程。
2.3 客戶端應(yīng)用程序?qū)崿F(xiàn)
采用B/S模式的服務(wù)器架構(gòu)將Web服務(wù)器安裝在作為數(shù)據(jù)處理中心的A8設(shè)備上,然后系統(tǒng)使用者通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)處理中心的Web服務(wù)器,在這種情況下經(jīng)過(guò)數(shù)據(jù)處理中心處理后的數(shù)據(jù)就會(huì)被Web服務(wù)器的CGI進(jìn)程讀取然后生成html文件,并被瀏覽訪問(wèn)解析成網(wǎng)頁(yè)最終展現(xiàn)在系統(tǒng)使用者面前。下面介紹主要線程的實(shí)現(xiàn)流程。
2.3.1 軟件環(huán)境 系統(tǒng)采用ASP.NET 2.0和C#語(yǔ)言進(jìn)行開(kāi)發(fā)、服務(wù)器采用Windows 2003 Serber/IIS 6.0,數(shù)據(jù)庫(kù)管理系統(tǒng)采用SQL Sever 2005,在Visual Studio 2005集成開(kāi)發(fā)環(huán)境下完成開(kāi)發(fā)、集成和測(cè)試工作。
2.3.2 數(shù)據(jù)庫(kù)線程的實(shí)現(xiàn) SQlite3 提供了一些C函數(shù)接口,可以用這些函數(shù)操作數(shù)據(jù)庫(kù)。通過(guò)使用這些接口,以char*類(lèi)型傳遞一些標(biāo)準(zhǔn)SQL語(yǔ)句給SQlite函數(shù),SQlite就可以操作數(shù)據(jù)庫(kù)。SQlite數(shù)據(jù)庫(kù)線程流程如圖4(左)所示,SQlite_task線程結(jié)構(gòu)如圖4(右)所示。
主程序開(kāi)始運(yùn)行之后,各任務(wù)線程開(kāi)始運(yùn)行,其中就包括數(shù)據(jù)庫(kù)的pthread_sqlite。pthread_sqlite線程開(kāi)始創(chuàng)建一個(gè)用于存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)操作的鏈表,鏈表創(chuàng)建之后進(jìn)入while循環(huán)。循環(huán)中,用pthread_cond_wait函數(shù)語(yǔ)句進(jìn)行睡眠等待,等待其他線程的喚醒函數(shù)pthread_cond_signal發(fā)來(lái)的信號(hào),喚醒之后再次進(jìn)入一個(gè)while的循環(huán)語(yǔ)句,在這個(gè)循環(huán)中,進(jìn)行對(duì)鏈表頭的判空工作。如果鏈表頭不為空,則讀取第一個(gè)節(jié)點(diǎn)的內(nèi)容,把節(jié)點(diǎn)中的內(nèi)容解析出來(lái),把解析出來(lái)的內(nèi)容作為參數(shù)傳到sqlite_task函數(shù)中,完成相應(yīng)的數(shù)據(jù)庫(kù)操作并釋放節(jié)點(diǎn)空間,如此循環(huán);如果鏈表頭為空,則直接跳出while循環(huán),再回到外部循環(huán)的pthread_cond_wait函數(shù)進(jìn)行睡眠等待,等待下一次被其他線程喚醒。
2.3.3 數(shù)據(jù)接收線程的實(shí)現(xiàn) 數(shù)據(jù)接收線程主要負(fù)責(zé)從前端數(shù)據(jù)處理中心接收倉(cāng)庫(kù)信息,流程圖如圖5所示。
2.3.4 數(shù)據(jù)處理線程的實(shí)現(xiàn) 數(shù)據(jù)處理線程主要用來(lái)處理接收到的信息,因?yàn)榻邮盏降男畔⑹前匆欢ㄒ?guī)律進(jìn)行編碼的,所以進(jìn)行解碼后,激活數(shù)據(jù)庫(kù)線程,保存數(shù)據(jù),激活內(nèi)存刷新數(shù)據(jù),更新實(shí)時(shí)環(huán)境信息,判斷數(shù)據(jù)是否越界,若越界則激活設(shè)備控制線程進(jìn)行相應(yīng)的控制。流程圖如圖6所示。
2.3.5 處理客戶請(qǐng)求線程的實(shí)現(xiàn) 主要用于接收CGI、QT以及別的線程檢測(cè)到異常發(fā)送設(shè)備控制請(qǐng)求的線程,流程圖如圖7所示。1L、2L、3L等代表不同的信息判定類(lèi)型。
3 系統(tǒng)測(cè)試
3.1 采集中心與數(shù)據(jù)處理中心通信測(cè)試
啟動(dòng)M0(采集中心)與A8(處理中心),系統(tǒng)上電,連接成功后如圖8所示。顯示器中顯示實(shí)時(shí)的溫度、濕度、光照和三軸等信息,表明M0與A8通信正常。
3.2 倉(cāng)庫(kù)管理系統(tǒng)主界面
在PC機(jī)瀏覽器中輸入Web服務(wù)器地址(這里為:192.168.1.200)進(jìn)入系統(tǒng)界面如圖9所示。經(jīng)過(guò)測(cè)試,數(shù)據(jù)采集中心與數(shù)據(jù)處理中心的ZigBee模塊通信穩(wěn)定。數(shù)據(jù)通過(guò)客戶端的系統(tǒng)主界面,可以對(duì)最高溫度、最低溫度、最高濕度、最低濕度、最高光照、最低光照等上下限信息進(jìn)行設(shè)置;可查看倉(cāng)庫(kù)貨物信息,貨物刷卡進(jìn)倉(cāng)時(shí)可隨時(shí)記錄進(jìn)倉(cāng)貨物信息;填寫(xiě)正確IP、網(wǎng)關(guān)后點(diǎn)擊“開(kāi)啟WIFI”,實(shí)現(xiàn)了數(shù)據(jù)采集中心與手機(jī)或筆記本電腦之間的通信;設(shè)置報(bào)警短信接收號(hào)碼、中心號(hào)碼,填寫(xiě)要接收短信的中心號(hào)碼和手機(jī)號(hào)碼提交,在任意手機(jī)上可接收到報(bào)警信息;可以開(kāi)啟或關(guān)閉A8上的LED燈及報(bào)警器;點(diǎn)擊倉(cāng)庫(kù)主界面的“歷史照片”,可以查看以前拍照的一些倉(cāng)庫(kù)照片等。
4 小結(jié)
針對(duì)傳統(tǒng)農(nóng)產(chǎn)品倉(cāng)庫(kù)管理效率低的問(wèn)題,利用無(wú)線傳感器技術(shù)、嵌入式技術(shù)為核心的物聯(lián)網(wǎng)技術(shù)和計(jì)算機(jī)技術(shù)設(shè)計(jì)了一個(gè)智能農(nóng)產(chǎn)品倉(cāng)庫(kù)管理系統(tǒng),實(shí)現(xiàn)倉(cāng)庫(kù)環(huán)境信息的監(jiān)控、物品信息的管理和各模塊之間的通信,系統(tǒng)可增強(qiáng)庫(kù)房作業(yè)的準(zhǔn)確性和快捷性、減少整個(gè)倉(cāng)庫(kù)物資出入庫(kù)中由于管理不到位造成的非法出入庫(kù)、誤置、偷竊和庫(kù)存、出貨錯(cuò)誤等損失,并最大限度地降低儲(chǔ)存成本、保障倉(cāng)庫(kù)物資的安全。測(cè)試表明,系統(tǒng)運(yùn)行穩(wěn)定、可靠性高,具有廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] 李學(xué)明,吳海燕,楊浩敏,等.基于物聯(lián)網(wǎng)技術(shù)的倉(cāng)庫(kù)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2013,40(2):19-23.
[2] 張仁彬,李玉民.基于物聯(lián)網(wǎng)技術(shù)倉(cāng)儲(chǔ)管理系統(tǒng)研究[J].物流科技,2011(6):35-38.
[3] 唐昱佳.基于物聯(lián)網(wǎng)的能源管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(12):161-164.
[4] 王希杰.基于物聯(lián)網(wǎng)技術(shù)的生態(tài)環(huán)境監(jiān)測(cè)應(yīng)用研究[J].傳感器與微系統(tǒng),2011,30(7):149-152.
[5] 劉向舉,劉麗娜.基于物聯(lián)網(wǎng)的室內(nèi)環(huán)境監(jiān)測(cè)系統(tǒng)的研究[J].傳感器與微系統(tǒng),2013,32(3):37-40.
[6] 張?jiān)隽?,韓文霆,陳永社,等.基于WEB的糧倉(cāng)信息采集遠(yuǎn)程監(jiān)控系統(tǒng)[J].農(nóng)機(jī)化研究,2013(6):167-169.
[7] GLIDDEN R,BOCKORICK C,COOPER S,et al. Design of ultra-low-cost UHF RFID tags for supply chain applications[J]. Communications Magazine,IEEE,2004,42(8):140-151.
[8] LIU H, BOLIC M, NAYAK A, et al. Taxonomy and challenges of the integration of RFID and wireless sensor networks[J].Network,IEEE,2008,22(6):26-35.
[9] NICULESCU D S. Communication paradigms for sensor networks[J]. Communications Magazine,IEEE,2005,43(3):116-122.
[10] 聶 濤.基于物聯(lián)網(wǎng)的數(shù)字化倉(cāng)庫(kù)軟件架構(gòu)研究與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2012.
數(shù)據(jù)處理中心軟件系統(tǒng)的架構(gòu)包括3大部分:操作系統(tǒng)、系統(tǒng)服務(wù)和應(yīng)用程序。操作系統(tǒng)移植Linux 2.635內(nèi)核,系統(tǒng)服務(wù)處于操作系統(tǒng)和應(yīng)用程序之間,系統(tǒng)服務(wù)架構(gòu)在操作系統(tǒng)之上,利用操作系統(tǒng)提供的接口來(lái)實(shí)現(xiàn)一些應(yīng)用程序需要使用的通用、核心的功能,并以接口的形式向上提供給應(yīng)用程序供應(yīng)用程序調(diào)用[10]。通過(guò)對(duì)需求的分析在這里需要使用的系統(tǒng)服務(wù)有Web服務(wù)器、WIFI WPA系統(tǒng)服務(wù)、SQlite3嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)、網(wǎng)絡(luò)視頻服務(wù)器。應(yīng)用程序是針對(duì)系統(tǒng)需求所設(shè)計(jì)出的實(shí)現(xiàn)特定功能的程序,根據(jù)對(duì)系統(tǒng)需求的分析,這里所設(shè)計(jì)的應(yīng)用程序?qū)崿F(xiàn)的功能是對(duì)數(shù)據(jù)的處理。M0(采集單元)采用裸機(jī)程序開(kāi)發(fā),這里不再具體說(shuō)明。其他程序(線程)均運(yùn)行在A8設(shè)備上,它們并不是裸機(jī)程序而是運(yùn)行在Linux操作系統(tǒng)之上的,這里從應(yīng)用層的角度給出了各個(gè)線程之間的關(guān)系,軟件構(gòu)架如圖3。
運(yùn)行在A8設(shè)備上的線程簡(jiǎn)介如下:
thread_client_request():處理消息隊(duì)列里請(qǐng)求的線程;
pthread_refresh():更新共享內(nèi)存里的實(shí)時(shí)數(shù)據(jù);
pthread_sqlite():數(shù)據(jù)庫(kù)線程;
pthread_transfer():接收M0數(shù)據(jù)線程;
pthread_analysis():M0數(shù)據(jù)分析線程;
pthread_uart_cmd():M0控制命令發(fā)送線程;
pthread_sms():短信模塊控制線程;
pthread_buzzer():A8報(bào)警器控制線程;
pthread_infrared():紅外(按鍵模擬)監(jiān)測(cè)線程;
pthread_led():A8 LED模塊線程;
pthread_camera():攝像頭模塊控制線程。
2.3 客戶端應(yīng)用程序?qū)崿F(xiàn)
采用B/S模式的服務(wù)器架構(gòu)將Web服務(wù)器安裝在作為數(shù)據(jù)處理中心的A8設(shè)備上,然后系統(tǒng)使用者通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)處理中心的Web服務(wù)器,在這種情況下經(jīng)過(guò)數(shù)據(jù)處理中心處理后的數(shù)據(jù)就會(huì)被Web服務(wù)器的CGI進(jìn)程讀取然后生成html文件,并被瀏覽訪問(wèn)解析成網(wǎng)頁(yè)最終展現(xiàn)在系統(tǒng)使用者面前。下面介紹主要線程的實(shí)現(xiàn)流程。
2.3.1 軟件環(huán)境 系統(tǒng)采用ASP.NET 2.0和C#語(yǔ)言進(jìn)行開(kāi)發(fā)、服務(wù)器采用Windows 2003 Serber/IIS 6.0,數(shù)據(jù)庫(kù)管理系統(tǒng)采用SQL Sever 2005,在Visual Studio 2005集成開(kāi)發(fā)環(huán)境下完成開(kāi)發(fā)、集成和測(cè)試工作。
2.3.2 數(shù)據(jù)庫(kù)線程的實(shí)現(xiàn) SQlite3 提供了一些C函數(shù)接口,可以用這些函數(shù)操作數(shù)據(jù)庫(kù)。通過(guò)使用這些接口,以char*類(lèi)型傳遞一些標(biāo)準(zhǔn)SQL語(yǔ)句給SQlite函數(shù),SQlite就可以操作數(shù)據(jù)庫(kù)。SQlite數(shù)據(jù)庫(kù)線程流程如圖4(左)所示,SQlite_task線程結(jié)構(gòu)如圖4(右)所示。
主程序開(kāi)始運(yùn)行之后,各任務(wù)線程開(kāi)始運(yùn)行,其中就包括數(shù)據(jù)庫(kù)的pthread_sqlite。pthread_sqlite線程開(kāi)始創(chuàng)建一個(gè)用于存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)操作的鏈表,鏈表創(chuàng)建之后進(jìn)入while循環(huán)。循環(huán)中,用pthread_cond_wait函數(shù)語(yǔ)句進(jìn)行睡眠等待,等待其他線程的喚醒函數(shù)pthread_cond_signal發(fā)來(lái)的信號(hào),喚醒之后再次進(jìn)入一個(gè)while的循環(huán)語(yǔ)句,在這個(gè)循環(huán)中,進(jìn)行對(duì)鏈表頭的判空工作。如果鏈表頭不為空,則讀取第一個(gè)節(jié)點(diǎn)的內(nèi)容,把節(jié)點(diǎn)中的內(nèi)容解析出來(lái),把解析出來(lái)的內(nèi)容作為參數(shù)傳到sqlite_task函數(shù)中,完成相應(yīng)的數(shù)據(jù)庫(kù)操作并釋放節(jié)點(diǎn)空間,如此循環(huán);如果鏈表頭為空,則直接跳出while循環(huán),再回到外部循環(huán)的pthread_cond_wait函數(shù)進(jìn)行睡眠等待,等待下一次被其他線程喚醒。
2.3.3 數(shù)據(jù)接收線程的實(shí)現(xiàn) 數(shù)據(jù)接收線程主要負(fù)責(zé)從前端數(shù)據(jù)處理中心接收倉(cāng)庫(kù)信息,流程圖如圖5所示。
2.3.4 數(shù)據(jù)處理線程的實(shí)現(xiàn) 數(shù)據(jù)處理線程主要用來(lái)處理接收到的信息,因?yàn)榻邮盏降男畔⑹前匆欢ㄒ?guī)律進(jìn)行編碼的,所以進(jìn)行解碼后,激活數(shù)據(jù)庫(kù)線程,保存數(shù)據(jù),激活內(nèi)存刷新數(shù)據(jù),更新實(shí)時(shí)環(huán)境信息,判斷數(shù)據(jù)是否越界,若越界則激活設(shè)備控制線程進(jìn)行相應(yīng)的控制。流程圖如圖6所示。
2.3.5 處理客戶請(qǐng)求線程的實(shí)現(xiàn) 主要用于接收CGI、QT以及別的線程檢測(cè)到異常發(fā)送設(shè)備控制請(qǐng)求的線程,流程圖如圖7所示。1L、2L、3L等代表不同的信息判定類(lèi)型。
3 系統(tǒng)測(cè)試
3.1 采集中心與數(shù)據(jù)處理中心通信測(cè)試
啟動(dòng)M0(采集中心)與A8(處理中心),系統(tǒng)上電,連接成功后如圖8所示。顯示器中顯示實(shí)時(shí)的溫度、濕度、光照和三軸等信息,表明M0與A8通信正常。
3.2 倉(cāng)庫(kù)管理系統(tǒng)主界面
在PC機(jī)瀏覽器中輸入Web服務(wù)器地址(這里為:192.168.1.200)進(jìn)入系統(tǒng)界面如圖9所示。經(jīng)過(guò)測(cè)試,數(shù)據(jù)采集中心與數(shù)據(jù)處理中心的ZigBee模塊通信穩(wěn)定。數(shù)據(jù)通過(guò)客戶端的系統(tǒng)主界面,可以對(duì)最高溫度、最低溫度、最高濕度、最低濕度、最高光照、最低光照等上下限信息進(jìn)行設(shè)置;可查看倉(cāng)庫(kù)貨物信息,貨物刷卡進(jìn)倉(cāng)時(shí)可隨時(shí)記錄進(jìn)倉(cāng)貨物信息;填寫(xiě)正確IP、網(wǎng)關(guān)后點(diǎn)擊“開(kāi)啟WIFI”,實(shí)現(xiàn)了數(shù)據(jù)采集中心與手機(jī)或筆記本電腦之間的通信;設(shè)置報(bào)警短信接收號(hào)碼、中心號(hào)碼,填寫(xiě)要接收短信的中心號(hào)碼和手機(jī)號(hào)碼提交,在任意手機(jī)上可接收到報(bào)警信息;可以開(kāi)啟或關(guān)閉A8上的LED燈及報(bào)警器;點(diǎn)擊倉(cāng)庫(kù)主界面的“歷史照片”,可以查看以前拍照的一些倉(cāng)庫(kù)照片等。
4 小結(jié)
針對(duì)傳統(tǒng)農(nóng)產(chǎn)品倉(cāng)庫(kù)管理效率低的問(wèn)題,利用無(wú)線傳感器技術(shù)、嵌入式技術(shù)為核心的物聯(lián)網(wǎng)技術(shù)和計(jì)算機(jī)技術(shù)設(shè)計(jì)了一個(gè)智能農(nóng)產(chǎn)品倉(cāng)庫(kù)管理系統(tǒng),實(shí)現(xiàn)倉(cāng)庫(kù)環(huán)境信息的監(jiān)控、物品信息的管理和各模塊之間的通信,系統(tǒng)可增強(qiáng)庫(kù)房作業(yè)的準(zhǔn)確性和快捷性、減少整個(gè)倉(cāng)庫(kù)物資出入庫(kù)中由于管理不到位造成的非法出入庫(kù)、誤置、偷竊和庫(kù)存、出貨錯(cuò)誤等損失,并最大限度地降低儲(chǔ)存成本、保障倉(cāng)庫(kù)物資的安全。測(cè)試表明,系統(tǒng)運(yùn)行穩(wěn)定、可靠性高,具有廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] 李學(xué)明,吳海燕,楊浩敏,等.基于物聯(lián)網(wǎng)技術(shù)的倉(cāng)庫(kù)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2013,40(2):19-23.
[2] 張仁彬,李玉民.基于物聯(lián)網(wǎng)技術(shù)倉(cāng)儲(chǔ)管理系統(tǒng)研究[J].物流科技,2011(6):35-38.
[3] 唐昱佳.基于物聯(lián)網(wǎng)的能源管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(12):161-164.
[4] 王希杰.基于物聯(lián)網(wǎng)技術(shù)的生態(tài)環(huán)境監(jiān)測(cè)應(yīng)用研究[J].傳感器與微系統(tǒng),2011,30(7):149-152.
[5] 劉向舉,劉麗娜.基于物聯(lián)網(wǎng)的室內(nèi)環(huán)境監(jiān)測(cè)系統(tǒng)的研究[J].傳感器與微系統(tǒng),2013,32(3):37-40.
[6] 張?jiān)隽?,韓文霆,陳永社,等.基于WEB的糧倉(cāng)信息采集遠(yuǎn)程監(jiān)控系統(tǒng)[J].農(nóng)機(jī)化研究,2013(6):167-169.
[7] GLIDDEN R,BOCKORICK C,COOPER S,et al. Design of ultra-low-cost UHF RFID tags for supply chain applications[J]. Communications Magazine,IEEE,2004,42(8):140-151.
[8] LIU H, BOLIC M, NAYAK A, et al. Taxonomy and challenges of the integration of RFID and wireless sensor networks[J].Network,IEEE,2008,22(6):26-35.
[9] NICULESCU D S. Communication paradigms for sensor networks[J]. Communications Magazine,IEEE,2005,43(3):116-122.
[10] 聶 濤.基于物聯(lián)網(wǎng)的數(shù)字化倉(cāng)庫(kù)軟件架構(gòu)研究與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2012.
數(shù)據(jù)處理中心軟件系統(tǒng)的架構(gòu)包括3大部分:操作系統(tǒng)、系統(tǒng)服務(wù)和應(yīng)用程序。操作系統(tǒng)移植Linux 2.635內(nèi)核,系統(tǒng)服務(wù)處于操作系統(tǒng)和應(yīng)用程序之間,系統(tǒng)服務(wù)架構(gòu)在操作系統(tǒng)之上,利用操作系統(tǒng)提供的接口來(lái)實(shí)現(xiàn)一些應(yīng)用程序需要使用的通用、核心的功能,并以接口的形式向上提供給應(yīng)用程序供應(yīng)用程序調(diào)用[10]。通過(guò)對(duì)需求的分析在這里需要使用的系統(tǒng)服務(wù)有Web服務(wù)器、WIFI WPA系統(tǒng)服務(wù)、SQlite3嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)、網(wǎng)絡(luò)視頻服務(wù)器。應(yīng)用程序是針對(duì)系統(tǒng)需求所設(shè)計(jì)出的實(shí)現(xiàn)特定功能的程序,根據(jù)對(duì)系統(tǒng)需求的分析,這里所設(shè)計(jì)的應(yīng)用程序?qū)崿F(xiàn)的功能是對(duì)數(shù)據(jù)的處理。M0(采集單元)采用裸機(jī)程序開(kāi)發(fā),這里不再具體說(shuō)明。其他程序(線程)均運(yùn)行在A8設(shè)備上,它們并不是裸機(jī)程序而是運(yùn)行在Linux操作系統(tǒng)之上的,這里從應(yīng)用層的角度給出了各個(gè)線程之間的關(guān)系,軟件構(gòu)架如圖3。
運(yùn)行在A8設(shè)備上的線程簡(jiǎn)介如下:
thread_client_request():處理消息隊(duì)列里請(qǐng)求的線程;
pthread_refresh():更新共享內(nèi)存里的實(shí)時(shí)數(shù)據(jù);
pthread_sqlite():數(shù)據(jù)庫(kù)線程;
pthread_transfer():接收M0數(shù)據(jù)線程;
pthread_analysis():M0數(shù)據(jù)分析線程;
pthread_uart_cmd():M0控制命令發(fā)送線程;
pthread_sms():短信模塊控制線程;
pthread_buzzer():A8報(bào)警器控制線程;
pthread_infrared():紅外(按鍵模擬)監(jiān)測(cè)線程;
pthread_led():A8 LED模塊線程;
pthread_camera():攝像頭模塊控制線程。
2.3 客戶端應(yīng)用程序?qū)崿F(xiàn)
采用B/S模式的服務(wù)器架構(gòu)將Web服務(wù)器安裝在作為數(shù)據(jù)處理中心的A8設(shè)備上,然后系統(tǒng)使用者通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)處理中心的Web服務(wù)器,在這種情況下經(jīng)過(guò)數(shù)據(jù)處理中心處理后的數(shù)據(jù)就會(huì)被Web服務(wù)器的CGI進(jìn)程讀取然后生成html文件,并被瀏覽訪問(wèn)解析成網(wǎng)頁(yè)最終展現(xiàn)在系統(tǒng)使用者面前。下面介紹主要線程的實(shí)現(xiàn)流程。
2.3.1 軟件環(huán)境 系統(tǒng)采用ASP.NET 2.0和C#語(yǔ)言進(jìn)行開(kāi)發(fā)、服務(wù)器采用Windows 2003 Serber/IIS 6.0,數(shù)據(jù)庫(kù)管理系統(tǒng)采用SQL Sever 2005,在Visual Studio 2005集成開(kāi)發(fā)環(huán)境下完成開(kāi)發(fā)、集成和測(cè)試工作。
2.3.2 數(shù)據(jù)庫(kù)線程的實(shí)現(xiàn) SQlite3 提供了一些C函數(shù)接口,可以用這些函數(shù)操作數(shù)據(jù)庫(kù)。通過(guò)使用這些接口,以char*類(lèi)型傳遞一些標(biāo)準(zhǔn)SQL語(yǔ)句給SQlite函數(shù),SQlite就可以操作數(shù)據(jù)庫(kù)。SQlite數(shù)據(jù)庫(kù)線程流程如圖4(左)所示,SQlite_task線程結(jié)構(gòu)如圖4(右)所示。
主程序開(kāi)始運(yùn)行之后,各任務(wù)線程開(kāi)始運(yùn)行,其中就包括數(shù)據(jù)庫(kù)的pthread_sqlite。pthread_sqlite線程開(kāi)始創(chuàng)建一個(gè)用于存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)操作的鏈表,鏈表創(chuàng)建之后進(jìn)入while循環(huán)。循環(huán)中,用pthread_cond_wait函數(shù)語(yǔ)句進(jìn)行睡眠等待,等待其他線程的喚醒函數(shù)pthread_cond_signal發(fā)來(lái)的信號(hào),喚醒之后再次進(jìn)入一個(gè)while的循環(huán)語(yǔ)句,在這個(gè)循環(huán)中,進(jìn)行對(duì)鏈表頭的判空工作。如果鏈表頭不為空,則讀取第一個(gè)節(jié)點(diǎn)的內(nèi)容,把節(jié)點(diǎn)中的內(nèi)容解析出來(lái),把解析出來(lái)的內(nèi)容作為參數(shù)傳到sqlite_task函數(shù)中,完成相應(yīng)的數(shù)據(jù)庫(kù)操作并釋放節(jié)點(diǎn)空間,如此循環(huán);如果鏈表頭為空,則直接跳出while循環(huán),再回到外部循環(huán)的pthread_cond_wait函數(shù)進(jìn)行睡眠等待,等待下一次被其他線程喚醒。
2.3.3 數(shù)據(jù)接收線程的實(shí)現(xiàn) 數(shù)據(jù)接收線程主要負(fù)責(zé)從前端數(shù)據(jù)處理中心接收倉(cāng)庫(kù)信息,流程圖如圖5所示。
2.3.4 數(shù)據(jù)處理線程的實(shí)現(xiàn) 數(shù)據(jù)處理線程主要用來(lái)處理接收到的信息,因?yàn)榻邮盏降男畔⑹前匆欢ㄒ?guī)律進(jìn)行編碼的,所以進(jìn)行解碼后,激活數(shù)據(jù)庫(kù)線程,保存數(shù)據(jù),激活內(nèi)存刷新數(shù)據(jù),更新實(shí)時(shí)環(huán)境信息,判斷數(shù)據(jù)是否越界,若越界則激活設(shè)備控制線程進(jìn)行相應(yīng)的控制。流程圖如圖6所示。
2.3.5 處理客戶請(qǐng)求線程的實(shí)現(xiàn) 主要用于接收CGI、QT以及別的線程檢測(cè)到異常發(fā)送設(shè)備控制請(qǐng)求的線程,流程圖如圖7所示。1L、2L、3L等代表不同的信息判定類(lèi)型。
3 系統(tǒng)測(cè)試
3.1 采集中心與數(shù)據(jù)處理中心通信測(cè)試
啟動(dòng)M0(采集中心)與A8(處理中心),系統(tǒng)上電,連接成功后如圖8所示。顯示器中顯示實(shí)時(shí)的溫度、濕度、光照和三軸等信息,表明M0與A8通信正常。
3.2 倉(cāng)庫(kù)管理系統(tǒng)主界面
在PC機(jī)瀏覽器中輸入Web服務(wù)器地址(這里為:192.168.1.200)進(jìn)入系統(tǒng)界面如圖9所示。經(jīng)過(guò)測(cè)試,數(shù)據(jù)采集中心與數(shù)據(jù)處理中心的ZigBee模塊通信穩(wěn)定。數(shù)據(jù)通過(guò)客戶端的系統(tǒng)主界面,可以對(duì)最高溫度、最低溫度、最高濕度、最低濕度、最高光照、最低光照等上下限信息進(jìn)行設(shè)置;可查看倉(cāng)庫(kù)貨物信息,貨物刷卡進(jìn)倉(cāng)時(shí)可隨時(shí)記錄進(jìn)倉(cāng)貨物信息;填寫(xiě)正確IP、網(wǎng)關(guān)后點(diǎn)擊“開(kāi)啟WIFI”,實(shí)現(xiàn)了數(shù)據(jù)采集中心與手機(jī)或筆記本電腦之間的通信;設(shè)置報(bào)警短信接收號(hào)碼、中心號(hào)碼,填寫(xiě)要接收短信的中心號(hào)碼和手機(jī)號(hào)碼提交,在任意手機(jī)上可接收到報(bào)警信息;可以開(kāi)啟或關(guān)閉A8上的LED燈及報(bào)警器;點(diǎn)擊倉(cāng)庫(kù)主界面的“歷史照片”,可以查看以前拍照的一些倉(cāng)庫(kù)照片等。
4 小結(jié)
針對(duì)傳統(tǒng)農(nóng)產(chǎn)品倉(cāng)庫(kù)管理效率低的問(wèn)題,利用無(wú)線傳感器技術(shù)、嵌入式技術(shù)為核心的物聯(lián)網(wǎng)技術(shù)和計(jì)算機(jī)技術(shù)設(shè)計(jì)了一個(gè)智能農(nóng)產(chǎn)品倉(cāng)庫(kù)管理系統(tǒng),實(shí)現(xiàn)倉(cāng)庫(kù)環(huán)境信息的監(jiān)控、物品信息的管理和各模塊之間的通信,系統(tǒng)可增強(qiáng)庫(kù)房作業(yè)的準(zhǔn)確性和快捷性、減少整個(gè)倉(cāng)庫(kù)物資出入庫(kù)中由于管理不到位造成的非法出入庫(kù)、誤置、偷竊和庫(kù)存、出貨錯(cuò)誤等損失,并最大限度地降低儲(chǔ)存成本、保障倉(cāng)庫(kù)物資的安全。測(cè)試表明,系統(tǒng)運(yùn)行穩(wěn)定、可靠性高,具有廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] 李學(xué)明,吳海燕,楊浩敏,等.基于物聯(lián)網(wǎng)技術(shù)的倉(cāng)庫(kù)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2013,40(2):19-23.
[2] 張仁彬,李玉民.基于物聯(lián)網(wǎng)技術(shù)倉(cāng)儲(chǔ)管理系統(tǒng)研究[J].物流科技,2011(6):35-38.
[3] 唐昱佳.基于物聯(lián)網(wǎng)的能源管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(12):161-164.
[4] 王希杰.基于物聯(lián)網(wǎng)技術(shù)的生態(tài)環(huán)境監(jiān)測(cè)應(yīng)用研究[J].傳感器與微系統(tǒng),2011,30(7):149-152.
[5] 劉向舉,劉麗娜.基于物聯(lián)網(wǎng)的室內(nèi)環(huán)境監(jiān)測(cè)系統(tǒng)的研究[J].傳感器與微系統(tǒng),2013,32(3):37-40.
[6] 張?jiān)隽?,韓文霆,陳永社,等.基于WEB的糧倉(cāng)信息采集遠(yuǎn)程監(jiān)控系統(tǒng)[J].農(nóng)機(jī)化研究,2013(6):167-169.
[7] GLIDDEN R,BOCKORICK C,COOPER S,et al. Design of ultra-low-cost UHF RFID tags for supply chain applications[J]. Communications Magazine,IEEE,2004,42(8):140-151.
[8] LIU H, BOLIC M, NAYAK A, et al. Taxonomy and challenges of the integration of RFID and wireless sensor networks[J].Network,IEEE,2008,22(6):26-35.
[9] NICULESCU D S. Communication paradigms for sensor networks[J]. Communications Magazine,IEEE,2005,43(3):116-122.
[10] 聶 濤.基于物聯(lián)網(wǎng)的數(shù)字化倉(cāng)庫(kù)軟件架構(gòu)研究與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2012.