基于Android 平台的家庭植物工厂智能监控系统

   2015-04-10 新兴产业战略智库15810
核心提示:随着人们生活品质的提高,家庭植物工厂受到越来越多的关注。为此,设计了一种以LED 光源模拟太阳光的人工光型密闭式家庭植物工厂。
 随着人们生活品质的提高,家庭植物工厂受到越来越多的关注。为此,设计了一种以LED 光源模拟太阳光的人工光型密闭式家庭植物工厂。为了使该家庭植物工厂能够为作物提供适宜的生长环境,并且能够实现远程智能监控,设计并实现了一种基于Android 平台的智能监控系统。
 
引言
 
近年来,由于LED 技术和植物工厂的发展,LED光源在植物工厂中的应用受到越来越多的关注。植物工厂作为国际上公认的设施农业的最高级发展阶段,由于受自然条件影响小、无污染、自动化程度高、多层次立体栽培可以节省大量土地、作物生长周期可控等优点,代表着未来农业的发展方向。其中,全人工光型密闭式植物工厂通过对环境因素的适度控制,能够为作物提供更适宜、更可控、更清洁的生长环境,是植物工厂发展的一个重要模式。LED光源具有体积小、寿命长、使用直流电、低发热量及光质可调等优点,被认为是全人工光型植物工厂的一种理想光源,并且在国内外的很多植物工厂研究中都有所应用。
 
目前,植物工厂主要沿着适用于工厂化生产的大型植物工厂和适用于家庭的微型植物工厂两个方向发展。日本、荷兰、美国等发达国家在这两个方向都基本实现了产业化;国内对植物工厂相关技术的研究起步较晚,但近几年也取得了一些显著成果。
 
随着人们生活品质不断提高,绿色、健康、智能的家庭植物工厂将有很大的市场空间,将互联网、移动终端和智能控制结合起来是家庭植物工厂发展的一个趋势。基于对这种趋势的判断,本文设计了一种使用LED 光源的全人工光型密闭式家庭植物工厂,并为该家庭植物工厂开发了一套基于Android 平台的智能监控系统。
 
1 系统整体设计
 
LED 家庭植物工厂
 
LED 家庭植物工厂的二维尺寸如图1 所示。它分4 层:底层用于放置营养液箱体、营养液循环泵等装置;顶层用于放置电源模块、显示模块及驱动电路模块等;中间两层(下文简称为种植空间) 用于种植作物,每层的顶端都装有LED 灯板,底部都放置着盛放营养液的培养槽。LED 灯由直流驱动模块直接驱动,通过外接PWM 控制信号,可以实现对LED 灯亮度的调节。为了保证种植空间的环境不受外界环境的影响,在植物工厂正常种植期间,中间两层的门处于关闭状态,即形成两个与外界隔离的独立种植空间。

 监控系统功能设计
 
植物生长主要是依靠光合作用,而影响光合作用的环境因素主要是温度、湿度、二氧化碳浓度及光照强度等。为了使上述家庭植物工厂能够为作物提供更加适宜的生长环境,需要对种植空间的温度、湿度、二氧化碳浓度和LED 灯亮度进行监测与控制,以使作物根部的营养液进行适当的循环。同时,为了使系统具有较好的人机交互性,种植空间的环境参数需要实时显示出来,且历史数据能够被查询和导出。为使种植空间的状态信息能从远程进行访问和设置,系统需要具有网络连接功能。综上所述,监控系统的功能框架如图2 所示。
1监控系统功能设计
图1 LED 家庭植物工厂的二维尺寸图
 2监控系统的功能框架图
图2 监控系统的功能框架图
 
由于Android 操作系统在嵌入式设备上的应用越来越成熟,基于Android 平台的应用程序具有非常好的人机交互体验,因此本监控系统选择基于Android平台进行应用开发。Android 应用程序负责定时采集种植空间的环境参数并实时显示,根据设置的参数阈值和相关算法驱动相应的执行机构对环境参数进行有效控制;同时,应用程序提供历史数据查询和导出功能,并且能够通过网络与远程的应用服务器进行通信,使用户能够对本地监控系统的状态进行远程访问和设置。
 
2 硬件平台的搭建
 
为了实现监控系统的上述功能,首先需要在LED家庭植物工厂现有的硬件基础上,搭建一个更完善的硬件平台,主要包括选择系统核心开发板、选用合适的环境参数( 主要是温度、湿度、二氧化碳浓度) 传感器、设计并实现种植空间的降温和空气循环系统、设计并实现种植空间的二氧化碳供给系统及选用合适的网络接入模块。搭建好的监控系统硬件平台框架如图3 所示。
3监控系统的硬件平台框架
图3 监控系统的硬件平台框架
 
