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