殷西祥
(安徽商貿(mào)職業(yè)技術(shù)學(xué)院,安徽 蕪湖 241002)
隨著生活水平的不斷提高,人們對美好生活的向往更加強烈,愛花人士越來越多,花盆是生活中必不可少的用具。人們常常根據(jù)個人喜好或植物的特性選用花盆,但是對于經(jīng)常疏于照料或過度養(yǎng)護(hù)盆栽的用戶來說,使用普通花盆容易導(dǎo)致植物因長時間缺少水分、光照等情況枯萎甚至死亡。用戶更希望養(yǎng)護(hù)一次能維持較長時間內(nèi)植物生長所需的水分和其他養(yǎng)分。
近年來,隨著移動互聯(lián)網(wǎng)技術(shù)和物聯(lián)網(wǎng)技術(shù)的高速發(fā)展,人們更習(xí)慣于移動終端設(shè)備如手機、平板電腦的使用。因此,設(shè)計一款面向移動終端的智能花盆系統(tǒng)尤為重要。文獻(xiàn)[1-4]主要是從硬件的角度和利用物聯(lián)網(wǎng)技術(shù)去設(shè)計智能花盆;文獻(xiàn)[5]設(shè)計了一款自動澆水補光的可旋轉(zhuǎn)式智能花盆;文獻(xiàn)[6]雖然也設(shè)計了Android APP,但是其核心還是注重花盆的內(nèi)部結(jié)構(gòu)設(shè)計。與此同時,Android操作系統(tǒng)的市場占用率遠(yuǎn)遠(yuǎn)領(lǐng)先于其他移動終端操作系統(tǒng)。本文以Android系統(tǒng)為例設(shè)計基于Android平臺的智能花盆系統(tǒng),該系統(tǒng)能將通過傳感器搜集到的土壤溫度、濕度、pH值等盆栽生長環(huán)境指標(biāo)信息實時顯示在基于Android平臺的移動終端設(shè)備上。通過該系統(tǒng)的使用,用戶能手動遠(yuǎn)程控制或自動控制水泵、LED燈光、報警器等控制器,可大量減少人工費時費力的操作,避免疏忽,并能精準(zhǔn)地實現(xiàn)智能化養(yǎng)花服務(wù)。文章主要從基于Android平臺的智能花盆系統(tǒng)物聯(lián)網(wǎng)架構(gòu)設(shè)計、系統(tǒng)模塊設(shè)計、數(shù)據(jù)庫設(shè)計、軟件設(shè)計與實現(xiàn)等角度展開闡述。
智能花盆擬在傳統(tǒng)花盆的基礎(chǔ)上增加土壤溫濕度、pH值、光照強度等傳感器和水泵、LED燈光、卷簾等控制器。其物聯(lián)網(wǎng)架構(gòu)由應(yīng)用層、感知層和網(wǎng)絡(luò)層組成[7]。智能花盆物聯(lián)網(wǎng)架構(gòu)如圖1所示,通過ZigBee、Http等網(wǎng)絡(luò)技術(shù)與協(xié)議,各傳感器將獲取到的數(shù)據(jù)傳遞到Web服務(wù)端的數(shù)據(jù)庫,基于Android平臺的移動終端通過網(wǎng)絡(luò)訪問Web服務(wù)端的相關(guān)接口獲取各傳感的實時數(shù)據(jù)。
圖1 智能花盆物聯(lián)網(wǎng)架構(gòu)
網(wǎng)絡(luò)層的ZigBee技術(shù)主要負(fù)責(zé)發(fā)送感知層獲取的各傳感器數(shù)據(jù)到Web服務(wù)端,同時接收來自控制模塊如水泵控制器、LED燈光控制器、卷簾控制器和報警器等的受控信息。感知層的受控模塊在花盆環(huán)境監(jiān)測到的傳感器數(shù)據(jù)出現(xiàn)異常,即超出植物生長的相關(guān)閾值時,通過控制單元控制受控設(shè)備如水泵、LED燈光、卷簾和報警器等進(jìn)行相應(yīng)的植物生長環(huán)境補償。Http協(xié)議主要作用于應(yīng)用層的Web服務(wù)端與Android移動端之間的數(shù)據(jù)交互。
智能花盆系統(tǒng)的軟件總體架構(gòu)主要分為Web服務(wù)端和Android移動終端,它們之間通過JSON數(shù)據(jù)進(jìn)行交互。Web服務(wù)端的主要功能模塊有用戶管理模板、數(shù)據(jù)管理模塊和操作日志管理模塊。用戶管理模塊主要是對用戶的角色、用戶名稱和密碼等數(shù)據(jù)進(jìn)行加密、管理。數(shù)據(jù)管理模塊主要是存儲從溫濕度傳感器、光照強度傳感器和pH值傳感器獲取到的數(shù)據(jù)并形成與Android端的數(shù)據(jù)交互,操作日志管理模塊主要是對用戶的系統(tǒng)操作和用戶對控制器的操作進(jìn)行存儲記錄,方便對用戶的操作進(jìn)行記錄與追溯。Web服務(wù)端的主要功能模塊如圖2所示。
圖2 Web服務(wù)端主要功能模塊
Android移動終端的主要功能有獲取各傳感器的數(shù)據(jù),用戶信息的管理和消息推送,使用移動終端設(shè)備對智能花盆的各個控制器進(jìn)行遠(yuǎn)程控制,也可以根據(jù)用戶在移動終端設(shè)備上設(shè)置的各傳感器閾值進(jìn)行自動控制等功能。主要功能模塊如圖3所示。
圖3 Android移動終端功能模塊
數(shù)據(jù)庫是軟件系統(tǒng)的重要組成部分,合理的數(shù)據(jù)庫設(shè)計往往能使系統(tǒng)的設(shè)計減少冗余,使系統(tǒng)的編碼實現(xiàn)更加健壯,使系統(tǒng)的維護(hù)更加便利。
SQLite數(shù)據(jù)庫是一種嵌入式的、占用資源非常低的輕量級關(guān)系型數(shù)據(jù)庫,被廣泛運用于移動終端設(shè)備中[8]。本系統(tǒng)移動端的數(shù)據(jù)庫采用SQLite數(shù)據(jù)庫。移動終端設(shè)備不像傳統(tǒng)服務(wù)器擁有幾TB甚至更大的容量,在Android移動終端中數(shù)據(jù)庫只存放系統(tǒng)必需的各傳感器的數(shù)據(jù)、用戶設(shè)置的閾值和用戶的基礎(chǔ)信息,其他的信息都存放在Web服務(wù)端的數(shù)據(jù)庫中。移動終端數(shù)據(jù)模型如圖4所示,數(shù)據(jù)庫具體設(shè)計如表1、表2和表3所示。
圖4 系統(tǒng)數(shù)據(jù)模型
表1 傳感器屬性值
表2 傳感器閾值設(shè)置
表3 用戶
該基于Android平臺的智能花盆系統(tǒng)分為服務(wù)端和移動端兩部分組成,服務(wù)端與移動端通過Http協(xié)議實現(xiàn)JSON數(shù)據(jù)的交互,采用MVC架構(gòu)模式,即“模型—視圖—控制”模式[9]。由于考慮到Android設(shè)備的容量和網(wǎng)絡(luò)延遲等問題,系統(tǒng)中需要頻繁訪問的數(shù)據(jù)如用戶訪問權(quán)限、用戶設(shè)置的閾值等信息利用鍵值對的方式存放在SharedPreferences中,方便用戶的存取。Android移動終端系統(tǒng)采用MVP模式和Material design設(shè)計風(fēng)格,使用Volley網(wǎng)絡(luò)框架實現(xiàn)與服務(wù)端進(jìn)行數(shù)據(jù)請求交互。
Web服務(wù)端設(shè)計與實現(xiàn)的實驗環(huán)境是Eclipse 64位JavaEE企業(yè)級開發(fā)環(huán)境eclipse-jee-neon-3-win32-x86_64,數(shù)據(jù)庫采用 MySQL v5.7.27;移動端設(shè)計與實現(xiàn)的實驗環(huán)境是Android Studio 3.1.2集成開發(fā)環(huán)境,大量使用Gson、GsonFormat和FindViewByMe等依賴庫和第三方插件技術(shù)。Android移動終端數(shù)據(jù)庫采用輕量級嵌入式數(shù)據(jù)庫SQLite,輔助開發(fā)工具為HBuilder、Adobe Photoshop CC 2019和Apache Tomcat 7等。以下重點介紹系統(tǒng)的Android移動終端的主要功能實現(xiàn)。
主界面設(shè)計如圖5所示,主要是智能花盆系統(tǒng)各模塊的入口,提供側(cè)滑和底部導(dǎo)航兩種方式進(jìn)入相關(guān)功能模塊。側(cè)滑部分主要完成移動端的“系統(tǒng)登錄、遠(yuǎn)程控制、手動控制與傳感器指標(biāo)、關(guān)于我們”等功能。底部導(dǎo)航部分主要完成“閾值設(shè)置、我的信息”等功能。
圖5 主界面設(shè)計
功能實現(xiàn):主界面使用Android 5.0以上組件開發(fā),能很好地兼容Android 4.0以上版本的移動終端設(shè)備。使用CoordinatorLayout來作為頂層布局協(xié)調(diào)各子布局,使用DrawerLayout與NavigationView來實現(xiàn)側(cè)滑及側(cè)滑菜單的功能實現(xiàn)。底部導(dǎo)航使用RadioGroup與Fragment來實現(xiàn)。
手動控制與傳感器指標(biāo)界面設(shè)計如圖6所示,手動控制包括對LED燈光、卷簾、報警器和水泵等的遠(yuǎn)程控制,達(dá)到通過Android移動終端設(shè)備遠(yuǎn)程操作相關(guān)控制器的功能,通過模擬實現(xiàn)當(dāng)花盆缺少相關(guān)環(huán)境指標(biāo)時及時地進(jìn)行補充光照、澆水或遮光等功能。傳感器指標(biāo)的功能是通過服務(wù)端實時獲取各傳感器的值并顯示在移動終端設(shè)備上。
圖6 手動控制與傳感器指標(biāo)界面設(shè)計
功能實現(xiàn):傳感器指標(biāo)的功能是獲取傳感器的實時數(shù)據(jù)即JSON數(shù)據(jù)包,通過GSON等依賴包解析JSON數(shù)據(jù)包后顯示在Android移動終端設(shè)備上并實時更新;手動控制功能是通過Android移動終端傳遞相關(guān)JSON數(shù)據(jù)到Web服務(wù)端,Web服務(wù)端解析傳來的JSON數(shù)據(jù),通過串口對相關(guān)的設(shè)備進(jìn)行操作。操作完畢后,Web服務(wù)端將JSON數(shù)據(jù)傳遞到Android移動終端即Android客戶端,Android客戶端根據(jù)操作的完成情況收到相關(guān)的提示。便于用戶遠(yuǎn)程操作并及時了解操作是否如期完成等情況。
該基于Android平臺的面向移動終端的智能花盆系統(tǒng)通過聯(lián)想智能農(nóng)業(yè)模擬設(shè)備測試[10],能將傳感器采集的數(shù)據(jù)直觀地顯示在移動設(shè)備中。用戶可以在Android移動終端APP中設(shè)置閾值。當(dāng)植物生長環(huán)境指標(biāo)超出閾值設(shè)置的范圍時,系統(tǒng)會自動觸發(fā)報警器報警,并通過WebSocket等技術(shù)實時推送消息給用戶。用戶可以通過移動終端設(shè)備遠(yuǎn)程操作該系統(tǒng),手動或自動處理水泵、燈光、卷簾等控制器來進(jìn)行相應(yīng)的植物生長環(huán)境補償。該系統(tǒng)能順利地解決盆栽在種植過程中出現(xiàn)的養(yǎng)分不足或過剩等問題,減少用戶費時費力的人工操作,精準(zhǔn)地實現(xiàn)智能化養(yǎng)花服務(wù)。