梁健權(quán),于鳳梅,馮粵松
(1.仲愷農(nóng)業(yè)工程學院自動化學院,廣州 510225;2.廣東廣信通信服務有限公司,廣州 510005)
隨著科技的日益發(fā)展,人們的衣食住行愈加的智能化,智能家居這一概念意在提高人們的生活水平,自出現(xiàn)以來就廣受市場青睞,必定是未來人們居住環(huán)境的發(fā)展趨勢[1-3]。現(xiàn)代人喜愛在家或者辦公室放置一些盆栽,以達到凈化空氣、美化環(huán)境的作用。但是隨著生活節(jié)奏的加快,人們無法有效地照料家里的盆栽。為解決這類問題,可以使用智能澆花系統(tǒng),傳統(tǒng)的基于單片機設計的自動澆花系統(tǒng)大多采用蜂鳴器報警,LCD顯示溫濕度等[4-6]。考慮用戶使用的靈活性和移動性,本文用應用較為廣泛Android 移動終端代替?zhèn)鹘y(tǒng)的PC 終端,實現(xiàn)用戶使用Android移動終端對家居的盆栽實現(xiàn)環(huán)境監(jiān)測和澆花水泵控制。
本系統(tǒng)實現(xiàn)了用戶使用Android智能手機對盆栽實現(xiàn)監(jiān)測和完成自動澆水。由于不同的植物適合生長的溫濕度環(huán)境不一樣,用戶可以通過移動電話APP 設定盆栽的植物名稱和適合對應植物生長的溫度和濕度上下限值。當盆栽的土壤濕度低于它適合的濕度值時,可以選擇自動或手動模式使水泵工作,增加土壤濕度;當濕度達到該植物的濕度上限值時,Android移動終端會收到預警提示,并控制水泵停止工作。
該系統(tǒng)主要由澆花系統(tǒng)硬件設備端和移動控制端組成。系統(tǒng)架構(gòu)示意圖如圖1所示。澆花系統(tǒng)硬件設備端主要由電源電路、復位電路、單片機最小系統(tǒng)、土壤濕度電路、空氣溫濕度電路、WiFi 通信電路、繼電器驅(qū)動電路組成。移動控制端軟件為采用MVC 模式設計的Android移動APP。
圖1 系統(tǒng)總體架構(gòu)示意圖
本設計使用的STC89C52RC 單片機具有40 個引腳,采用DIP40封裝。整個系統(tǒng)包括電源電路、復位電路組成的單片機最小系統(tǒng),然后進行外圍電路的開發(fā)。土壤的濕度檢測利用YL69模塊得到濕度的模擬量,通過ADC0832模數(shù)轉(zhuǎn)換模塊將獲取的模擬量轉(zhuǎn)化成數(shù)字量傳入單片機,構(gòu)成了一個土壤濕度電路;除了土壤的濕度監(jiān)測,本系統(tǒng)還增加了空氣的溫濕度檢測功能,采用DH-11 模塊;繼電器電路只要將對應的正負極導通,控制線連接單片機的1 個I/O 口即可;1 個聯(lián)網(wǎng)的模塊,即WiFi模塊電路,只需要將對應的正負極線和數(shù)據(jù)發(fā)送/接收線相接。圖2 所示為澆花系統(tǒng)的整體架構(gòu)示意圖,程序設計如圖3所示。
圖2 澆花系統(tǒng)整體架構(gòu)硬件設計示意圖
圖3 澆花系統(tǒng)整體架構(gòu)硬件程序設計圖
單片機作為一個電子器件系統(tǒng),這里采用USB 接口提供5 V 的電源,只需將電路圖中的VCC 接到正極,GND 接到負極即可。
如圖4 所示,導線連接在XTAL1、XTAL2 和GND 間所組成的電路為時鐘電路,XTAL就是外接晶振,時鐘電路由1個晶振和2 個30 pF 的電容器組成,晶振頻率采用最常見的11.059 2 MHz,以方便設置波特率。時鐘電路在單片機執(zhí)行指令時是至關重要的,它為單片機的各部分電路的正常工作提供驅(qū)動力。
圖4 單片機最小系統(tǒng)圖
與單片機RST 引腳連接的那部分電路就為復位電路,由于給單片機RST 引腳高電平持續(xù)2 μs 就可以實現(xiàn)復位。分析復位電路,單片機剛上電時,電容充電,RST 處于高電平時間大于2 μs,單片機開始執(zhí)行程序,電容充電完畢,RST 引腳呈現(xiàn)低電平;當按鍵彈起狀態(tài)時,由于電容有隔直流作用,電路相當于開路,RST 獲得低電平。按下按鍵,電路導通,RST變成高電平,單片機復位。
本設計使用YL-69 土壤濕度傳感器,該傳感器由敏感元器件與轉(zhuǎn)化電路構(gòu)成,當外界的濕度出現(xiàn)變化時,會改變傳感器內(nèi)部元器件的電阻值,電阻值的范圍一般為0~10 kΩ。當電阻值變化,輸出電路的電壓也會跟隨變化。傳感器輸出端就是它的A0 管腳,但是輸出的是模擬量,單片機無法讀取,需要經(jīng)過A/D轉(zhuǎn)化模塊得到數(shù)字量供單片機讀取,圖5所示為該部分電路的接線。
圖5 土壤濕度模塊接線圖
空氣溫濕度電路使用DHT-11 溫濕度傳感器,DHT11 溫濕度傳感器與單片機的數(shù)據(jù)傳輸使用單總線協(xié)議,只需將2Pin 口與單片機的P3.7 口相接,并且通常需要外接一個上拉電阻。該模塊的使用電壓范圍在3.3~5 V 之間,電壓過高會導致傳感器燒壞,電壓過低導致數(shù)據(jù)傳輸丟失。該電路與單片機的接線方式如圖6所示。
圖6 空氣溫濕度模塊接線圖
圖7 WiFi模塊接線圖
考慮到本設計的可擴展性,選擇采用WiFi模塊方便將系統(tǒng)升級為具有數(shù)據(jù)中轉(zhuǎn)服務端的遠程監(jiān)控。在本設計中利用ESP8266 WiFi 模塊構(gòu)建無線AP 和Andriod 移動電話進行雙向無線通信。如圖7 所示,把ESP8266 模塊的VCC、GND、CH_PD、TX、RX 分別接單片機的 VCC、GND、3.3 V 高電平、RXD、TXD 即可,通過單片機向ESP8266 發(fā)送一系列AT指令將ESP8266配置成AP模式,即以本模塊為熱點,可實現(xiàn)移動電話連接后進行局域網(wǎng)的無線控制。
智能澆花系統(tǒng)基于Android 系統(tǒng)開發(fā)建立智能澆花APP。作為設置植物數(shù)據(jù)界面程序的開發(fā),根據(jù)面向?qū)ο蟮木幊趟枷耄?],首先需要先自定義一個植物的類,通過實例劃分該類組織數(shù)據(jù)。界面空間方面,最外圍的布局采用LinearLayout 線性布局[8],在里面放置RecyclerView 控件和一個用于增加RecyclerView 中的Item 的按鈕控件,將Item 的數(shù)據(jù)正確地適配到RecyclerView 中,需要正確編寫對應的適配器完成。數(shù)據(jù)界面如圖8所示。
硬件設備監(jiān)控界面涉及到展示的UI控件設計和基于TCP/IP的Socket通信,在Android程序設計中關于界面的UI更新需要在主線程中完成,網(wǎng)絡連接等耗時的操作不允許在主線程中執(zhí)行。因此,需要新建線程接收下位機傳輸來的空氣溫濕度和土壤濕度的數(shù)據(jù),然后使用Handle 機制在線程之間傳輸數(shù)據(jù),將數(shù)據(jù)傳到主線程,最后實現(xiàn)UI 的更新。界面如圖9所示。
圖8 APP植物數(shù)據(jù)界面圖
圖9 APP植物監(jiān)控界面圖
在 澆花APP 中加入植物數(shù)據(jù)增刪功能,可以對不同的植物設置不同的溫濕度上、下限值。設計自定義對話框,以相對布局作為最外層,里面添加對應數(shù)值的存放編輯框,在最下方添加“取消”和“確定”的按鈕。自定義對話框如圖10所示。
本設計在Android客戶端中使用Socket套接字基于TCP/IP協(xié)議進行開發(fā),即通信采用TCP方式,需要用到Streamsocket這個對象。客戶端代碼中首先給定IP 地址和端口2 個參數(shù),初始化1 個Socket 對象。獲取到Socket 對象實例后通過isConnected()方法查看是否成功連接到服務器。建立通信前需要先獲取Socket實例的流對象,然后通過I/O流操作把輸入流的數(shù)據(jù)讀取出來進行相應的處理,里面的數(shù)據(jù)就是服務器端傳過來的數(shù)據(jù)。如果是發(fā)數(shù)據(jù)給服務器則需創(chuàng)建輸出流對象,通過輸出流的write()方法發(fā)送數(shù)據(jù),之后記得使用flash()方法刷新數(shù)據(jù)。通信結(jié)束還需要關閉Socket實例和流對象。
由于Android系統(tǒng)中不允許將網(wǎng)絡請求等耗時的操作在主線程中執(zhí)行,當想要連接服務器的時候就需要創(chuàng)建一個新的線程,在里面執(zhí)行網(wǎng)絡請求,然后通過線程間的通信將得到的數(shù)據(jù)返回到主線程。
圖10 APP數(shù)據(jù)增刪對話框圖
本智能澆花系統(tǒng)可以對盆栽植物的土壤的濕度及空氣溫濕度進行實時監(jiān)測,用戶通過Android移動電話APP可以選擇自動或手動工作模式,控制水泵工作,按時按需完成澆水工作。在澆花APP 中用戶可以添加、刪除盆栽植物名稱,通過APP設定各個盆栽植物的溫濕度閾值。
本系統(tǒng)以單片機為下位機對硬件模塊進行控制,以Android 智能手機作為上位機易于使用且方便。本設計成本低、實用性強、可拓展性高,本文的設計思想可應用在水果等其他作物灌溉的自動化處理。