1. 引言
传统的农业生产方法采用手动监控和信息传递滞后的方式,导致农业生产效率低下,特别是在温室大棚管理方面。现代农业正转向智能和信息驱动的方法,数字农业和智能大棚的优势逐渐显现,但是成本较高,推广速度慢。所以许多地方仍依赖过时的手动监控方法,导致产能不佳。智能农业,包括智能大棚,成为提高效率、应对粮食安全挑战以及改善农民生活质量的关键方向。
为了应对这些挑战,本文开发一种以STM32微控制器和esp8266模块为核心的智能大棚环境监测控制系统,并命名为“慧农云信”。我们的目标是收集作物生产环境数据,进行数据可视化处理、分析趋势,并在未来预测潜在气象风险。利用物联网平台进行数据传输和控制,以适应农业中智能、集中和小型化环境控制系统。随着技术和计算机科学在农业中不断发展和融合,我们的目标是通过使用STM32和onenet物联网平台构建一个智能和网络化的系统,为农业生产注入新的活力。提高生产效率、降低人工成本,并促进可持续发展。
2. 系统设计和总体架构
在设计之初,我们选取合作的辽宁省朝阳市联合镇的种植大棚的需求而设计,集成温度湿度和土地湿度的数据采集,联动大棚内的水阀和风机,在当地大棚作业都是人工,所以对自动化的初步转型有急切的需求。由于物联网是指通过信息传感设备,按约定的协议,将任何物体与网络相连接,物体通过信息传播媒介进行信息交换和通信,以实现智能化识别、定位、跟踪、监管等功能 [1] 。所以我们选择通过物联网实现自动化,为形成智能化的物联网设备,我们采用STM32与ESP8266模块相结合的方案,以便设备能够与物联网平台进行高效的数据通信。硬件连接阶段,确保STM32与ESP8266通过串口连接,建立通信渠道,并通过串口通信实现对ESP8266的配置,包括Wi-Fi网络连接和mqtt服务器地址的设置。随后,设备在成功连接网络后注册于物联网平台,获取唯一标识符以进行识别和管理。STM32负责采集设备上的环境或状态数据,通过串口传递给ESP8266,后者通过Wi-Fi连接将数据传输至物联网平台。平台接收到ESP8266传来的数据后,进行解析和处理,包括验证设备身份和检查数据格式。接收到的数据存显示在微信小程序上,微信小程序也可以向STM32发送指令,实现对设备的远程控制,开关控制和参数更新,整体框架如图1所示。

Figure 1. Block diagram of the overall design of the system
图1. 系统整体设计框图
3. 系统硬件设计