考虑到系统硬件接口的需求、Android 操作系统的搭载和人机交互的便利性,选用TINY210 开发套件作为系统的核心控制硬件。Tiny210 开发套件由开发底板、核心板和7 寸LCD 电容触摸显示屏组成,是一款高性能的Cortext - A8 核心板。其板载512M DDR2 内存和1G Flash 存储,采用S5PV210 作为主处理器,运行主频可高达1GHz,可流畅运行Android、Linux 和WinCE6 等高级操作系统。
 
由于植物工厂的种植空间较小,因此监测温度、湿度和二氧化碳浓度的传感器体积不能太大,综合测量范围和测量精度的考虑,温度传感器选用DS18B20,湿度传感器选用HIH - 4000 - 001,二氧化碳浓度传感器选用WSH - 300 - ND。为了对种植空间的环境参数分布情况有充分的了解,每层种植空间放置4 个温度传感器、2 个湿度传感器和1 个二氧化碳浓度传感器。为了实现系统的网络连接,考虑到TINY210 开发板提供的USB 接口以及WIFI 连接在家庭环境中的普遍性,选用型号为EP - N8508 的USB -WIFI 模块作为系统的网络接入模块。
 
由于LED 光源产生的热量在密闭空间内会逐步累积,为了控制种植空间的温度,同时使种植空间内的空气能循环流动,在上述人工光型LED 培菜柜的基础上,增加降温和空气内循环系统,如图3 所示。它由压缩机、冷凝器、毛细管和蒸发器组成一个小型的降温系统,空气在风道内左右两个风扇的推拉作用下,在种植空间、风道和蒸发器之间循环流动,以实现空气温度的有效调节。为了保证种植空间内空气充分流动和温度分布尽量均匀,种植空间内的进风口位置比出风口位置稍高。同时,为了实现种植空间的密封性,在种植空间的内壁加装了一层绝热材料。
为了对种植空间的二氧化碳浓度进行有效的补充,增加二氧化碳供给系统。二氧化碳供给系统由二氧化碳钢瓶、减压阀、流量计、电磁阀和供气管道组成。CO2气体由钢瓶经减压阀、流量计、电磁阀,施放到上述空气循环系统的送风管道中,最后由送风机将气体送入密闭的种植空间。
 
4降温和空气循环系统示意图
图4 降温和空气循环系统示意图
 
3 软件的设计与实现
 
开发方案设计
 
监控系统的软件开发采用在S5PV210 微处理器上移植Android 操作系统,再在Android 操作系统上进行应用程序开发的模式。Android 操作系统是基于Linux 内核构建的,其应用程序运行在用户空间,对硬件直接进行操作的设备驱动程序运行在内核空间。Android 应用程序要对硬件进行操作,必须首先在Linux 内核开发相应的设备驱动程序,然后由应用程序通过预定义的系统调用间接访问驱动程序代码。由于本监控系统涉及对多种环境参数传感器和硬件执行机构的操作,所以系统的软件开发主要分为两部分:首先是在Linux 内核开发各种环境参数传感器和硬件执行机构的驱动程序,构造符合应用程序需求的Android 操作系统;然后是基于Android 操作系统进行应用程序开发。
 
Linux 内核驱动模块开发
 
本系统涉及的硬件操作包括读取温度传感器(DS18B20)、湿度传感器(HIH - 4000 - 001) 和二氧化碳浓度传感器(WSH - 300 - ND) 的监测值;调节PWM 信号输出的占空比以控制LED 灯的亮度;驱动继电器动作以控制营养液泵、风道风扇、空调压缩机和二氧化碳补给系统电磁阀的工作状态;利用USB -WIFI 模块(EP - N8508)连接网络。
 
