北京林業(yè)大學(xué)理學(xué)院 王 卓 朱建林 王龍飛 陳志良
?
基于Arduino和Android的環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
北京林業(yè)大學(xué)理學(xué)院 王 卓 朱建林 王龍飛 陳志良
【摘要】隨著物聯(lián)網(wǎng)的不斷發(fā)展,無(wú)線傳感器網(wǎng)絡(luò)技術(shù)也得到快速的發(fā)展。本文為無(wú)線傳感網(wǎng)絡(luò)技術(shù)的一個(gè)實(shí)例,介紹運(yùn)用Arduino開(kāi)源平臺(tái)和Android智能操作系統(tǒng),實(shí)現(xiàn)具有環(huán)境檢測(cè)與數(shù)據(jù)智能分析的環(huán)境監(jiān)測(cè)系統(tǒng)。
【關(guān)鍵詞】無(wú)線傳感器網(wǎng)絡(luò);Arduino/Android;Yeelink;程序設(shè)計(jì)
無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks, WSNs)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大量傳感器節(jié)點(diǎn)相互通信形成的多跳自組織網(wǎng)絡(luò)系統(tǒng),是物聯(lián)網(wǎng)底層網(wǎng)絡(luò)的重要技術(shù)形式[1]。隨著無(wú)線通信、傳感器技術(shù)、嵌入式應(yīng)用和微電子技術(shù)的日趨成熟,WSNs 可以在任何時(shí)間、任何地點(diǎn)、任何環(huán)境條件下獲取人們所需信息,為物聯(lián)網(wǎng)(Internet of Things)
的發(fā)展奠定基礎(chǔ)。本文研究的內(nèi)容是利用現(xiàn)有的成熟互聯(lián)網(wǎng)實(shí)現(xiàn)方法獲取實(shí)時(shí)的環(huán)境狀況信息,這種實(shí)現(xiàn)方法簡(jiǎn)單快速,成本低廉。
1.1Arduino Mega2560 Rev3主控板及擴(kuò)展板
Arduino是一個(gè)開(kāi)放源代碼的硬件項(xiàng)目平臺(tái),該平臺(tái)包括一塊具備簡(jiǎn)單I/O功能的電路板及一套程序開(kāi)發(fā)環(huán)境軟件。本設(shè)計(jì)使用Arduino Mega2560微控版,使用UBS接口或9VDC 外部電源供電。
為了實(shí)現(xiàn)網(wǎng)絡(luò)傳輸,使用Arduino Mega2560 Wi-Fi擴(kuò)展板,該擴(kuò)展板可以使Arduino成為簡(jiǎn)單的Web服務(wù)器。由于設(shè)計(jì)模塊化,Wi-Fi擴(kuò)展板只需堆疊插入Arduino Mega2560主控板接口即可。
在擴(kuò)展板上連接土壤濕度傳感器、溫濕度傳感器、陀螺儀傳感器、超聲波測(cè)距傳感器、光照度傳感器、GPS接收器,用于獲取環(huán)境的數(shù)據(jù)。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架
1.2智能手機(jī)
Android平臺(tái)由操作系統(tǒng)、中間件、用戶(hù)界面、應(yīng)用軟件組成。開(kāi)發(fā)人員在該平臺(tái)開(kāi)發(fā)的應(yīng)用程序,是使用Java語(yǔ)言編寫(xiě)的、在Dalvik虛擬機(jī)上運(yùn)行的。Android 的底層是以開(kāi)放性的Linux kernel為其架構(gòu),也可以理解為Google 推出的手機(jī)操作系統(tǒng)和相關(guān)軟件的總稱(chēng)[2]。核心系統(tǒng)服務(wù)依賴(lài)于Linux2.6內(nèi)核,包括安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議和驅(qū)動(dòng)模型。我們編寫(xiě)的APP是獲取傳感器上傳到Y(jié)eelink的數(shù)據(jù),同時(shí)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行分析,并具有語(yǔ)音播報(bào)的功能。
1.3Yeelink平臺(tái)
Yeelink是國(guó)內(nèi)較早提供免費(fèi)傳感器數(shù)據(jù)接入管理的互聯(lián)網(wǎng)服務(wù)提供商。在Yeelink網(wǎng)站上能夠完成對(duì)傳感器數(shù)據(jù)的接入管理,數(shù)據(jù)存儲(chǔ),以及將數(shù)據(jù)隨時(shí)呈現(xiàn)給用戶(hù)。所有的數(shù)據(jù)存入和取回等API手冊(cè)完全開(kāi)放,并支持客戶(hù)進(jìn)行二次開(kāi)發(fā)。
本設(shè)計(jì)使用個(gè)人電腦接入互聯(lián)網(wǎng)訪問(wèn)Yeelink網(wǎng)站,查看Arduino mega2560 上傳的數(shù)據(jù)。使用個(gè)人電腦查看Yeelink服務(wù)器上的傳感器數(shù)據(jù),需要注冊(cè)成為網(wǎng)站會(huì)員,獲得唯一的API-key,添加設(shè)備和傳感器。登錄網(wǎng)站就可以看到傳感器數(shù)據(jù)。圖2是實(shí)驗(yàn)時(shí)上傳到Y(jié)eelink平臺(tái)的溫度數(shù)據(jù)。
圖2 上傳到Y(jié)eelink平臺(tái)的溫度數(shù)據(jù)
2.1Arduino mega2560主控板程序設(shè)計(jì)
Arduino程序設(shè)計(jì)語(yǔ)言類(lèi)似于C,C++,由于Arduino項(xiàng)目組預(yù)先在集成環(huán)境軟件開(kāi)發(fā)環(huán)境中提供了常用的庫(kù)文件,開(kāi)發(fā)人員在使用它的基本功能時(shí)只需調(diào)用他們即可[3]。這種設(shè)計(jì)體現(xiàn)了低門(mén)檻和硬件無(wú)關(guān)性,使開(kāi)發(fā)者迅速掌握,不用考慮硬件底層實(shí)現(xiàn)原理,而把注意力集中在應(yīng)用本身。
為了實(shí)現(xiàn)網(wǎng)絡(luò)傳輸功能,本設(shè)計(jì)采用了以ESP8266模塊為核心的Wi-Fi擴(kuò)展板,ESP8266 是一個(gè)完整且自成體系的 Wi-Fi 網(wǎng)絡(luò)解決方案,能夠獨(dú)立運(yùn)行,也可以作為slave 搭載于其他 Host 運(yùn)行。無(wú)線標(biāo)準(zhǔn)為802.11 b/g/n。
Arduino mega260主控板程序設(shè)計(jì)分為兩個(gè)部分,第一個(gè)部分用于使用傳感器收集外界環(huán)境的數(shù)據(jù),第二部分用于向Yeelink平臺(tái)上傳數(shù)據(jù)。
2.2Android數(shù)據(jù)接收與通信程序設(shè)計(jì)
Android手機(jī)端應(yīng)用的設(shè)計(jì)需要搭建開(kāi)發(fā)平臺(tái)。本設(shè)計(jì)采用JDK6+Eclipse+AndoridSDK的方案。使用Yeelink網(wǎng)站提供的API。
借助Android的開(kāi)源環(huán)境與Yeelink的API,通過(guò)Google Development Kit即能很快搭建出所需的開(kāi)發(fā)環(huán)境[4]。數(shù)據(jù)處理與遠(yuǎn)程通信模塊的Android程序由UI層、Service層和持久層組成,在UI層進(jìn)行用戶(hù)交互,和傳感器數(shù)據(jù)顯示設(shè)計(jì),在Service層建立線程執(zhí)行并進(jìn)行Web數(shù)據(jù)的交互處理,在持久層通過(guò)SQLite小型數(shù)據(jù)庫(kù)儲(chǔ)存?zhèn)鞲衅飨嚓P(guān)數(shù)據(jù)與信息,并進(jìn)行文件讀寫(xiě)。
所開(kāi)發(fā)的APP包含的功能有顯示傳感器所收集的數(shù)據(jù),數(shù)據(jù)自動(dòng)分析,語(yǔ)音播報(bào)功能。
圖3為手機(jī)顯示環(huán)境溫度頁(yè)面,圖4為用戶(hù)想了解環(huán)境數(shù)據(jù)時(shí),語(yǔ)音輸入想問(wèn)的問(wèn)題軟件會(huì)自動(dòng)對(duì)所收集的數(shù)據(jù)進(jìn)行分析,并以語(yǔ)音和文字的形式同時(shí)播報(bào)出來(lái)。
圖3 APP 顯示環(huán)境溫度頁(yè)面
圖4 數(shù)據(jù)自動(dòng)分析和語(yǔ)音播報(bào)
在本實(shí)驗(yàn)中,使用具有Wi-Fi功能的路由器,Wi-Fi擴(kuò)展模塊與路由器相連從而將數(shù)據(jù)上傳到Y(jié)eelink平臺(tái)。
本文設(shè)計(jì)系統(tǒng)的功能實(shí)現(xiàn)是基于Arduino mega2560主控板及安卓智能手機(jī),利用Wi-Fi模塊實(shí)現(xiàn)向服務(wù)器上傳傳感器數(shù)據(jù)功能。整個(gè)系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單,方便快捷,達(dá)到了預(yù)期目的。
參考文獻(xiàn)
[1]Liu Q,Huang X H,and Leng S P.Deployment strategy of wireless sensor networks for Internet of Things[J].China Communications,2011,8(8):111-120.
[2]張仕成.基于Google Android平臺(tái)的應(yīng)用程序開(kāi)發(fā)與研究[J].電腦知識(shí)與技術(shù),2009(28):7959-7962.
[3]Julien Bayle.C Programming for Arduino[M].Birmingham:Packt Publishing,2013:39-40.
[4]王為學(xué),谷剛.基于Android和Wifi的智能點(diǎn)菜終端設(shè)計(jì)與實(shí)現(xiàn)[J].電腦開(kāi)發(fā)與應(yīng)用,2011(12):40-42.
王卓(1996—),男,河南南陽(yáng)人,大學(xué)本科,現(xiàn)就讀于北京林業(yè)大學(xué)理學(xué)院。
朱建林(1993—),男,重慶人,大學(xué)本科,現(xiàn)就讀于北京林業(yè)大學(xué)理學(xué)院。
王龍飛(1994—),男,河南洛陽(yáng)人,大學(xué)本科,現(xiàn)就讀于北京林業(yè)大學(xué)理學(xué)院。
陳志良(1995—),男,浙江臺(tái)州人,大學(xué)本科,現(xiàn)就讀于北京林業(yè)大學(xué)理學(xué)院。
汪沛(1981—),男,陜西人,副教授,碩士生導(dǎo)師,主要研究方向:激光雷達(dá)數(shù)據(jù)處理,嵌入式系統(tǒng)開(kāi)發(fā)及應(yīng)用。
通訊作者:
作者簡(jiǎn)介:
基金項(xiàng)目:北京林業(yè)大學(xué)“北京市大學(xué)生科學(xué)研究與創(chuàng)業(yè)行動(dòng)計(jì)劃”(項(xiàng)目編號(hào):S201510022097)。