APP下载

基于Android控制的智能浇花系统设计*

2020-08-26梁健权于凤梅冯粤松

机电工程技术 2020年7期
关键词:土壤湿度盆栽温湿度

梁健权,于凤梅,冯粤松

(1.仲恺农业工程学院自动化学院,广州 510225;2.广东广信通信服务有限公司,广州 510005)

0 引言

随着科技的日益发展,人们的衣食住行愈加的智能化,智能家居这一概念意在提高人们的生活水平,自出现以来就广受市场青睐,必定是未来人们居住环境的发展趋势[1-3]。现代人喜爱在家或者办公室放置一些盆栽,以达到净化空气、美化环境的作用。但是随着生活节奏的加快,人们无法有效地照料家里的盆栽。为解决这类问题,可以使用智能浇花系统,传统的基于单片机设计的自动浇花系统大多采用蜂鸣器报警,LCD显示温湿度等[4-6]。考虑用户使用的灵活性和移动性,本文用应用较为广泛Android 移动终端代替传统的PC 终端,实现用户使用Android移动终端对家居的盆栽实现环境监测和浇花水泵控制。

本系统实现了用户使用Android智能手机对盆栽实现监测和完成自动浇水。由于不同的植物适合生长的温湿度环境不一样,用户可以通过移动电话APP 设定盆栽的植物名称和适合对应植物生长的温度和湿度上下限值。当盆栽的土壤湿度低于它适合的湿度值时,可以选择自动或手动模式使水泵工作,增加土壤湿度;当湿度达到该植物的湿度上限值时,Android移动终端会收到预警提示,并控制水泵停止工作。

1 系统总体设计

该系统主要由浇花系统硬件设备端和移动控制端组成。系统架构示意图如图1所示。浇花系统硬件设备端主要由电源电路、复位电路、单片机最小系统、土壤湿度电路、空气温湿度电路、WiFi 通信电路、继电器驱动电路组成。移动控制端软件为采用MVC 模式设计的Android移动APP。

图1 系统总体架构示意图

2 硬件电路及程序设计

本设计使用的STC89C52RC 单片机具有40 个引脚,采用DIP40封装。整个系统包括电源电路、复位电路组成的单片机最小系统,然后进行外围电路的开发。土壤的湿度检测利用YL69模块得到湿度的模拟量,通过ADC0832模数转换模块将获取的模拟量转化成数字量传入单片机,构成了一个土壤湿度电路;除了土壤的湿度监测,本系统还增加了空气的温湿度检测功能,采用DH-11 模块;继电器电路只要将对应的正负极导通,控制线连接单片机的1 个I/O 口即可;1 个联网的模块,即WiFi模块电路,只需要将对应的正负极线和数据发送/接收线相接。图2 所示为浇花系统的整体架构示意图,程序设计如图3所示。

图2 浇花系统整体架构硬件设计示意图

图3 浇花系统整体架构硬件程序设计图

2.1 单片机最小系统

单片机作为一个电子器件系统,这里采用USB 接口提供5 V 的电源,只需将电路图中的VCC 接到正极,GND 接到负极即可。

如图4 所示,导线连接在XTAL1、XTAL2 和GND 间所组成的电路为时钟电路,XTAL就是外接晶振,时钟电路由1个晶振和2 个30 pF 的电容器组成,晶振频率采用最常见的11.059 2 MHz,以方便设置波特率。时钟电路在单片机执行指令时是至关重要的,它为单片机的各部分电路的正常工作提供驱动力。

图4 单片机最小系统图

与单片机RST 引脚连接的那部分电路就为复位电路,由于给单片机RST 引脚高电平持续2 μs 就可以实现复位。分析复位电路,单片机刚上电时,电容充电,RST 处于高电平时间大于2 μs,单片机开始执行程序,电容充电完毕,RST 引脚呈现低电平;当按键弹起状态时,由于电容有隔直流作用,电路相当于开路,RST 获得低电平。按下按键,电路导通,RST变成高电平,单片机复位。

2.2 土壤湿度模块电路

本设计使用YL-69 土壤湿度传感器,该传感器由敏感元器件与转化电路构成,当外界的湿度出现变化时,会改变传感器内部元器件的电阻值,电阻值的范围一般为0~10 kΩ。当电阻值变化,输出电路的电压也会跟随变化。传感器输出端就是它的A0 管脚,但是输出的是模拟量,单片机无法读取,需要经过A/D转化模块得到数字量供单片机读取,图5所示为该部分电路的接线。

图5 土壤湿度模块接线图

2.3 空气温湿度模块

