唐 靖,宋志强
(1.南京信息工程大学滨江学院自动化学院,江苏 无锡 214105;2.无锡学院自动化学院)
随着时代的发展,科技的进步,生活中各个领域自动化程度越来越高。特别是在农业领域,自动化程度的提高更有利于解放劳动者双手,提高生产率。例如通过终端管理更多资源,精确的农业系统可以有效保证农作物的生长质量。
本设计是基于STM32的果园信息远程监测系统,该系统使用STM32 系列芯片并通过DHT11 温湿度传感器、BH1750 光照传感器、YL-69 土壤湿度传感器对果园环境的温度、光照强度和土壤湿度信息进行采集与处理,系统将数据上传到阿里云物联网平台,用户可通过电脑终端远程实时查看果园信息。
采用STM32 系列单片机,通过传感器采集数据,并通过ESP8266WIFI 模块将数据上发至阿里云物联网平台,用户可从电脑终端或移动端查看实时数据,图1为系统总体设计框图。
图1 系统总体设计
此模块是系统的各个传感器模块,其功能是用来检测环境数据,并上发至处理器,本系统的监控数据采集模块有温湿度采集模块,其采用的是DHT11温湿度传感器;测量光照强度的传感器采用的是BH1750光照度传感器;土壤湿度传感器则采用的YL-69 土壤湿度传感器。
⑴温湿度采集模块
为实现环境的温湿度采集,本次设计选用的是DHT11 温湿度传感器。同时,这个温湿度传感器具有体积小、功耗低、价格低等特点,适用于本次设计。从数据手册中可以看出,这种传感器可以在20~60℃的环境下进行测量,以及在5%~95% RH 范围内进行测量。传感器的三个引脚功能定义分别为:
1脚:VCC,电源控制口;
2脚:DATA,数据引脚,与单片机IO 口连接,将所测得数据发送至单片机;
3脚:GND,接地。
根据数据发送时序图完成DHT11 的驱动代码编写,首先主机要给数据引脚输出一个至少18ms的低电平然后拉高等待20-40μs,等待DHT11 回应这时GPIO 就要改变为输入状态,DHT11 响应拉低80μs 再拉高80μs,这个过程结束后就开始发送数据。
⑵光照强度采集模块
作物的生长自然也离不开光照,若想要稳定控制作物所需的光源,自然离不开实时的环境光照检测,为用户提供一个实时的环境光照状态,从而通过人工或终端控制作物所处环境的光照强度。本系统所选用的光照传感器为BH1750 光照传感器,BH1750 是一种光强度传感器,能够对环境的光强度进行量化,从而转化为环境中的光强度lx。传感器自身通过IIC总线进行通信,通过读取寄存器从而提取到传感器的实时数据。同时,因为传感器具有较为广泛的输入光范围,且小巧轻便、经济实惠,所以用作本系统的环境光照强度的检测模块。BH1750有五个引脚,其各自功能为:
1脚:VCC,电源接口;
2脚:GND,接地;
3脚:SCL,IIC时钟线,时钟输入引脚,由单片机输出时钟信号;
4脚:SDA,IIC 数据线,双向IO 口,传输数据的接口;
5脚:ADDR,IIC 地址线,接GND 时器件地址为0100011,接VCC时器件地址为1011100。
⑶土壤湿度采集模块
本设计所使用的土壤湿度传感器为YL-69 型土壤湿度传感器,该模块有较大的测量范围,基本能满足设计需求。土壤湿度传感器工作电压为3.3V~5V。该电路使用LM393作为比较器件,工作性能良好。通过从单片机从AO 口获取模拟量[1],获得更准确的仿真数据,将数据提供给用户进行后续操作。土壤湿度传感器的接线示意图如图2所示。
图2 土壤湿度传感器接线说明
选用小型水泵,其通过程序输出高低电平实现对继电器模块的控制,从而控制水泵的开关。继电器模块与单片机相连有三处接口,分别是VCC、GND、IN,其中的VCC 与单片机电压输出口相接,GND 接地,IN引脚接单片机的串口,通过对IN 引脚输出高低电平,从而控制继电器的开关。继电器另一端口也有三处接口,分别是NO(常开触点)、NC(常闭触点)、COM(公共端),因为这个继电器模块采用的是低电平触发,所以当IN 引脚输入为低电平时,继电器常开触点与COM端相连,从而接通,水泵有电而工作。
ESP8266 是具有超低功率的UART-WIFI 透传模块,包装规格较小且能耗较低,可用作移动设施和物联网应用设计。同时因为它的联网功能,即可将使用者的设备连接至局域网,从而完成网络通信,达到互联。ESP8266WIFI 模块采用串口与单片机通信,其内置有TCP/IP 协议栈,通过WIFI 与上位机通信。同时,ESP8266WIFI 有三种工作模式[2],分别为:STA、AP、STA+AP。
阿里云物联网平台支持用户设备接入,还能对用户设备进行管理,同时还提供创作者搭建便利的可视化平台[3-4]。当用户进入开发者中心后,进行产品添加,设置产品名称、所属品类、节点类型、连网方式以及数据格式。ESP8266作为发布者,通过MQTT协议,将单片机测得的各种数据上传至服务器,然后在移动终端获取数据[5-6]。利用阿里Iot-Studio 提供给用户的应用编辑器,可将环境温度、环境湿度、土壤湿度、光照强度等数据显示在Web 应用界面上。同时设有一个独立开关,可以向设置好的数据流发送对应的开关值数据,从而控制水泵的开关,若用户需要,是可以进行自动控制的,通过下发AT 指令,程序内部设置数据阈值,当环境检测到的数据超出阈值时,则控制外部设备的启动,从而达到自动控制。阿里云物联网云平台配置整体流程如图3所示。
图3 阿里云物联网平台配置流程图
按照上述流程建好产品、添加云端设备和应用后,用户创建的设备与设计中的设备对应,也是设备接入网络的一种形式,阿里云物联网平台为每个设备终端提供了一块云空间,用户可以在上面建立其所需要的数据流,编辑可视化应用等功能,同时还能建立用户的人机互动画面,从而达到远程监控的目的,Web应用界面如图4所示。
图4 Web应用界面
基于STM32CubeMX 进行,同时通过MQTT 协议以及ESP8266WIFI 模块,将所测得的数据上传至云端.。软件模块包括ESP8266WIFI 模块、LCD 模块的SPI 驱动、BH1750 光照传感器驱动、DHT11 温湿度传感器模块驱动、YL-69土壤湿度传感器模块等。
配置WIFI 为STA+TCP 客户端模式,ESP8266 是通过AT 指令来实现程序的运行,比如说“AT”为测试指令“AT+RST”为复位指令,二者返回都为OK;“AT+CWMODE=1”意思是设置工作模式为客户端模式;“AT+CIPMODE=1”意思则是开启设备的透明传输模式,便是ESP8266通过接收到的串口数据,进行转发值所设置的服务器端口上;“AT+CWSAP=“SSID”,“PWD””为设置热点模式下的ESP8266 的热点名称和密码;“AT+CIPMUX=0”设置设备为单连接模式;“AT+CIPSTART="TCP","%s",%d ",ip,port”意思是建立TCP连接,从而让局域网内设备实现通信。
DHT11 驱动则是根据时序图完成DHT11 的驱动代码编写,首先主机要给数据引脚输出一个至少18ms的低电平然后拉高等待20-40μs,等待DHT11 回应这时GPIO 就要改变为输入状态,DHT11 响应拉低80μs再拉高80μs,这个过程结束后就开始发送数据。
YL-69 的工作原理则是通过硬件上连接的是YL-69土壤湿度传感器的AO 引脚,AO 是传感器的模拟量输出,因此需要对采集到的模拟量进行转化,而PC2 是芯片的ADC(模数转换器)引脚,用于处理模拟数据。通过测量可知,设备置于在空气中时,湿度为0%,所获取到ADC 的值在3935 左右,而置于水中时,湿度为100%,所得到的ADC 值在2903 左右。因此,根据这个进行代码部分的编写,通过配置STM32CubeMX生成ADC 初始化代码,用户通过读取传感器ADC 的值从而获取到实时的土壤湿度值,从而进行转化得到表示土壤的湿润度值。
本文利用现有的阿里云物联网平台,设计并实现了一个基于STM32 和阿里云物联网平台的果园环境监测及灌溉系统。阿里云物联网平台作为管理系统与设备之间信息交换的桥梁,为系统用户提供设备数据信息的监控信息服务。用户可以通过移动终端,实现远程控制,通过程序内对各种阈值的设定,从而保证系统的正常运行。