其中,DS18B20 是单总线的数字温度计,每层种植空间只需要用一个GPIO 口接出一根总线,就可以连接该层所有的温度传感器。DS18B20 的驱动程序非常成熟,只要将其移植到Linux 内核,再根据Linux设备驱动程序的特定数据结构稍作调整即可。HIH -4000 - 001 是输出模拟量的湿度传感器,将每个湿度传感器分别连接在Tiny210 开发板AD 转换模块的一个通道上,再对AD 转换模块的驱动程序根据HIH -4000 - 001 湿度传感器的AD 转换公式进行调整即可。WSH - 300 - ND 是TTL 电平串口输出的二氧化碳浓度传感器,其输出数据可以用Tiny210 开发板的UART 接口直接接收,可以直接调用系统库文件中提供的串口驱动程序。Tiny210 开发板有4 路PWM 输出,选用其中两路PWM 输出分别作为上下两层种植空间的LED 灯控制信号。PWM 输出的驱动程序主要是编写对其占空比和频率进行控制的子函数;对继电器的驱动只是通过GPIO 口直接输出高低电平信号来驱动相应驱动电路工作。因此,对应的驱动程序只是一个最简单的GPIO 口设备驱动。Tiny210 开发板自带的Linux 内核已经包含了众多USB 无线网卡驱动(EP - N8508 的驱动模块也已经包含在其中) ,但实际文件系统中采用的是第三方无线网卡驱动模块,因此需要更改Linux 内核和Android 源代码的相关配置文件,正确编译后即可调用EP - N8508 的驱动模块进行网络连接。
 
对上述设备驱动程序的开发,先采用动态加载的方式来调试,所有的驱动模块都调试通过后,再以静态加载的方式统一编译进内核。为了使新开发的设备驱动模块能够被应用程序调用,需要在Android 根文件系统的int. rc 文件中增加对新开发的设备驱动模块权限的管理,使应用程序对相应模块具有读写权限。这些工作都完成后,就可以将生成的Linux 内核映像文件和Android 根文件系统映像文件与相关的配置文件一起,在引导程序的引导下烧写到开发板中。这样,符合应用开发需求的Android 操作系统就构造好了,接下来就可以进行Android 应用程序开发了。
 
Android 应用程序开发
 
Android 应用程序开发在Eclipse 集成开发环境下进行。由于应用程序需要对底层硬件进行操作,所以在构建应用程序编译环境时,需要为工程属性额外配置一个编译器(Builder) ,把JAVA NDK 和Cygwin 配置为工程的编译环境,从而使工程能对C 文件进行编译并生成可供Java 代码调用的库文件。在正常建立Android工程后,在工程目录中新建一个JNI 文件夹,在该文件夹下新建一个C 源程序文件和一个Android.mk 文件。其中,C 源程序利用Linux 系统调用对硬件驱动模块相应功能进行调用,并为Java 代码提供本地接口;Android. mk 文件规定C 源程序编译后生成的库文件名称和类型。在其后的Android 应用Java 开发中,需要对硬件进行操作时,只要调用库文件中相应的本地方法即可。
 
Android 应用程序主要有实时监控、系统设置和历史数据3 个模块,程序采用SQLite 数据库作为数据存储工具。SQLite 是一种开源的轻量级嵌入式关系数据库,占用空间非常少、运行高效可靠、可移植性好,并且提供零配置运行模式,所以比传统的数据库更加适用于嵌入式系统。应用程序的框架如图5 所示。
5应用程序框架图
图5 应用程序框架图
 
实时监控模块
 
实时监控模块定时读取温度传感器、湿度传感器和二氧化碳浓度传感器的监测值,将读取的数据存入SQLite 数据库并实时显示在监测界面;同时,将读取的实际数值与设置的参考阈值进行比较,决定是否开启(或关闭) 相应的执行机构。对于每一层种植空间的温度控制:当从该层4 个温度传感器读取到的温度的平均值大于或等于设置的温度上限时,系统开启空调压缩机,使种植空间的空气流经蒸发器时降温;当温度平均值小于或等于设置的温度下限时,系统关闭空调压缩机,或者当空调压缩机连续工作超过30min时,系统也关闭空调压缩机。这样做一方面是为了保护压缩机,另一方面是因为压缩机工作时间过长,蒸发器会结冰,实际降温效果会下降。对于每一层种植空间的二氧化碳浓度控制,由于二氧化碳气体从进入通风管道到实际影响种植空间的二氧化碳浓度之间存在一定的时延,所以当二氧化碳浓度监测值低于设置的上限值与下限值之和的一半时,系统开始补给二氧化碳,并持续补给2s,以使种植空间的实际二氧化碳浓度维持在设置的上限值和下限值之间。
 
实时监控模块主要由一个实时监测界面和一个后台服务组成。其中,监测界面负责实时显示两层种植空间的温度、湿度、二氧化碳浓度、本时段对应的环境参数(温度、二氧化碳浓度和LED 亮度) 的设置范围、营养液循环泵工作状态和制冷系统工作状态;后台服务负责打开传感器等驱动模块对应的设备文件,从数据库加载上次关闭应用程序时保存的系统设置参数,根据这些系统设置参数初始化执行机构状态并将其显示到实时监测界面。最后,开启一个实时监控线程,对种植空间的环境参数进行等时间间隔的监控。实时监控线程是实时监控模块的核心,其具体运行流程如图6 所示。
6实时监控线程流程图
图6 实时监控线程流程图
 
