1. 引言
农业物联网是物联网在农业生产、经营、管理和服务中的应用,它使用传感器、摄像头等感知设备采集农业生产过程、农产品物流以及动植物本体的相关信息,通过移动通信网和互联网将获取的海量农业信息进行传输和融合处理,最后通过智能化操作终端实现农业产前、产中和产后的过程监控、科学决策和实时服务 [1] 。农业物联网在畜牧养殖、渔业、农产品流通等方面具有广泛的应用前景。
近年来,基于物联网技术的智慧农业解决方案不断涌现,如智慧温室、智慧养殖和智慧农田等,它们升级了传统的农业生产模式,实现了生产的自动化、信息化和可视化管理,提高了农业资源的利用效率。基于农业物联网技术的农业生产逐渐从以人力为中心、依赖于孤立机械的生产模式转向以数据为中心,网络化、智能化和数字化的生产模式 [2] 。
实时、准确地监测室内养殖环境参数并自动调节环境,使得室内养殖环境适宜农畜生长,是农业物联网需要解决的一个重要问题。文献 [3] 提出了搭建一个远程温室控制系统,由温湿度传感器SHT10、CO2传感器COZIR及光照传感器实时采集温室的环境参数反馈给STM32处理机进行数据处理,并通过控制机械结构进行自动调节。然而,该文献中使用的通信技术为短距离、安全性不高的串口通信。文献 [4] 提出了通过传感器技术、无线通信技术和互联网技术将室内各类环境检测量进行集中采集、处理、数据上传、报警等,从而实现智能家居环境监控与显示功能,但却使用了外设和功能相对较少、具有较低处理能力和存储容量的AT89S52微控制器作为主控设备,很难满足现代农畜养殖需要。文献 [5] 提出了通过智能环境监测及调控系统自动获取牛舍内部的空气温湿度、CO2浓度和NH3浓度等数据,并自动控制风机等装置改善牛舍内环境。然而,该文献仅仅对空气参数进行了测量并没有考虑其他环境因素,而且对于环境的调节方式也比较单一。
因此,本文设计了一个基于STM32单片机的室内养殖环境调节系统。它不仅可以测量室内养殖常见的空气浓度参数,还可以测量养殖环境中的光照强度、灰尘浓度以及部分可燃气体的气体浓度,并通过不断与采集到的数据实时进行对比从而调节舵机、直流电机等成本更加便宜且效果更好的装置,从而保证室内养殖环境始终处于适宜范围。系统还采用了无线通信技术和互联网技术将养殖室内的环境变化实时、安全地显示在远程手机端,帮助农户做到足不出户就可以了解到养殖室内的环境变化。
2. 总体框架
本系统由STM32F103ZET6微控制器为主控设备,通过温湿度传感器、烟雾浓度传感器、光照强度传感器、灰尘浓度传感器和部分气体浓度传感器对室内温度、湿度、烟雾浓度、光照强度、灰尘浓度和部分气体浓度进行监测 [6] ,并实时与所设阈值进行对比,若超出所设阈值范围主控设备将驱动由舵机、继电器、直流电机等电子元件组成的机械装置进行自动调节。例如,通过控制舵机转动调节遮光板角度改变室内光照强度;通过将继电器当作开关控制风扇和喷洒装置调节温湿度;通过控制直流电机转速实现换气速度调节。同时,由ESP8266模块作为中间枢纽,将数据实时显示在手机端。
系统总体设计如图1所示,分为数据采集模块、通信模块和驱动模块,数据采集模块由各类环境参数传感器构成,通信模块由ESP8266模块为主要构成,驱动模块则由相关电子元件和机械结构组成。
3. 主要设计
3.1. 主控模块
本系统选择STM32F103ZET6微处理器为主控设备。它是一款STMicroelectronics生产的32位ARM Cortex-M3核心的主控芯片 [7] ,具有高性能、低功耗和实时性的特点。它相较于文献 [4] 使用的AT89S52微处理器具有USART、SPI、I2C、CAN等更丰富的外设接口和硬件加速器如FPU单元、浮点单元提高运算速度。它还内置了DSP指令集,增强了数字信号处理能力。此外,它支持Flash和RAM存储器存储程序代码和临时数据,它的运行频率还可以达到72MHz,提供了较高的处理速度。这些使它更适合于开发工业自动化、智能家居、车载系统等嵌入式系统。
利用软件Keil uVision5编译代码驱动STM32芯片。Keil uVision5是一款集成开发环境,专为嵌入式系统开发而设计。它包含编辑器、编译器、调试器等工具,还提供了对STM32芯片的全面支持,包括官方的CMSIS (Cortex Microcontroller Software Interface Standard)库和设备支持包(Device Support Pack),为驱动主控芯片和后续的开发设计带来了很大的便利。
利用C语言对STM32单片机进行编程。C语言是一种高级编程语言,同时也具有很多低级语言编程的灵活性 [8] ,语言程序直观,结构性好,很容易维护和移植。编程效率和代码执行效率高,生成的机器代码也相对简洁,所以在现在的单片机编程语言中,C语言才会占据绝对的主导地位,广泛用于嵌入式系统。
3.2. 数据采集模块
数据采集是为了将室内环境的温湿度、烟雾浓度、光照强度等信息进行采集并整理,数据处理流程图如图2所示,设备初始化后,传感器进行数据采集,通过判断是否到达刷新时间和通信模块是否正常进行数据的相关处理。
3.2.1. 温湿度传感器模块
温湿度传感器模块主要由DHT11传感器构成。DHT11是一种含有以校准数字信号输出的温湿度复合传感器,常用于测量环境中的温度和湿度。它具有高精度、快速响应和稳定性等特性 [9] ,其工作原理是通过采集环境中的温湿度信息,并将其转换为数字信号。模块内部包含一个专用的电阻式测湿元件和一个NTC测温元件,通过传感器读取环境湿度和温度值,湿度测量范围为20%~90%,温度测量范围为0℃~50℃。
将DHT11模块的电源引脚连接到STM32的电源引脚,地引脚连接到STM32的地引脚,数据引脚连接到单片机的GPIO引脚,如图3所示。通过单片机的GPIO引脚与DHT11的数据引脚进行通信,具体来说,发送一系列的脉冲信号给DHT11并接收响应,这包括一个低电平的启动信号和通过检测DHT11传输的数据位获取到的温湿度数据。对获得的温湿度数据进行合适的处理,如单位转换、数据滤波等操作,最终显示出结果。
![](//html.hanspub.org/file/11-1543129x10_hanspub.png?20240228084433938)
Figure 3. DHT11 module connection diagram
图3. DHT11模块连接图
3.2.2. 烟雾浓度传感器模块
该模块以MQ-2烟雾传感器为主要组成模块,MQ-2可用于检测空气中的烟雾、甲烷、丙烷、液化石油气等可燃气体的气体浓度变化,发现可能的危险情况并触发相应的报警信号。
将STM32和MQ-2烟雾传感器通过电路连接起来,通常,MQ-2模块上有VCC、GND、DO (数字输出)和AO (模拟输出)引脚,将VCC引脚和GND引脚连接到STM32的3.3 V引脚和地引脚上,将AO引脚连接到STM32中的一个可用的模拟输入引脚,如图4所示。在代码中初始化ADC (模数转换器),使其能够接收到来自MQ-2传感器的模拟输出信号,使用ADC转换函数,读取MQ-2传感器的模拟输出值,此值便代表了烟雾浓度的程度。再将读取到的模拟值转换为实际的烟雾浓度值,最终传送到手机端。
![](//html.hanspub.org/file/11-1543129x11_hanspub.png?20240228084433938)
Figure 4. MQ-2 module connection diagram
图4. MQ-2模块连接图
3.2.3. 光照强度传感器模块
该模块由BH1750传感器主要构成。BH1750是一种数字光照强度传感器,用于测量环境中的光照强度。该传感器基于I2C接口,具有高分辨率和低功耗的特点。其工作原理基于CMOS技术,能够提供精确的1 lx到65,535 lx光照强度读数,这使其成为了许多电子项目中常用的光照强度传感器之一。
将BH1750模块的电源和地引脚分别与STM32的电源和地引脚连接,SDA和SCL引脚分别连接到STM32中I2C接口对应的引脚,如图5所示。在STM32上配置I2C接口,使其支持与BH1750通信,最后读取所测量到的结果,并进行相应的处理。
![](//html.hanspub.org/file/11-1543129x12_hanspub.png?20240228084433938)
Figure 5. BH1750 module connection diagram
图5. BH1750模块连接图
3.2.4. 灰尘浓度传感器模块
该模块以GP2Y1010AU0F传感器为主要组成。GP2Y1010AU0F是一款光学灰尘浓度传感器,也被称为颗粒物浓度传感器或PM2.5浓度传感器,它通过红外发射二极管和光敏三极管的组合可以测量到空气中的小颗粒物浓度。它能够检测出直径在0.8微米到2.5微米之间的颗粒物,并根据测量结果输出相应的电压信号。
GP2Y1010AU0F传感器原理是使用定时器来生成PWM信号用于激活传感器的激光二极管,使用ADC和定时器来读取传感器的数据。根据传感器的数据手册进行数据处理和校准,将ADC读数转换为灰尘浓度值。
3.2.5. 气体浓度传感器模块
该模块主要为了采集环境当中的CO2、氨气和硫化氢气体浓度,使用SGP30传感器测量CO2气体浓度,MQ137传感器测量氨气浓度,MQ136传感器测量硫化氢气体浓度。具体连线方式如图6所示。
![](//html.hanspub.org/file/11-1543129x13_hanspub.png?20240228084433938)
Figure 6. Wiring diagram of the gas concentration sensor module
图6. 气体浓度传感器模块连线图
SGP30传感器测量的原理基于光学测量和电化学传感技术的结合,采用了先进的光学元件来检测空气中的CO2分子,并结合电化学传感器来测量其浓度。具体来说,SGP30传感器使用一个光源和光学滤波器来产生特定波长的光。当CO2分子存在时,这些光通过空气样品与CO2分子发生特定的吸收,传感器测量经过样品的光的强度并分析吸收的特征,从而推断出CO2分子的浓度。
MQ137传感器的工作原理基于半导体敏感元件的电阻变化。通过检测半导体敏感元件的电阻变化,利用氨气与元件表面发生的化学反应,实现对氨气浓度的测量。
MQ136传感器的测量是基于电化学传感器的原理,使用一种特殊的材料(MQ136膜)来吸收硫化氢气体。该材料对硫化氢气体具有很高的选择性,当硫化氢气体进入MQ136膜时,它会与膜中的材料发生反应导致电化学性能发生变化,从而产生与硫化氢气体浓度成比例的电信号。
3.3. 通信模块
通信部分主要由ESP8266模块组成,它是一个小型的Wi-Fi模块处理器 [10] ,具有低功耗、高效率、易用性和低成本等特点。它是一种常见的数据通信模块,内置了一个微型处理器和一个内存块,能够与互联网进行连接实现数据的传输。
在确保STM32和ESP8266通过串口或者其他可用的通信接口连接在一起的前提下,配置ESP8266。初始化ESP8266,并通过AT指令将其配置为Wi-Fi客户端模式,并在STM32上安装合适的驱动程序以支持与ESP8266的通信。使用ESP8266的AT指令来建立与手机端的TCP连接,在手机端下载相应的应用程序或使用手机自带的网络调试工具,通过TCP/IP协议与ESP8266进行通信。一旦连接建立,可以使用STM32通过ESP8266与手机端进行双向数据传输。通过STM32读取传感器数据,然后将该数据通过ESP8266发送给手机端如图7所示,也可以从手机端接收数据,并使用ESP8266将其传输到STM32进行处理。
![](//html.hanspub.org/file/11-1543129x14_hanspub.png?20240228084433938)
Figure 7. Diagram of the mobile phone page
图7. 手机端页面图
3.4. 驱动模块
将所设阈值与数据采集模块所采集到的数据进行实时对比,当数据超出阈值,说明环境已不在适宜范围内,驱动模块则开始发挥作用。
3.4.1. 舵机
通过使用STM32微控制器的PWM输出可以实现驱动舵机改变角度。将舵机控制信号线连接到STM32的一个PWM引脚上,具体连线如图8所示。选择一个可用的PWM定时器,并设置它的预分频值、计数周期和工作模式。舵机通过接收不同占空比的PWM信号来调整角度,通常0度对应于0%的占空比,180度对应于100%的占空比。
3.4.2. 直流电机
与舵机一样,直流电机也需要使用STM32的PWM输出方式。先将直流电机与电机驱动模块L298N连接,再按照使用手册将L298N模块与STM32相应引脚连接,最后通过改变PWM的占空比从而改变直流电机的转速。
3.4.3. 继电器
驱动继电器的基本原理是通过STM32的IO口控制继电器模块的触发信号,将其与外部设备连接的电路开关打开或关闭。选择好继电器的触发方式,将继电器模块的IN引脚连接到STM32的任意一个IO引脚作为控制信号,通过IO引脚的电平变化控制继电器开关。
4. 硬件测试与分析
为测试数据传输的实时性,本文将部分环境测量传感器模块连接至洞洞板上,并通过杜邦线与 STM32F103ZET6开发板进行连接。实物图如图9所示,图内包含温湿度传感器模块、烟雾浓度传感器模块、光照强度传感器模块和ESP8266模块。
![](//html.hanspub.org/file/11-1543129x16_hanspub.png?20240228084433938)
Figure 9. Part of the physical connection diagram
图9. 部分实物连线图
以十分钟为单位时间,分别记录六次温度、湿度、光照强度和烟雾浓度的数值,绘制出折线图如图10和图11所示,图中横坐标为数据测量次数,纵坐标温度单位为℃,湿度单位为%,光照强度单位为Lux,烟雾浓度单位为ppm,数值如表1所示。
![](//html.hanspub.org/file/11-1543129x17_hanspub.png?20240228084433938)
Figure 10. Line chart of temperature and humidity data
图10. 温、湿度数据折线图
![](//html.hanspub.org/file/11-1543129x18_hanspub.png?20240228084433938)
Figure 11. Line chart of light intensity and smoke concentration data
图11. 光照强度、烟雾浓度数据折线图
![](Images/Table_Tmp.jpg)
Table 1. Measurement parameter data
表1. 测量参数数据
经测试,结果显示在正常使用传感器且无线通信畅通的情况下,传感器所采集到的数据几乎可以实时、准确地呈现在手机端。
为验证驱动部分是否可以正常运行,本文通过驱动舵机和直流电机进行测试。测试过程如图12、图13所示。测试发现,当改变代码中光照强度的数值实现光照强度从强到弱发生变化时,舵机可以顺利完成从0˚到90˚转动。当改变代码中粉尘浓度数值实现粉尘浓度逐渐升高时,直流电机转速可以实现逐步加快。
5. 结束语
本文列举了温湿度传感器、烟雾浓度传感器和光照强度传感器等环境测量的主要传感器,通过STM32单片机对传感器的控制以及与手机端的连接实现了实时远程监控室内环境,使农户足不出户就可以实时观察到养殖场内环境的变化。通过对所设阈值与所采集到的数据进行对比,驱动相应机械结构改善室内环境条件,最大程度保证室内养殖环境一直处于适宜状态。但由于传感器种类较少,部分环境条件无法测量,对于数据处理和数据可视化部分也有一些不足。后续在此基础上可以进一步优化系统,例如提供预警和相关建议,同时也可以考虑增加更多类型的传感器以拓宽数据采集的领域,为农户提供更全面、准确的环境信息 [11] ,还可以通过驱动其他更好的机械设备改善室内环境,为室内养殖提供更好的环境条件。
基金项目
吉林省教育科学规划课题(GH21216)“基于智慧课堂的《计算机程序设计》课程O2O混合式教学模式研究与实践”;北华大学教育教学改革研究课题“新工科视域下智能科学与技术专业特色人才培养研究与实践”;北华大学博士启动基金“工业物联网可靠路由机制研究”;吉林省教育厅科学技术研究项目(JJKH20220056KJ)和吉林省科技发展计划项目(20210203050SF)的阶段性成果。
NOTES
*通讯作者。