返回主站|会员中心|保存桌面|手机浏览

《科技资讯》杂志

杂志等级
    期刊级别:国家级期刊 收录期刊:知网收录(中) 维普收录(中) 万方收录(中) 国家图书馆馆藏 上海图书馆馆藏
本刊往期
站内搜索
 
友情链接
  • 暂无链接
首页 > 杂志论文 > 基于Android系统的农业大棚温湿度实时控制系统
杂志文章正文
基于Android系统的农业大棚温湿度实时控制系统
发布时间:2018-12-03        浏览次数:76        返回列表

江帆

摘 要:智能农业是体现当前我国农业信息化水平的重要依据之一。智能农业主要是进行温室大棚的设置,我国地域辽阔,气候复杂,采用温室大棚进行蔬菜、花卉等栽培,对缓解蔬菜淡季的供求矛盾起到了关键的作用,具有显著的社会效益和现实的巨大的经济效益。在栽培的过程中,需要实时采集大棚内的温度、湿度、光照、土壤温度、土壤水分等环境参数,根据农作物生长需求进行实时智能决策,并自动开启或关闭指定的环境调节设备,使农作物能够正常生长,以满足人们的日常生活需求。该文基于上述背景,阐述了基于Android系统的农业大棚温湿度实时控制系统的设计与开发。

关键词:Android 线程 消息 ZigBee

中图分类号:TP391.9 文献标识码:A 文章编号:1672-3791(2017)07(b)-0016-02

1 系统概述

该项目主要采用Android多线程技术,结合Handler-Message消息处理机制,实时更新UI界面。农业大棚中的温湿度传感器是通过ZigBee模块连接的,风扇是通过串口连接的。ZigBee温湿度传感器实时检测农业大棚中的温度和湿度,将数量实时显示在Android端程序界面中,当大棚中的温度和湿度过高时,打开风扇降温、抽湿。

2 关键技术

在该项目中,主要采用了多线程技术和消息处理机制。

2.1 Android多线程技术

在Android系统中,每个线程完成一个任务,并与其他线程同时执行,这种机制称为多线程。在Android系统中,可以创建线程、开启线程、线程休眠和中断线程。Android系统通过两种方式创建线程,一是通过Thread类创建线程;二是通过实现Runnable接口创建线程。

在一个类中实现了Runnable接口函数以后,接下来是实现其run()方法,在run()方法中,编写要执行操作的代码。

2.2 使用Handler传递消息

Android系统中使用Handler-Message消息传递机制更新主线程的UI步骤如下。

(1)在主线程的Activity中创建Handler对象,并重写handleMessage(Message msg)方法。代码如下:

Handler mHandler = new Handler(){

public void handleMessage(android.os.Messagemsg){

switch(msg.what){

case 0 ://对温度值进行操作

case 1://对湿度值进行操作

}};};

(2)在新线程中使用主线程创建的Handler对象,调用它的发送消息方法向主线程发送消息。代码如下。

mHandler.sendMessage(mMsg);

(3)利用Handler对象的handleMessage(Message msg)方法接收消息,然后根据obj的不同取值执行不同的业务逻辑。

3 实现农业大棚温湿度自动控制

(1)按照实际需求,连接好ZigBee温度和湿度传感器模块,并连接好风扇模块。

(2)在Android Studio中新建一个项目,命名为wisearg。

(3)在项目工程中新建一个java文件,命名为basePort.java,用于定义端口基类,打开ZigBee的四个输入串口,定义openZigBeePort方法,打开ZigBee端口,代码如下。

public class basePort {

publicintopenZigBeePort(intcom,intmode,intbaudRate){

ZigbeeAnalogHelper.com =ZigBeeAnalogServiceAPI.openPort(com, mode, Rate);

return ZigbeeAnalogHelper.com; }

}

(4)新建closeZigBeePort()方法用于关闭四个串口,代码如下:

public void closeZigBeePort(){

ZigBeeAnalogServiceAPI.closeUart();}

(5)实例化一个线程对象,每隔1 s更新一次温度和湿度的数值。

Thread thread = new Thread(new Runnable(){

public void run()

{

while(!thread.currentThread().isInterrupted()){

Message message = Message.obtain();

message.what = 0x11;

handler.sendMessage(message);

Thread.sleep(1000);

}

}

});

(6)定義handleMessage函数,用于处理温度、湿度大于一定数值时,打开风扇。

public void handleMessage(Message msg){

switch(msg.what){

case 0 ://对温度值进行操作

String mTempData = (String)msg.obj;

mTemp.setText(“温度感应:” + mTempData + “℃”);

if(Double.parseDouble(mTempData) >mSetTemp) //检测温度高于设定值

mADAM4150.openFan1();//打开风扇

break;

case 1 ://对湿度值进行操作

String mHumiData = (String)msg.obj;

mHumi.setText(“湿度感应:” + mHumiData + “℃”);

if(Double.parseDouble(mHumiData) >mSetHumi) //检测湿度高于设定值

mADAM4150.openFan1();//打开风扇

break;

}

}

运行程序,点击开启按钮,程序实时更新大棚内温度和湿度的数值,并控制风扇的开启与关闭。

4 结语

智能农业系统中的环境数据以无线传感器技术为基础,实现对农业生产环境的监测和逻辑控制。在该系统中,需要使用ZigBee协调器模块、ZigBee继电器模块、ZigBee温度传感器在、ZigBee湿度传感器。通过采用高灵敏度传感器,结合Android系统中多线程技术和消息发送机制,实现显示农业环境中的温度和湿度的控制。

参考文献

[1] 亓妍妍,李佳,朱维杰.基于Android系统的无线教学终端设计[J].科技创新导报,2013(12):150-151.

[2] 蒋德荣. 基于Android平台的教学辅助平台框架设计研究[J]. 科技广场,2014(5):67-71.

[3] 彭登峰,韩梅,周路,等.Android终端软件在嵌入式系统辅助教学中的应用[J].计算机教育,2014(22):75-78.

[4] 王震,于文波,徐立波,等.基于Android平台的电工实验综合管理系统研究[J].洛阳师范学院学报,2015(11):52-54.

[5] 李惠杨,凌雪.基于翻转课堂和任务驱动的Android教学设计的研究[J].福建电脑,2016(5):64-65.