系统设置模块
 
系统设置模块负责对两层种植空间的温度范围、二氧化碳浓度范围和LED 灯亮度进行分时段的独立设置,可以根据实际需要,将这些环境参数在24h 区间内根据时间段细分为多个不同的范围( 或值)。每个环境参数的设置确定后,系统会为其单独开启一个定时器(Timer) 线程,该线程负责在指定时刻更新该环境参数的范围(或值),并将更新后的值显示在实时监测界面。对于温度和二氧化碳浓度,更新后的范围提供给实时监控线程作为参数控制时的参考; 对于LED 灯亮度,更新后的值直接通过驱动模块传递给PWM 输出口,以调整LED 灯的亮度。出于对系统调试和维护的考虑,系统设置模块提供自动和手动两种工作模式,系统默认选择自动工作模式。在自动工作模式下,程序根据设置的时间段和范围值对培菜柜种植空间的温度、二氧化碳浓度和LED 灯亮度进行自动控制,不能手动开启制冷系统或二氧化碳输入; 在手动工作模式下,可以手动调整LED 灯的亮度和开启制冷系统与二氧化碳输入,但不能设置温度范围和二氧化碳浓度范围,因为即使设置了也不能实现自动控制。系统设置模块可以设置营养液循环泵的状态、风道风扇的状态,可以设置实时监控模块监控环境参数的时间间隔,可以在需要的时候从数据库中加载系统的默认设置参数,使系统恢复到原始设置状态。
 
历史数据模块
 
历史数据模块能够根据选定的日期、查询对象(温度、湿度或二氧化碳浓度) 和位置信息( 上层或下层)查询SQLite 数据库中存储的特定历史数据;利用AChartEngine 工具库将得到的历史数据以折线图的形式显示在历史数据界面,或者将得到的历史数据以文件的形式直接导出到USB 外部存储设备。
 
AChartEngine是为Android 应用开发而设计的绘图工具库,可用于绘制各种图表,如折线图、点状图及面积图等。
 
远程监控的实现
 
在应用程序的实时监控模块和系统设置模块中,都嵌入有网络连接功能。当实时监控线程采集到了新的环境状态参数,或者系统设置模块对系统参数进行了重新设置时,都会利用HttpClient 接口方法将更新的数据上传到中心应用服务器,服务器端应用程序将接收到的数据保存在数据库中并对http 请求做出确认响应。当服务器端应用程序对植物工厂的系统参数进行了重新设置后,通过第三方( 极光推送) 提供的实时推送服务将数据推送到植物工厂的Android 监控系统。中心应用服务器是项目组在LED 植物工厂的专用监控服务器,服务器端应用程序采用Java Web架构提供远程监控服务,并为LED 家庭植物工厂提供了监控接口,只要能连接上网络,在PC 端或移动客户端都可以通过WEB 浏览器查看LED 家庭植物工厂的实时监控状态;获得特定权限后,还可以对LED 家庭植物工厂的设置参数进行远程调整。远程监控的实现如图7 所示。
 
7远程监控的实现
图7 远程监控的实现
 
4 系统运行情况
 
将培育好的生菜幼苗移植到种植空间里,由该智能监控系统模拟自然环境,为作物提供不同生长阶段所需要的空气温度、二氧化碳浓度、光照强度和营养液条件,经过25 天的培育,生菜即达到采摘要求。这说明,本文所设计的智能监控系统能够在以LED 光源模拟太阳光的全人工环境下,为作物提供满足要求的生长环境,并且通过对环境参数的合理设置,可以大大缩短作物的种植周期。系统运行时的部分软件界面截图如图8 所示。
图8 系统运行时的部分软件界面截图
 
5 结论
 
设计了一种使用LED 光源的全人工光型密闭式家庭植物工厂,并为该家庭植物工厂设计和实现了一套基于Android 平台的智能监控系统。该监控系统不仅可以为作物提供满足要求的生长环境,还可以通过对环境参数的合理设置,缩短作物的种植周期。同时,通过网络连接,该系统将本地监控与远程监控结合起来,实现了家庭植物工厂的远程移动控制。该监控系统的成功研制为LED 家庭植物工厂快速进入市场奠定了基础。
 
举报收藏 0评论 0
 
更多>同类资讯
  • system
    加关注0
  • 没有留下签名~~
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系我们  |  使用协议  |  隐私政策  |  网站地图  |  排名推广  |  RSS订阅  |  违规举报