張健+阮海清
摘 要:為了準(zhǔn)確檢測(cè)園藝植物的環(huán)境和生理數(shù)據(jù),使對(duì)園藝植物的管理變得簡(jiǎn)單和智能化,文中設(shè)計(jì)了基于無(wú)線傳感器和3G網(wǎng)絡(luò)的檢測(cè)系統(tǒng),以將采集的數(shù)據(jù)傳輸?shù)竭h(yuǎn)程PC端提供決策支持。該系統(tǒng)包括傳感器節(jié)點(diǎn)、WSN、嵌入式網(wǎng)關(guān)、PC端界面,并初步實(shí)驗(yàn)證明了該系統(tǒng)的合理性與可靠性。
關(guān)鍵詞:園藝植物;物聯(lián)網(wǎng);3G;PC端
中圖分類(lèi)號(hào):TP391.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2015)10-00-03
0 引 言
將農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用于花卉生長(zhǎng)中,能及時(shí)獲取植物的生長(zhǎng)環(huán)境和各種生理指標(biāo)[1]。通過(guò)集成各種傳感器,可以探測(cè)包括溫濕度、光照度、二氧化碳濃度、土壤pH值等農(nóng)田信息[2]。而用植株莖干直徑變化法來(lái)衡量作物的生理情況,具有簡(jiǎn)單易行、對(duì)植株不具有破壞性、可持續(xù)檢測(cè)和自動(dòng)積累的特點(diǎn)[3]。
本文實(shí)現(xiàn)了一種集溫濕度、二氧化碳濃度、植物莖干直徑檢測(cè)于一體的植物生理檢測(cè)系統(tǒng)。該系統(tǒng)能將檢測(cè)到的數(shù)據(jù)信息通過(guò)無(wú)線傳感器網(wǎng)絡(luò)和3G網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)端的PC機(jī),給管理者提供決策支持。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)由數(shù)據(jù)采集模塊(傳感器節(jié)點(diǎn))采集環(huán)境和植物生理信息,通過(guò)ZigBee協(xié)議構(gòu)建無(wú)線傳感器網(wǎng)絡(luò)將數(shù)據(jù)送到協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)通過(guò)串口將數(shù)據(jù)送給嵌入式平臺(tái),再由3G網(wǎng)絡(luò)傳輸?shù)轿挥谶h(yuǎn)端的PC平臺(tái)供管理者決策使用。本系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
1.2 各模塊簡(jiǎn)介
數(shù)據(jù)采集模塊由莖干直徑探測(cè)器、溫濕度傳感器、CO2濃度傳感器等采集作物生長(zhǎng)信息。莖干直徑探測(cè)器由可變差動(dòng)放大器(LVDT)和控制電路構(gòu)成。LVDT是把被測(cè)位移量變換為電信號(hào)的傳感器[4]。將其固定在被測(cè)植株莖干部位,通過(guò)與CC2530連接自動(dòng)記錄植株莖干直徑微變化[3]。安裝后能在不影響作物生長(zhǎng)的情況下持續(xù)測(cè)量作物莖干直徑變化。CO2濃度傳感器利用非色散紅外(NDIR)原理測(cè)量空氣中的CO2濃度,有很好的選擇性,無(wú)氧氣依賴(lài)性。
圖2所示為傳感器與CC2530的接口電路原理圖。溫濕度傳感器SHT10通過(guò)I2C接口連接到CC2530的P1_2、P1_3引腳,CO2傳感器和LVDT連接到CC2530的串行口P0_2、P0_3引腳。
無(wú)線傳感器由傳感器節(jié)點(diǎn)和匯聚節(jié)點(diǎn)構(gòu)成,本文采用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和ZigBee2007協(xié)議棧。傳感器把采集到的數(shù)據(jù)傳送到匯聚節(jié)點(diǎn)進(jìn)行簡(jiǎn)單的數(shù)據(jù)融合后,再通過(guò)串口傳輸?shù)角度胧狡脚_(tái)。
嵌入式平臺(tái)主要用于通過(guò)串口接收傳感器網(wǎng)絡(luò)傳送的數(shù)據(jù),能夠顯示植物生長(zhǎng)環(huán)境和生理數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的檢測(cè)。接受遠(yuǎn)端計(jì)算機(jī)對(duì)數(shù)據(jù)的請(qǐng)求,通過(guò)3G網(wǎng)絡(luò)向遠(yuǎn)程的PC端發(fā)送傳感器數(shù)據(jù)。
PC端是一個(gè)位于遠(yuǎn)端的主機(jī),通過(guò)3G網(wǎng)絡(luò)向嵌入式平臺(tái)發(fā)出數(shù)據(jù)請(qǐng)求,獲取植物的生理參數(shù)及環(huán)境信息,對(duì)接收到的信息進(jìn)行處理,提交給控制中心進(jìn)行后續(xù)的控制動(dòng)作。PC端包括了PC機(jī)、3G模塊以及人機(jī)交互界面。
2 系統(tǒng)軟件設(shè)計(jì)
設(shè)計(jì)并實(shí)現(xiàn)植物生理檢測(cè)系統(tǒng)軟件時(shí),應(yīng)重點(diǎn)解決三點(diǎn)關(guān)鍵技術(shù):無(wú)線傳感器網(wǎng)絡(luò)程序、嵌入式平臺(tái)軟件、PC端軟件。
2.1 無(wú)線傳感器網(wǎng)絡(luò)程序
本系統(tǒng)采用基于ZigBee協(xié)議組建無(wú)線傳感網(wǎng),在實(shí)現(xiàn)上除了硬件環(huán)境外,還需要合理的軟件設(shè)計(jì),以保證系統(tǒng)長(zhǎng)久穩(wěn)定可靠的運(yùn)行[5]。協(xié)調(diào)器初始化并建立起網(wǎng)絡(luò)后,等待其他設(shè)備加入網(wǎng)絡(luò),隨后傳感器節(jié)點(diǎn)初始化,并申請(qǐng)加入到先前建立的無(wú)線網(wǎng)絡(luò)中。當(dāng)傳感器節(jié)點(diǎn)與協(xié)調(diào)器完成綁定成功組網(wǎng)后,設(shè)備運(yùn)行維護(hù)狀態(tài),傳感器節(jié)點(diǎn)每隔3秒采集和發(fā)送數(shù)據(jù)信息。協(xié)調(diào)器執(zhí)行輪詢(xún)循環(huán)程序,并通過(guò)終端處理來(lái)接受其他設(shè)備發(fā)來(lái)的信息。圖3所示是協(xié)調(diào)器與傳感器的工作流程圖。
系統(tǒng)中的無(wú)線傳感器網(wǎng)絡(luò)程序設(shè)計(jì)包括傳感器節(jié)點(diǎn)驅(qū)動(dòng)和協(xié)調(diào)器程序。傳感器節(jié)點(diǎn)中傳感器采集到數(shù)據(jù)后通過(guò)UART或者I2C總線發(fā)送給CC2530單片機(jī)。單片機(jī)復(fù)位后完成節(jié)點(diǎn)初始化及數(shù)據(jù)端口驅(qū)動(dòng)后,立即搜尋、發(fā)現(xiàn)并加入ZigBee網(wǎng)絡(luò),當(dāng)協(xié)調(diào)器允許其加入后,即建立綁定關(guān)系,然后進(jìn)入“睡眠-喚醒采集數(shù)據(jù)-睡眠”的低功耗模式。
協(xié)調(diào)器復(fù)位完成初始化工作后,建立具有唯一網(wǎng)絡(luò)標(biāo)識(shí)的ZigBee網(wǎng)絡(luò)并進(jìn)入監(jiān)控模式,當(dāng)有傳感器節(jié)點(diǎn)申請(qǐng)加入時(shí),允許綁定并對(duì)該節(jié)點(diǎn)發(fā)送相應(yīng)并分配16位短地址;當(dāng)有數(shù)據(jù)傳輸時(shí),接收處理數(shù)據(jù)并發(fā)送給嵌入式平臺(tái)。
圖3 協(xié)調(diào)器與傳感器工作流程
2.2 嵌入式平臺(tái)軟件設(shè)計(jì)
嵌入式平臺(tái)可起到網(wǎng)關(guān)和數(shù)據(jù)處理的作用。它通過(guò)串口接收協(xié)調(diào)器傳送過(guò)來(lái)的數(shù)據(jù)信息,在對(duì)信息進(jìn)行加工處理后通過(guò)GPRS網(wǎng)絡(luò)傳輸給遠(yuǎn)端的PC機(jī)。本部分主要包括傳感器數(shù)據(jù)采集端口驅(qū)動(dòng)、3G模塊數(shù)據(jù)端口的驅(qū)動(dòng)和數(shù)據(jù)庫(kù)。串口讀寫(xiě)操作使用Linux底層串口操作,使用非阻塞方式讀寫(xiě)串口,所有程序采用Qt在Linux環(huán)境下編寫(xiě)。
數(shù)據(jù)采集端口驅(qū)動(dòng)負(fù)責(zé)接收協(xié)調(diào)器發(fā)送過(guò)來(lái)的數(shù)據(jù),并采用輪詢(xún)的方式讀取串口數(shù)據(jù),在傳感器數(shù)據(jù)正常情況下,每隔3 s上報(bào)一次,環(huán)境參數(shù)變化過(guò)快時(shí),每隔1 s上報(bào)一次數(shù)據(jù),系統(tǒng)中采用多線程循環(huán)讀取并解析傳感器數(shù)據(jù)。
3G模塊數(shù)據(jù)端口驅(qū)動(dòng)負(fù)責(zé)3G模塊之間的短信通信,采用多線程循環(huán)讀取短信數(shù)據(jù),并對(duì)其進(jìn)行解析處理。短信讀取時(shí),通過(guò)串口使用AT指令給3G模塊數(shù)據(jù)串口(ttyUSB0)發(fā)送讀寫(xiě)短信的指令。關(guān)鍵代碼如下:
void com_msg(int fd,char *number, char *text)
{
char ctl[]={26,0};
com_writecmd(fd,"AT", strlen("AT"));
com_writecmd(fd, "ATE1", strlen("ATE1"));
com_writecmd(fd, "AT+CMGF=1", strlen("AT+CMGF=1"));
com_write(fd, "AT+CMGS=", strlen("AT+CMGS="));
com_write(fd, "\"", strlen("\""));
com_write(fd, number, strlen(number));
com_write(fd, "\"", strlen("\""));
com_write(fd ,"\r", strlen("\r"));
usleep(10000);
com_write(fd, text, strlen(text));
com_write(fd, ctl, 1); //“CTRL+Z”的ASCII碼
usleep(300000);
}
本系統(tǒng)使用進(jìn)程內(nèi)數(shù)據(jù)庫(kù)SQLite,該數(shù)據(jù)庫(kù)小巧靈活,無(wú)須額外安裝配置且支持大部分ANSISQL92標(biāo)準(zhǔn),而且編程簡(jiǎn)單。SQLite數(shù)據(jù)庫(kù)支持大部分基本SQL操作,如SELECT、INSERT、DELETE等。下面為插入的操作代碼:
if(dbData.open())//插入數(shù)據(jù)
{
QSqlQuery query(dbData);
query.prepare("INSERT INTO tableData "
"VALUES (?,?,?,?,?)");
query.bindValue(0,QDate::currentDate().toString("yyyy-MM-dd") + " " +QTime::currentTime().toString("hh:mm:ss"));
query.bindValue(1,QString::number(sendData->ppm)); query.bindValue(2,QString::number((sendData->temp1+sendData->temp2)/2)); query.bindValue(3,QString::number((sendData->humi1+sendData->humi2)/2));
query.bindValue(4,QString::number(sendData->shift));
query.exec();
}
2.3 PC端軟件設(shè)計(jì)
PC端是位于遠(yuǎn)端的主機(jī),可通過(guò)3G網(wǎng)絡(luò)對(duì)嵌入式平臺(tái)進(jìn)行數(shù)據(jù)請(qǐng)求和操作,以獲取熱帶花卉作物生理參數(shù)及環(huán)境信息,實(shí)時(shí)操控?cái)?shù)據(jù)接收頻率,對(duì)于接收到信息的處理,完成對(duì)于花卉作物的生理監(jiān)測(cè),系統(tǒng)運(yùn)行于Linux系統(tǒng)下,采用Qt編程。
PC端程序主要包括3G模塊數(shù)據(jù)端驅(qū)動(dòng)、短信讀寫(xiě)、數(shù)據(jù)庫(kù)操作等。串口讀寫(xiě)操作封裝為串口操作類(lèi)Win_QextSerialPort,并能完成串口打開(kāi)、關(guān)閉、讀寫(xiě)等操作。
3 實(shí)驗(yàn)結(jié)果及分析
在IAR Embeded Workbench IDE下,打開(kāi)f8wConfig.cfg文件,配置好CHANNEL和網(wǎng)絡(luò)PANID,編譯生成傳感器節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)的Hex文件,分別燒入對(duì)應(yīng)節(jié)點(diǎn)的CC2530。
在嵌入式平臺(tái)移植Linux操作系統(tǒng),搭建Qt運(yùn)行環(huán)境,下載嵌入式平臺(tái)軟件并設(shè)置好運(yùn)行環(huán)境。重啟系統(tǒng)后,WSN自動(dòng)組網(wǎng),主動(dòng)上報(bào)傳感器數(shù)據(jù)。PC端在windows XP環(huán)境下安裝PC端軟件。
測(cè)試時(shí),在被測(cè)植物附近安裝檢測(cè)平臺(tái),在作物莖干部位安裝LVDT,嵌入式平臺(tái)距PC端約1.5千米。圖4是PC端的測(cè)試結(jié)果。
上述測(cè)試結(jié)果表明,本系統(tǒng)能正確地檢測(cè)出植物的生長(zhǎng)環(huán)境及生理數(shù)據(jù),并通過(guò)3G網(wǎng)絡(luò)可靠的傳送到遠(yuǎn)端的PC機(jī),給觀賞園藝植物的栽培管理決策提供數(shù)據(jù)支持。
圖4 PC端讀出數(shù)據(jù)
4 結(jié) 語(yǔ)
將物聯(lián)網(wǎng)運(yùn)用到園藝植物養(yǎng)護(hù)上,可解決很多植物愛(ài)護(hù)者的困境。通過(guò)檢測(cè)系統(tǒng)實(shí)時(shí)了解植物當(dāng)前的生長(zhǎng)環(huán)境和生理指標(biāo),從而為正確決策提供數(shù)據(jù)支持。本系統(tǒng)采用3G無(wú)線通信,便于安裝和控制,在加入控制器后,就能適用于規(guī)模化種植和家庭智能養(yǎng)護(hù)使用。
當(dāng)LVDT測(cè)量莖干直徑時(shí),會(huì)對(duì)莖干具有一定的壓迫性,尤其是應(yīng)用于比較嬌嫩的花卉植物時(shí)尤其明顯,下一步的研究是用機(jī)器視覺(jué)取代LVDT。
參考文獻(xiàn)
[1] 賴(lài)望峰.農(nóng)作物聯(lián)網(wǎng)在現(xiàn)代花卉生產(chǎn)中的作用[J].中國(guó)花卉園藝,2010(20):28-29.
[2] 孫玉文.基于無(wú)線傳感器網(wǎng)絡(luò)的農(nóng)田環(huán)境檢測(cè)系統(tǒng)研究與實(shí)現(xiàn)[D].南京:南京農(nóng)業(yè)大學(xué),2013.
[3] 高峰,俞立,張文安,等.基于莖直徑變化的無(wú)線傳感器網(wǎng)絡(luò)作物精量灌溉系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報(bào),2008,24(11):7-12.
[4] 李雪寶,許駿,宋騰飛,等.基于數(shù)字位移傳感器的位移測(cè)量系統(tǒng)[J].現(xiàn)代電子技術(shù),2010,33(5):95-97.
[5] 胡培金,江挺,趙燕東.基于zigbee無(wú)線網(wǎng)絡(luò)的土壤墑情監(jiān)控系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報(bào),2011,27(4):230-234.