Figure 2. Hardware circuit diagram of each part
图2. 各部分硬件电路图
为了低成本实现监测效率提升的目的,本系统的设计应具备以下几个要求稳定性和安全性、扩展性、模块化设计、便捷的人机界面设计和低成本。 [2] 我们将采用以图2为主的硬件构造设备。
首先,为实现物联网设备的智能化,本研究采用STM32F103C8T6单片机和ESP8266模块,并搭配DHT11温湿度传感器、光照传感器以及土壤湿度传感器,用于数据采集。实现对环境参数如温湿度、光照和土壤湿度等的实时监测。
其次,在硬件连接方面,确保STM32F103C8T6与ESP8266模块通过串口进行高效通信。DHT11温湿度传感器负责采集环境温度和湿度数据,光照传感器监测光照强度,土壤湿度传感器用于获取土壤湿度信息。这些传感器通过STM32F103C8T6单片机进行数据采集,实现对环境参数的实时监测。
最后,为了使用户能够直观了解各项数据,系统还集成了一块1.8英寸的显示屏,用于在设备上显示采集到的数据。该显示屏与STM32F103C8T6相连接,用户可以通过显示屏即时查看温度、湿度、光照和土壤湿度等数据。这样的设计不仅增强了用户交互性,同时本地也可以实时查看数据,硬件连接成果如图3所示。
4. 软件设计部分
在软件设计部分,我们通过两个关键组件实现了系统的运行。首先,下位机部分采用STM32F103C8T6单片机,其主程序经过Keilv5开发。通过模块初始化,包括串口通信、LCD显示、温湿度传感器、光照传感器等,确保了系统的正常运行和各模块的协同工作。特别是,ESP8266模块的成功初始化是实现物联网通信的关键一步,通过与Wi-Fi网络的连接和OneNET平台的注册,我们实现了设备在物联网中的顺利接入。其次,上位机部分采用微信小程序进行设计,基于微信开发者工具的开发使得用户界面友好而直观。登录、注册、设备列表管理和实时监测功能相结合,为用户提供了便捷的操作体验。通过小程序,用户能够添加和管理设备,实时查看大棚环境数据,以及进行远程控制。这种双重设计不仅确保了系统的稳定性和高效性,同时提供了极大的灵活性,使用户能够轻松地参与到农业智慧化的过程中。
4.1. 单片机系统主程序
温室大棚智能监测系统的软件设计部分是主要由单片机发出指令对温湿度传感器、土壤湿度传感器、光照传感器模块进行操作命令,使其正常运行 [5] 。
该系统的软件设计主要基于Keilv5开发环境,使用C语言编写。流程如图4所示。首先进行了各个模块和外设的初始化,包括串口通信、延时、OLED显示、中断配置、LED、按键、温湿度传感器(DHT11)、光照传感器(BH1750)、蜂鸣器等。这些初始化步骤确保了系统的正常运行和各个模块的正常通信。下一步,进行ESP8266模块的初始化,包括与Wi-Fi网络的连接和OneNET平台的注册。通过串口与ESP8266模块通信,实现对模块的配置和初始化。接着对硬件设备进行检测,包括DHT11和BH1750的初始化。系统进行了ESP8266和OneNET平台的连接,确保设备成功加入物联网。在功能实现方面,配置了定时器2和定时器3,用于定时执行一些操作。在主循环中,通过这两个定时器,实现了对温湿度、光照等数据的采集和发送到OneNET平台。通过DHT11和BH1750传感器获取环境温湿度和光照强度的数据。
系统还具备状态检测和报警功能,通过对温湿度、光照等数据的监测,判断是否需要报警。当环境条件异常时,通过设置alarmFlag进行报警。同时,将采集到的环境数据通过OneNET平台发布,实现对数据的远程监控。使用HTTP协议,将数据以JSON格式发布到指定的主题。
在主循环中,通过ESP8266模块接收从OneNET平台发送过来的数据,进行解析和处理。整个程序处于一个无限循环中,不断地进行数据采集、处理和通信,实现了智能大棚的实时监测和远程控制功能。通过以上的软件设计,系统能够实现对温湿度、光照等环境参数的实时监测,将数据通过物联网平台传输,实现了智能农业的远程监控和控制。

Figure 4. Hardware operation flow chart
图4. 硬件运行流程图
4.2. MQTT平台数据发送和订阅
为了实现智能大棚系统的远程监测和控制,我们采用了MQTT (Message Queuing Telemetry Transport)协议,通过其高效的消息发布/订阅机制,实现设备与云端之间的可靠数据传输。在该系统中,我们选择了OneNET平台作为MQTT服务器,通过STM32单片机和ESP8266模块实现数据的发布和订阅。STM32F407单片机的智能温室大棚系统操作简单,价格低廉,可满足用户的温室大棚种植需求,帮助用户实现足不出户对大棚环境进行远程监控,并远程控制灌溉、抽风和补光等操作。 [3]
在STM32单片机的主程序中,我们通过MQTT协议实现了数据的发送。首先,设备通过ESP8266模块连接到Wi-Fi网络,并在OneNET平台注册,获取唯一标识符。接着,设备定时采集环境参数,如温湿度、光照等数据,并将其通过MQTT消息格式发布到OneNET平台的指定主题。这一过程由STM32单片机控制,通过串口与ESP8266通信,实现数据的高效传输。
利用系统状态检测和实时设备调节,可以保证农业大棚系统为农作物生长提供良好的生态环境 [4]
因此,在控制端上位机的微信小程序中,我们通过MQTT协议实现了数据的订阅,图5是我们的成果。用户通过小程序与OneNET平台建立连接,并订阅特定设备的数据主题。一旦设备发布新数据,OneNET平台即时推送消息至用户端,更新设备数据和环境信息。通过这种实时的数据订阅机制,用户可以方便地获取大棚内部的实时情况,从而及时调整控制策略和确保农业生产的有效进行。

Figure 5. MQTT Platform Data Sent and Tested
图5. mqtt平台数据发送和接受测试
4.3. 微信小程序控制端
该小程序共包含三个主要页面,分别为登录页面(login/index.js)、设备列表页面(find/find.js)和查看详情页面(index.js)。
4.3.1. 登录页面
登录页面主要实现用户的登录和注册功能。在页面加载时,通过onLoad函数检查本地缓存中是否存在用户信息,如果存在且用户已登录,则直接跳转到已登录后的页面。用户可通过输入用户名和密码进行登录,也可以切换到注册状态。登录和注册时通过Toast组件给予用户友好的提示信息。同时,提供找回密码和重置密码的功能。用户输入信息后,通过wx.setStorage和wx.getStorage函数进行本地数据的存储和读取。
4.3.2. 设备列表页面
设备列表页面展示了用户添加的设备列表,如图6所示,用户可以输入设备ID并添加到列表中。用户输入设备ID后,点击确认按钮,将设备信息添加到列表,并通过wx.setStorageSync函数将设备列表保存在本地缓存中。同时,支持删除设备和查看设备详情的操作,通过onDelete和onView函数实现。设备ID在每部设备的1.8寸显示屏上均有显示,其原理是每部单片机都有唯一的设备编码,在下位机的程序中通过显示函数将设备编码打印在显示屏上,方便用户初次绑定。绑定后的设备将会在页面下方出现,可以查看温度湿度的数据,每隔10分钟更新一次,当点击查看界面后将会进入下一级界面查看当前设备的详细数据。