空气温湿度电路使用DHT-11 温湿度传感器,DHT11 温湿度传感器与单片机的数据传输使用单总线协议,只需将2Pin 口与单片机的P3.7 口相接,并且通常需要外接一个上拉电阻。该模块的使用电压范围在3.3~5 V 之间,电压过高会导致传感器烧坏,电压过低导致数据传输丢失。该电路与单片机的接线方式如图6所示。

图6 空气温湿度模块接线图

图7 WiFi模块接线图

2.4 WiFi模块

考虑到本设计的可扩展性,选择采用WiFi模块方便将系统升级为具有数据中转服务端的远程监控。在本设计中利用ESP8266 WiFi 模块构建无线AP 和Andriod 移动电话进行双向无线通信。如图7 所示,把ESP8266 模块的VCC、GND、CH_PD、TX、RX 分别接单片机的 VCC、GND、3.3 V 高电平、RXD、TXD 即可,通过单片机向ESP8266 发送一系列AT指令将ESP8266配置成AP模式,即以本模块为热点,可实现移动电话连接后进行局域网的无线控制。

3 Android程序设计

3.1 APP植物数据界面

智能浇花系统基于Android 系统开发建立智能浇花APP。作为设置植物数据界面程序的开发,根据面向对象的编程思想[7],首先需要先自定义一个植物的类,通过实例划分该类组织数据。界面空间方面,最外围的布局采用LinearLayout 线性布局[8],在里面放置RecyclerView 控件和一个用于增加RecyclerView 中的Item 的按钮控件,将Item 的数据正确地适配到RecyclerView 中,需要正确编写对应的适配器完成。数据界面如图8所示。

3.2 硬件设备监控界面

硬件设备监控界面涉及到展示的UI控件设计和基于TCP/IP的Socket通信,在Android程序设计中关于界面的UI更新需要在主线程中完成,网络连接等耗时的操作不允许在主线程中执行。因此,需要新建线程接收下位机传输来的空气温湿度和土壤湿度的数据,然后使用Handle 机制在线程之间传输数据,将数据传到主线程,最后实现UI 的更新。界面如图9所示。

图8 APP植物数据界面图

图9 APP植物监控界面图

3.3 数据增删对话框

在 浇花APP 中加入植物数据增删功能,可以对不同的植物设置不同的温湿度上、下限值。设计自定义对话框,以相对布局作为最外层,里面添加对应数值的存放编辑框,在最下方添加“取消”和“确定”的按钮。自定义对话框如图10所示。

3.4 Socket通信实现

本设计在Android客户端中使用Socket套接字基于TCP/IP协议进行开发,即通信采用TCP方式,需要用到Streamsocket这个对象。客户端代码中首先给定IP 地址和端口2 个参数,初始化1 个Socket 对象。获取到Socket 对象实例后通过isConnected()方法查看是否成功连接到服务器。建立通信前需要先获取Socket实例的流对象,然后通过I/O流操作把输入流的数据读取出来进行相应的处理,里面的数据就是服务器端传过来的数据。如果是发数据给服务器则需创建输出流对象,通过输出流的write()方法发送数据,之后记得使用flash()方法刷新数据。通信结束还需要关闭Socket实例和流对象。

由于Android系统中不允许将网络请求等耗时的操作在主线程中执行,当想要连接服务器的时候就需要创建一个新的线程,在里面执行网络请求,然后通过线程间的通信将得到的数据返回到主线程。

图10 APP数据增删对话框图

4 结束语

本智能浇花系统可以对盆栽植物的土壤的湿度及空气温湿度进行实时监测,用户通过Android移动电话APP可以选择自动或手动工作模式,控制水泵工作,按时按需完成浇水工作。在浇花APP 中用户可以添加、删除盆栽植物名称,通过APP设定各个盆栽植物的温湿度阈值。

本系统以单片机为下位机对硬件模块进行控制,以Android 智能手机作为上位机易于使用且方便。本设计成本低、实用性强、可拓展性高,本文的设计思想可应用在水果等其他作物灌溉的自动化处理。

猜你喜欢

土壤湿度盆栽温湿度
土壤湿度传感器在园林绿化灌溉上的应用初探
基于随机权重粒子群优化极限学习机的土壤湿度预测
基于AT89C51的数字型蚕用温湿度计的设计
仙人掌盆栽
基于DSP的多路温湿度监测系统
基于51单片机控制花盆土壤湿度
盆栽
贵州喀斯特区域土壤湿度变化规律研究
基于温湿度控制的天气预测装置
“丑八怪”的盆栽