引言
传统农业需要消耗大量的劳动力,生产效率低,急需要向现代农业的转变。温室技术作为现代农业的重要代表将作物的生长从自然环境独立出来,形成一个可以进行人工控制的半封闭系统。我国从20世纪90年代开始向温室技术发达的荷兰、美国等国学习,但是由于我国农业生产条件与国外情况不同,不能直接照搬国外的模式,而需要研发适合我国各地区生产条件的温室控制系统。
针对上述情况设计了一套温室的远程监测和控制系统。由于在各个环境因素中,空气温湿度对作物的生长具有较大的影响,所以系统选择对温室内空气温湿度进行监测和控制。传统的51系列单片机控制系统运算能力以及功能扩展能力差,PLC控制系统成本太高,所以选择了外设丰富、扩展性强以及成本较低的STM32单片机作为温室内的控制器。
1、系统总体设计
文中开发了一套基于STM32的温室远程监测和控制系统。通过利用STM32单片机作为温室内的控制器以及MFC编写的远程控制软件可以实现对温室内温湿度远程监测和控制。在STM32控制器设计中加入ENC28J60模块,使控制器可以接入网络,同时在STM32的程序设计中移植LwIP协议,使控制器可以通过TCP/IP协议与远程控制软件进行数据通信。
STM32控制器直接控制DHT11传感器和继电器模块,DHT11负责测量温室内温湿度,继电器模块负责控制温室内的加热系统和湿帘系统,改变温室内的温湿度。在VC6.0平台下利用MFC设计了简单易用的远程控制界面,可以远程监测温室内的温湿度,并对温室内设备进行控制,将控制过程中产生的数据保存到数据库中,系统整体框架如图1所示。
图1系统整体框图
2、系统硬件设计
2.1、核心处理器的选择
STM32具有丰富的外围设备,内置64K的静态RAM和512K字节的闪存存储器,多达112个GPIO端口,可以按要求配置成输入或输出各四种模式,共有7路通用DMA,负责存储器之间以及存储器和外设之间的直接数据传输,内嵌3个12位的模拟/数字转换器,1条I2C总线连接控制器和外围设备,2条SPI总线,负责一个主设备和多个从设备之间进行数据交换,可以外接以太网接口,3个USART串口,1个SDIO接口进行存储器扩展以及1个JTAG接口可以用于连接计算机进行程序调试。
2.2、温湿度传感器的选择
对于温室内的空气温湿度测量,本系统采用的是DHT11传感器。DHT11中集成了数字采集模块,包括1个测温元件和1个电阻式感湿元件,它的抗干扰能力强、价格便宜、体积小、功耗低,使用方便,工作电压为3.5V。其主要参数如表1所示。
DHT11采用的是单总线数据格式,可以通过一个引脚进行数据的发送和命令的接收,本次设计采用STM32的GPIO_Pin_7引脚来连接DHT11。在STM32中央控制器向DHT11发送开始信号以后,DHT11从低功耗模式唤醒,进入高速模式状态,并对STM32的开始信号进行响应,双方确认以后,DHT11把测得的数据封装在数据包中发送到STM32控制器,发送完以后会触发采集信号继续进行数据的采集。在STM32中央控制器向DHT11发送结束信号后,DHT11停止测量数据,重新进入低功耗模式,DHT11和STM32之间通信一次的时间最大为3ms左右。
2.3、继电器模块的设计
设计中执行设备的状态是“二位”形式,即只有“打开”和“关闭”2种状态,可以通过继电器进行控制。本次设计采用的是电磁继电器,型号为欧姆龙G2R-1A-E。电磁继电器的组成部分有铁芯、线圈、衔铁和簧片,利用电磁效应通过在线圈两端加电压产生电流继而产生电磁力,对衔铁产生吸引力,控制开关。本次设计为每个执行设备连接一个电磁继电器。
2.4、网络接口设计
设计中采用STM32外接以太网控制器ENC28J60与远程控制软件进行通信。ENC28J60是美国微芯科技公司开发的,共有28个引脚,体积小、使用方便,价格便宜[9]。该芯片带有SPI接口,可以通过SPI接口与STM32控制器进行连接。ENC28J60的工作频率是25MHz,工作电压为3.3V。ENC28J60中的存储器以静态RAM方式实现。STM32通过使用SPI接口对ENC28J60芯片的寄存器写入控制参数和接收数据,实现以太网功能。
3、系统软件设计
3.1、LwIP协议的移植
LwIP协议是一种主要应用于嵌入式系统中的轻量级的TCP/IP协议。LwIP协议源码开放,在保持了TCP/IP协议的基本功能的前提下代码尽量精简、占用内存小、方便裁剪和调试[10,11]。LwIP在STM32上的移植工作主要包含2方面内容:一是修改文件ethernetif.c和文件sys_arch.c;二是编写网络驱动程序。
设计中采用ENC28J60在LwIP中用netif结构体来描述网络接口,通过对netif结构体中的各个成员进行赋值来实现网。netif结构体中定义了指向下个网络接口的指针、IP地址、网络掩码、网关以及用于实现以太网接收、发送数据包的函数等内容。在驱动中所要完成的任务就是实现网络的初始化、数据的接收发送以及终端等任务,最终通过硬件接口函数可以实现对硬件的驱动。
3.2、测量程序的设计
DHT11发送的数据包大小为40bit,包括测得的空气温度的整数部分8bit,空气温度小数部分为8bit,空气湿度整数部分8bit,空气湿度小数部分8bit,还有8bit是进行数据校验,大小为前面4个字节的和。
当DHT11进行接收主机命令和向主机发送数据时,GPIO_Pin_7引脚分别被配置成和上拉输入模式和推挽输入模式。其中STM32从DHT11读取数据的程序如下所示。
8DHT11_Read_Data(u8*temp,u8*humi)
{
u8buf[5];
8i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)
buf[i]=DHT11_Read_Byte();
if((buf[0]+buf[1]+buf[2]+buf[3])=
=buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}
elsereturn1;
return0;
}
3.3、控制程序的设计
加热系统和湿帘系统通过继电器控制通断,两个继电器分别通过GPIOB的7和8两个引脚进行控制。引脚的输出模式配置为通用推挽输出模式,速率配置为2MHz。GPIO_SetBits函数使引脚输出高电平,继电器导通,控制相应的执行设备运行,GPIO_ResetBits函数使引脚输出低电平,将继电器断开,控制相应的执行设备关闭。STM32中的程序执行过程如图2所示。
图2 STM32程序执行过程
3.4、远程控制软件的设计
文中设计的远程控制软件是在美国微软公司发行的VC6.0平台上利用MFC进行开发的,设计的主控制界面如图3所示。
图3主控制界面
从图3中可以看出主控界面主要包括实时监测模块和设备控制模块两大部分,实时监测模块主要包括对温室内温湿度进行上限和下限的设置,以及STM32控制器传送的实时数据的显示,可以选择将测得的数据保存到数据库中,并进行历史数据的查询。设备控制模块的主要功能是对温室内进行环境调节的执行设备进行控制,可以选择手动控制和自动控制2种模式。远程控制软件与STM32F103VET6中央控制器之间采用TCP/IP协议进行通信,规定了设备之间进行数据传输的标准格式。2个设备在进行数据传输时会建立起一条虚拟的网络通道,数据和控制命令封装成数据包的形式在这条通道上进行传输。远程控制软件与STM32通信的过程如图4所示。
图4 远程控制软件与STM32通信过程
设计中采用SQLSever2008数据库保存系统运行过程中产生的温室环境数据和执行设备控制信息等数据。用户可以对数据库中的数据进行保存、查询、删除和维护操作,准确快速地获取所需要的数据。
4、结束语
文中利用STM32单片机作为温室内的控制器,实现了通过网络对温室内温湿度的远程测量和控制。由于温室内的CO2浓度和光照强度对植物的生长也有影响,所以可以对系统进行功能扩展,控制更多的环境变量,使系统可以更好地营造植物生长的环境。
评论
查看更多