Figure 6. Mini program device list page
图6. 小程序设备列表页面
4.3.3. 查看详情页面

Figure 7. Mini program device details page
图7. 小程序设备详情页面
查看详情页面展示了设备的实时数据和相关的天气信息。页面加载时,首先连接MQTT服务器,并进行订阅设备上行数据Topic。通过与设备的交互,实时更新页面上显示的设备数据,包括温度、湿度、光照等。同时,通过腾讯天气API获取设备当前位置的实时天气和空气质量信息,展示在页面上。在用户操作方面,提供了开关LED和蜂鸣器的功能,用户可通过页面上的开关进行相应的操作。这些开关状态的变化通过MQTT协议发送到设备,实现对设备的控制。操作状态和数据的更新在当前页面为每5秒更新一次此外,用户可以通过返回按钮返回上一级页面,图7展示了详情页面。
整体业务流程如下:用户首先在登录页面进行登录或注册操作,成功登录后跳转到设备列表页面。在设备列表页面,用户可以添加新设备,查看已添加设备,并进入查看详情页面。在查看详情页面,用户可以实时查看设备数据和天气信息,同时可以对设备进行控制。整个小程序通过本地缓存和MQTT协议实现了用户登录、设备管理和实时监控的功能。
4.3.4. 实地测试和外观设计
为了确保设备在实际农业环境中的稳定性和性能,深入实地进行了实地测试。本次选择辽宁省朝阳市联合镇的蔬菜种植大棚作为实践基地。通过实时采集温湿度等数据,能够更准确地了解大棚内的生态环境,为设备性能的调整和优化提供了实际依据。并且收集了为期一天的运行数据,与实际大棚手工测量数据进行校对,完成数据的一致性测试。
在与当地农户的深入交流和调研中,与农户紧密合作的过程中,不仅深入了解了蔬菜种植的特殊要求,还根据实际操作情况不断改进设备的自动化运行策略,修改软件的判定策略,确保其能够及时、准确地响应大棚内的变化,图8展示了我们的经过改进后的设备及试验大棚的状况。
在实地测试的基础上,充分利用了测试结果对元件布局进行了细致调整和优化。重新设计和绘制电路板,以确保电路的稳定性和性能优越性。这一优化过程直接影响了设备在实际应用中的可靠性,提升了其在复杂农业环境中的适应性。
为了进一步保障设备在各种工作条件下的可靠性和实用性,最后进行了外观设计。采用3D打印技术制作外壳,为设备提供了坚固而轻便的外部保护,如图9。设计上预留了大量的后期拓展空间,以适应未来功能的增加,为设备的可持续发展奠定了基础。
总体而言,通过深入的实地测试和外观设计,我们不仅验证了设备在真实农业环境中的性能,还使其更符合用户的实际需求。这种以实践为基础的方法不仅确保了设备的可用性和稳定性,同时也为农户提供了更为高效和便利的农业生产工具。

Figure 9. Front and back of 3D printing equipment
图9. 3d打印设备正反面
4.3.5. 总结
综合上述内容,本文致力于应对传统农业监控方法滞后、效率低下的问题,通过开发一种基于STM32微控制器和esp8266模块的智能大棚环境监测控制系统,实现了农业生产的数字化和智能化。通过系统设计和总体架构的详细介绍,我们明确了解决方案的核心思想,即通过物联网平台进行数据传输和控制,实现智能、集中和小型化环境控制系统。基于STM32和esp8266的智能大棚环境监测控制系统在硬件设计、软件设计、实地测试和外观设计等方面都取得了满意的成果。该系统通过数字化和智能化手段,为农业生产注入新的活力。在降低使用和购买成本的前提下,提高了生产效率、降低人工成本,并为可持续农业发展做出了积极贡献。未来,我们将继续关注系统的改进和升级,以适应农业技术的不断发展,为农民提供更先进、便捷的工具,推动农业向数字化、智能化方向迈进。