Design and Implementation of an Intelligent Greenhouse Monitoring System Based on STM32 ()
1. 引言
国民经济稳定增长的前提和保障就是农业的有序发展[1]。智能监测技术是保证温室大棚提供适宜生长环境的前提,用于农作物生产过程中的环境情况实时采集和存储。与传统现代大棚的人工读取检测模块获取的数据并进行记录相比,可以防止人力物力的浪费和避免人工读数存在较大误差的情况[2]。随着传感器,测量仪表,物联网等技术的蓬勃发展,无线通信技术、传感器技术等各种智能技术在温室大棚产业中得到了广泛的应用[3]。智能温室大棚检测系统采用无线传感网络技术与计算机技术相结合,能够实现智能化远程监测,对农作物生长具有较高的实用价值,可以全面采集大棚内作物生长环境所需的温湿度、光照强度和土壤湿度等参数,并进行相应的加工处理[4] [5]。
我国相继研制出了一些先进的温室大棚系统,如河北职业技术学院的温湿度检测系统、合肥机械研究所的DTR软件和智能控制系统、中国农业大学的WJG-1系统、河南农科院的GCS-I系统等[6] [7]。王彦集等人提出的农田环境信息远程采集和发布系统,主要采用WSN无线网络节点构成智能网络系统,利用分布式对农田环境信息多点采集,使用GPRS技术将数据上传给服务器,储存在数据库中,并能进行远距离、多要素的环境信息采集。北京市通州区投入运行的国内首座智能温室大棚,把智能监测、现代农业设施和物联网技术巧妙地结合在一起,是国内首座工厂化育苗、生产的具有自主知识产权的智能大棚。与此同时,以大北农集团为代表的设施农业龙头企业也开始了智能温室大棚研究与建设。在众多企业的共同努力下,我国智能农业大棚建设正以惊人的速度发展[8]-[10]。
在国外,荷兰、日本、美国等国家对无线传输技术给予了很大的关注,智能温室监测技术也较早地应用于这些国家,他们利用自身的优点与技术,引导现代农业朝智能化、自动化的方向发展[11]。伦敦大学农学院研制的温室计算机遥控技术,可以监测50 km以外和温室内的光照、温度、CO2、水等环境因子状况。随着传感器,测量仪表,执行元件等技术的快速发展,使温度、湿度和光照等参数的单独自动检测得以实现。日本已建成世界上第一座能在播种至收获多道工序中自动作业的植物工厂,该国开发的设施栽培计算机系统能实现对作物生长过程的治理、测量,控制和培育。一种以无线传感器网络为基础生长管理体系,在种植辣椒的温室大棚内外安装传感器和摄像头,用于检测辣椒的生长环境,采集到的数据通过Zigbee无线传感网络进行传输,还增加了控制模块,实现自动和手动控制,增加辣椒的产量。国外在推动本国农业技术发展的同时,也给了其他国家提供比较成熟的技术,促进世界智能农业的进步[12]-[14]。
2. 硬件系统设计
本系统的整体硬件设计框图如图1所示,主要由控制模块、电源模块、数据采集模块、显示模块、物联网模块和报警模块组成。控制模块主要包括STM32F103C8T6芯片、电源电路、时钟电路、调试电路,复位电路这四个部分;数据采集模块由光敏电阻传感器、土壤湿度传感器、空气质量传感器、二氧化碳传感器,大气压传感器、雨滴传感器、温湿度传感器组成;显示模块采用OLED显示屏,按键可以控制显示屏进行页面切换;WiFi模块选择ESP8266,报警模块使用蜂鸣器。
控制模块是温室大棚系统的重要组成部分,是接收、处理和发送数据的核心。本文采用单片机控制模块,主要有STM32系列单片机和51系列单片机。通过监测系统设计相对复杂,因此选取STM32系列单片机作为控制模块。
Figure 1. Hardware system block diagram
图1. 硬件系统框图
显示模块采用OLED显示屏。OLED显示技术能够实现自主发光,并且它的视角范围广以及明暗差异大、功耗低、反应速度快、适用于绕曲性面板、使用温度范围广、结构简单等优点,与传统LCD不同,其可以自主发光,所以不需要提供背光源,这使得OLED显示屏更加轻薄,呈现的显示效果更好。
数据采集模块主要是用于监测室内的空气温度湿度、二氧化碳、土壤湿度、空气质量、光照强度,和室外的空气温湿度、大气压、光照强度、雨量。
物联网模块用于系统数据的无线传输,常见的物联网模块有蓝牙、ZigBee、WiFi,这三者适用于距离较短的通信,经常用在室内这样的固定场所,蓝牙传输效率较低且不能与互联网连接,ZigBee低功耗、低成本,虽然可以接入互联网,但传输速率没有WiFi高。综合对比后选择WiFi模块作为物联网模块。
报警模块作用是当室内环境参数出现异常时,如二氧化碳含量过低、光照强度不足、土壤湿度过低,报警模块进行报警。
2.1. 控制模块与显示模块
单片机STM32F103C8T6最小系统板的内核是Cortex-M3,主要由电源、时钟、调试、复位和控制芯片模块组成,其Flash大小为64 K × 8 bit。该芯片总共有48个引脚,功能强大,具有内存大、性能高、可靠性好的优点,非常适合复杂的控制环境。
如图2所示,单片机STM32F103C8T6最小系统板由电源,时钟,调试,复位,和控制芯片这几模块组成,它的内核是Cortex-M3,Flash大小为64 K × 8 bit。STM32F103C8T6这款芯片总共有48个引脚,它的功能很多,但是仅仅这些引脚是不够的,所以有时候同一个引脚在不同的时间里可以实现不同的功能,这叫做引脚复用。在用软件进行代码编程时,需要加入启动文件startup_stm32f10x_md.s。该芯片的GPIO引脚有8种工作模式,其中包含上拉和下拉输入模式,所以在进行外接按键模块时,可以不用单独设计上拉电阻。工作电压为2 V~3.6 V,是一款具有配置较高的芯片。可以提供3.3 V和5 V电源,满足不同模块的需求。
Figure 2. STM32 minimum system schematic diagram
图2. STM32最小系统原理图
OLED显示屏尺寸大小为0.96寸,显示方式为点阵式显示,它的分辨率是128 × 64,能够实现自主发光,不需要提供背光源,功耗低、反应速度快。它的通讯方式为IIC,其属于双向二线制,二线是指数据线SDA (双向)和时钟线SCL。它有四个引脚,VCC和GND是电源线,工作电压为3.3 V,SCL时钟线和SDA数据线分别接单片机的PB9和PB8引脚,如图3所示。
Figure 3. OLED schematic diagram
图3. OLED原理图
2.2. 数据采集模块
DHT11温湿度传感器模块中的DATA引脚并联有一个上拉电阻,用于增强信号的抗干扰能力。传感器的VCC接3.3 V,GND接地,而DATA引脚只需要与单片机任意I/O口连接即可发送数据,在原理图中室内的DHT11连接PA11,室外的连接PA12,如图4所示。
Figure 4. DHT11 temperature and humidity sensor schematic diagram
图4. DHT11温湿度传感器原理图
土壤湿度传感器模块上有一个指示灯,当光照强度超过设定的阈值时,DO输出高电平,指示灯开,反之则输出低电平,指示灯关。AO引脚与单片机的ADC连接,通过单片机内部的AD转换可以把接收到的模拟信号转化成方便计算机识别的数字信号。在原理图设计中,因为DO输出的是0或1,用于指示灯报警,所以不用与单片机接线,AO引脚连PA6,电源接3.3 V,如图5所示。
光照传感器模块的AO引脚与单片机的ADC连接,工作原理与土壤湿度传感器一致,也是通过单片机的AD转换把接收到的模拟信号转化为数字信号。在原理图设计中,室内的传感器AO与单片机的PA0相连,室外的与PA1相连,如图6所示。
Figure 5. Soil moisture sensor schematic diagram
图5. 土壤湿度传感器传感器原理图
Figure 6. Light sensor schematic diagram
图6. 光照传感器原理图
二氧化碳传感器SGP30是数字传感器,在模块中配置有上拉电阻,可以直接使用IIC接口对数据进行采集,SCL与PB0连接,SDA与PB1连接。空气质量传感器工作原理与土壤湿度传感器基本一致,它们都是DO、AO引脚。AO引脚PA4,DO悬空,电源接5 V,如图7、图8所示。
Figure 7. Carbon dioxide sensor schematic diagram
图7. 二氧化碳传感器原理图
Figure 8. Air quality sensor schematic diagram
图8. 空气质量传感器原理图
2.3. 物联网模块与报警模块
如图9所示,ESP8266内部集成很高,有强大的片上处理和存储能力,这让它可以通过GPIO口集成传感器及其他应用的特定设备,实现最低前期的开发,且需要极少的外部电路,在PCB设计中占用的空间很低。ESP8266的TX用来发送数据,RX用来接收数据。它通过串口与单片机连接,GND接地,电源为3.3 V,TX引脚与单片机的RX (PA10)相连,RX引脚与单片机的TX (PA9)相连。
报警模块为有源蜂鸣器,因为蜂鸣器工作需要较大的电流,所以需要添加放大电路,使用三极管来放大I/O口的电流保证它可以正常工作,市场上的蜂鸣器模块就已经配置有了放大电路。根据农作物的生长环境要求,在程序中设定二氧化碳、光照强度、土壤湿度的范围,超出其中的范围蜂鸣器就会发出声音报警。在原理图设计中,蜂鸣器的I/O连接单片机的PC14引脚,电源接5 V,如图10所示。
Figure 9. Internet of Things (IoT) module schematic diagram
图9. 物联网模块原理图
Figure 10. Alarm module schematic diagram
图10. 报警模块原理图
3. 软件系统设计
完成了系统的硬件部分的设计后,开始进行系统的软件设计。首先是定义不同变量的类型,设置中断优先级,对引脚接口、延时函数、OLED显示屏、传感器、串口等进行初始化,OLED清屏,WiFi模块接入ONENET平台,延迟100 ms后,进入while循环函数,在显示屏上显示时间,温湿度传感器、二氧化碳传感器、光照传感器、大气压传感器、土壤湿度传感器等传感器开始采集数据,同时OLED显示检测到的数据,再通过esp8266将数据上传到云平台,设置蜂鸣器报警的范围。系统软件整体设计流程图如图11所示。
3.1. 控制模块软件设计
控制模块主要是对传感器采集到的数据进行分析和处理,实现对按键、显示、蜂鸣器和无线通讯的控制。控制模块处理完检测到的参数后,传送给OLED显示屏显示,同时也发送给ESP8266模块,ESP8266模块通过WiFi传送到ONENET云平台,如图12所示。
Figure 11. System software design flowchart
图11. 系统软件设计流程图
Figure 12. Control module program flowchart
图12. 控制模块程序流程图
3.2. 数据采集模块软件设计
数据采集模块的程序主要是能够实现对室内的空气温度湿度、二氧化碳、土壤湿度、空气质量、光照强度,室外的大气压、光照强度、雨水、空气温度湿度的检测。
如图13所示,DHT11是单总线协议通信,就是用一个数据引脚完成数据的输入输出,它的分辨率比较小,不能识别到小数部分。DHT11的OTP内存中以代码的形式储存着精密的校准系数,在检测数据过程中会用到这些校准系数,对检测到的温湿度进行校准。DHT11程序流程为:启动时,需要接收到主机发送的信号才能进行温湿度的检测。主机拉低总线发送低电平信号,DHT11接收到后主机信号拉高,等主机信号结束后DHT11输出低电平响应,响应过后再拉高总线准备输出数据。数据输出完成后由上拉电阻拉高总线。
土壤湿度传感器连接ADC引脚,AO输出模拟量,ADC处理接收到的模拟数据,进行模数转换。首先单片机对ADC引脚初始化,然后将读取的模拟量AD转换成数字信号,取平均值,保证土壤湿度数据的精确度,如图14所示。
Figure 13. DHT11 module program flowchart
图13. DHT11模块程序流程图
Figure 14. Soil moisture sensor program flowchart
图14. 土壤湿度传感器程序流程图
3.3. 物联网模块软件设计
如图15所示,将ESP8266模块与单片机连接好后,要用串口调试助手调试它。使用TTL转USB模块(CH340)连接电脑和模块,用电脑给它烧录AT固件后,调试完后,才可以使用。它的程序流程为:首先初始化模块的引脚,然后开始搜索附近的热点,连接上热点后,就可以上传数据到云平台。
Figure 15. ESP8266 module program flowchart
图15. ESP8266模块程序流程图
3.4. 报警模块软件设计
蜂鸣器模正常情况下,处于低电平状态,设定报警阈值后,当检测到的二氧化碳、光照强度、土壤湿度中某个数据出现异常时,会产生高电平,触发蜂鸣器报警,如图16所示。
Figure 16. Buzzer alarm flowchart
图16. 蜂鸣器报警流程图
4. 系统测试
4.1. 显示模块功能测试
如表1和图17所示,OLED显示屏可以显示字符串、汉字、图案等,使用PCtoLCD2002取模软件对需要显示的字符进行取模,然后在keil软件中编写调用函数,下载到单片机中去,OLED会驱动芯片点亮发光二极管显出相应的字符和数值。
Table 1. Display module test
表1. 显示模块测试
显示内容 |
是否正常显示 |
检测次数 |
显示成功率 |
字符串 |
是 |
10 |
100% |
汉字 |
是 |
10 |
100% |
传感器检测到的数值 |
是 |
10 |
100% |
Figure 17. Display module test results
图17. 显示模块测试结果
显示模块可以正常显示字符串“123456”,汉字“自动化”和传感器检测到的温湿度,检测次数是10次,每次都更换不同的值,显示成功率达到百分百。从这个结果可以看出显示屏功能正常。
4.2. 数据采集模块功能测试
为了保证每个数据采集模块能够正常使用,需要对它们单独进行测试,避免某个模块不可用,影响系统整体测试结果。数据采集模块检测到数据后,STM32控制器将数据发送到OLED显示屏显示。通过给温湿度传感器加湿加热、用光线照射光照传感器、用湿纸巾包住土壤湿度传感器、给CO2传感器呼二氧化碳等措施,可以改变检测到的数值,如表2和图18所示。
Table 2. Data acquisition module test
表2. 数据采集模块测试
传感器 |
检测数值 |
传感器是否正常 |
光照传感器 |
室内:26;室外:41 |
是 |
温湿度传感器 |
温度:室内25℃;室外:27℃ 湿度:室内72%;室外:90% |
是 |
土壤湿度传感器 |
11% |
是 |
空气质量传感器 |
0.194 ppm |
是 |
雨量传感器 |
42% |
是 |
大气压传感器 |
94,692 Pa |
是 |
二氧化碳传感器 |
830 ppd |
是 |
Figure 18. Data acquisition module test results
图18. 数据采集模块测试结果
可以看出,数据采集模块能够实现对室内的空气温度湿度、二氧化碳、土壤湿度、空气质量、光照强度,室外的大气压、光照强度、雨水、空气温度湿度的检测。所以各个模块都可以正常使用。
4.3. 物联网模块功能测试
单片机通过串口把传感器检测到数据传送给ESP8266,ESP8266 再通过WiFi将数据上传到ONENET平台,通过登录平台是否可以查看的数据,完成对物联网模块的测试,如表3和图19所示。
Table 3. IoT module test
表3. 物联网模块测试
|
检测数值 |
是否正常上传 |
数值更新间隔时间 |
光照强度 |
室内:39;室外:49 |
是 |
11 s |
温度 |
温度:室内24℃;室外:0℃ |
否,室外不能 |
11 s |
湿度 |
湿度:室内69%;室外:0% |
否,室外不能 |
11 s |
土壤湿度 |
5% |
是 |
11 s |
空气质量 |
0.485 |
是 |
11 s |
雨量 |
4% |
是 |
11 s |
气压 |
97,797 Pa |
是 |
11 s |
二氧化碳 |
421 ppd |
是 |
11 s |
Figure 19. IoT module test results
图19. 物联网模块测试结果
4.4. 系统总体功能测试
如表4和图20所示,在每个模块测试完成并且可以正常使用后,对系统的整体功能进行测试。系统主要完成的功能有能够监测室内温湿度、空气质量、光照强度、二氧化碳、土壤湿度,室外的温湿度、雨滴、大气压,WiFi模块可以把数据上传到onenet平台,蜂鸣器正常报警。
Table 4. System overall functional test
表4. 系统总体功能测试
|
是否报警 |
报警间隔时间 |
光照强度 > 50 |
是 |
5 s |
光照强度 < 50 |
否 |
/ |
CO2浓度 < 500 |
是 |
5 s |
CO2浓度 > 500 |
否 |
/ |
土壤湿度 < 10 |
是 |
5 s |
土壤湿度 > 10 |
否 |
/ |
Figure 20. System overall physical diagram
图20. 系统总体实物图
5. 结论
本设计以温室大棚的监测技术为研究对象,设计了适合于温室大棚的智能监测系统。系统完成了控制模块、显示模块、数据采集模块、物联网模块和报警模块的硬件与软件系统设计,通过测试证实了系统的可行性。
1) 数据采集模块能够正常检测室内的温湿度、空气质量、光照强度、二氧化碳、土壤湿度,室外的温湿度、光照强度、雨水、大气压。控制器可以让检测到的数据显示在OLED屏上,还能控制按键对OLED屏页面切换,选择查看室内或室外的数据。室内的光照强度、二氧化碳、土壤湿度出现异常,会触发蜂鸣器会报警。
2) ESP8266模块将接收到的数据上传到ONENET平台,在ONENET平台对数据进行可视化设计,然后下发一个链接,用户在手机上点击链接也可以远程查看数据。
3) 对系统的整体模块测试后,可以看到数据采集模块可以监测很多数据,基本上每个环境参数都能够在显示屏或手机上显示,ONENET平台对数据具有存储功能,方便用户整理归纳,可以避免采集的数据比较单一,也不需要对获取的数据进行人工统计与分析,减少人力物力的浪费,以达到智能监测和存储数据的目的。
Conflicts of Interest
The author declares no conflicts of interest.