基于STM32的粮仓温湿度及虫害检测装置设计
1.1 总体设计方案
采用STM32系列作为主控,构建包含温湿度模块、WIFI模块、声光报警模块、电机驱动模块和显示模块的智能系统。系统通过温湿度模块实时采集温湿度数据,并通过WIFI模块将采集到的数据上传到云平台。同时WIFI模块能够接受云平台下发的命令并发送给主控。系统通过电机驱动芯片来控制电机的正反转和速度。电机的状态、温湿度数据、粮仓模拟灯光都会在显示模块上显示出来。虫害检测装置搭载ESP32-CAM负责图像采集与虫害识别,配有特制的虫害诱捕器,该诱捕器顶壳结构分为上下安装槽,上端为STM32的安装槽,下端为ESP32-CAM摄像头的安装槽,通过诱捕器与ESP32-CAM的配套配合,可实现粮仓害虫的诱捕与识别功能。系统结构图如图1.1所示。

图1.1 系统结构图
1.2 元器件选型
1.2.1 主控制器选型
方案一选用STM32F103C8T6作为主控芯片,一方面是因为强大的功能(支持I2C、串口和SPI通信协议还有丰富外设),另一方面是因为良好的开发环境(开源的代码,官方的数据手册,还有全面的教程)。其CPU内核是ARM Cortex-M3 32位RISC处理器,CPU最大主频72MHz。工作电压为2V-3.6V。
方案二选用STC89C52作为主控芯片,其是一款经典8051架构的8位微控制器,实际工作频率可达48MHz,内部共2个16位定时器/计数器。与STM32F103C8T6相比,具有更高的性价比和兼容优势。
最终选用STM32F103C8T6为主控模块,STC89C52难以满足智能粮仓系统的性能需求,STM32F103C8T6在数据处理方面具有显著优势。STM32F103C8T6芯片实物图如图1.2.1所示。

图1.2.1 STM32F103C8T6芯片实物图
1.2.2 温湿度模块选型
方案一选用DHT11温湿度传感器,DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。它的供电电压为3.3V-5.5V,温度精度±2℃,湿度精度±5%RH。
方案二选用DHT22温湿度传感器,相比DHT11,拥有更高的精度和更大的量程,它的精度分别为±0.5℃和±2%RH。其成本约为DHT11的两倍,要求主控芯片具备更复杂的数据处理能力,增加了软件调试难度。
最终采用DHT11温湿度传感器,其具有成本低、易开发的优势。DHT11数字温湿度传感器实物图如图1.2.2所示。

图1.2.2 DHT11数字温湿度传感器实物图
1.2.3 显示模块选型
方案一选用OLED12864显示模块,可以方便软件代码的检测和温湿度、风扇开关、LED灯开关的显示。模块使用软件模拟I2C协议,SCL接PB8,SDA接PB9,占用芯片的资源少。其控制芯片是SSD1306,供电电压为3V-5.5V。SSD1306是一款OLED/PLED点阵显示屏的控制器,可以嵌入在屏幕中,用于执行接收数据、显示存储、扫描刷新等任务。该模块拥有优异的广视角显示功能,同时响应速度快。缺点是模块生产成本高,存在一定应用短板。
方案二选用LCD1602显示模块,其工作电压为4.5V-5.5V,字符尺寸为2.95mm×4.35mm。该模块的核心优势为成本低廉,适配预算有限、需要快速落地开发的场景。缺点是难以适应复杂图形化。
最终选用OLED12864显示模块,其优异的图像显示更适配智能粮仓的数据显示功能。OLED12864显示屏实物图如图1.2.3所示。

图2.4 OLED显示屏实物图
1.2.4 电机驱动模块选型
方案一选用TB6612FNG作为电机部分控制的芯片,它是一款双路H桥型的直流电机驱动芯片,输入电压为-0.2V-6V,电源电压为15V。TB6612FNG芯片具有电路设计简单和性能好等优点。
方案二选用L298N电机驱动芯片,其供电电压为50V,输入和使能电压为7V。它具有价格便宜、易于控制的优点。缺点是发热大和效率低。
最终选用TB6612FNG,该芯片功耗更低、集成度高且外围电路简洁,同时其控制逻辑简单、体积小巧,综合性能更贴合本系统设计需求。TB6612FNG电机驱动芯片实物图如图1.2.4所示。

图1.2.4 TB6612FNG电机驱动芯片实物图
1.2.5 WIFI模块选型
方案一采用ESP01SWIFI模块来实现物联网平台的连接,通过MQTT协议进行ONET平台设备连接、上传数据点和设备同步命令。该模块核心处理器ESP8266在较小尺寸封装中集成了业界领先的TensilicaL106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,支持RTOS,集成Wi-Fi MAC/BB/RF/PA/LNA。
方案二采用蓝牙模块实现无线通信。蓝牙模块多为串口通信,短距离内抗干扰能力较强,适合设备与移动端点对点通信。但该模块的传输距离有限,不适用于大规模组网、互联网远程监控和跨区域数据查看的应用场景。
最终采用方案一。ESP01SWIFI模块更适配智能粮仓系统的上传数据到云平台的功能需求。ESP01SWIFI模块实物图如图1.2.5所示。

图1.2.5 ESP01SWIFI模块
1.2.6 电源模块选型
方案一选用RT9193稳压芯片。它的输入电压范围为2.5V-5.5V,可以将来自USB-MICRO的5V电压降压到3.3V,实现STM32F103C8T6最小系统、WIFI模块和OLED显示屏的供电。RT9193系列低压差线性稳压器采用CMOS工艺,兼具高精度、低噪音的优点,可兼容小体积陶瓷电容,节省布局空间、降低物料成本。
方案二选用DCDC,其优点是效率高和发热低,适合高压差大电流场景,与RT9193相比波纹更大、成本高、静态功耗高。
最终选用RT9193稳压芯片,它成本低、布线简单、静态功耗低,适合低压差、小电流场景。RT9193芯片实物图如图1.2.6所示。

图1.2.6 RT9193芯片实物图
1.2.7 摄像头模块选型
方案一采用ESP32-CAM摄像头模块。ESP32-CAM具有体积小、低功耗的优点,可广泛应用于各种物联网场合。该模块可以作为最小系统独立工作,尺寸仅为27*40.5*4.5mm,深度睡眠电流最低达到6mA。
方案二采用OpenMv摄像头模块。它能够120+FPS的YOLO目标检测,可高速运行复杂AI算法,并支持语音识别;其内置了大量封装好的图像识别函数,本地视觉检测、目标追踪开发效率高。更适合高精度视觉场景。
最终采用ESP32-CAM摄像头模块。在成本方面,ESP32-CAM单价低,多节点批量部署的经济性远优于OpenMv。ESP32-CAM实物图如图1.2.7所示。

图1.2.7 ESP32-CAM实物图
2.1 主控模块电路设计
STM32最小系统板电路主要包括复位电路、晶振电路、STLINK下载电路、启动配置电路。HX 3x4x2-2P-2.5N是复位电路的复位按键,复位电路是由一个10K电阻和1uF的电容组成,它用来给单片机提供复位信号。这个RESET接在SM32的7号引脚NRST,NRST是低电平复位,复位电路在上电的瞬间,电容是没有电的,电源通过电阻开始向电容充电,NRST引脚产生低电平,电容充满电时,电容断路,此时NRST引脚会被电阻R1上拉至高电平,给STM32提供复位信号,复位按键按下时,电容被放电,并且NRST引脚直接接地,给STM32提供复位信号,按键就实现了手动复位的效果。
32.768kHZ与8MHZ的晶振所在的电路是一个典型的晶振电路,分别接入一个8MHz和另一个32.768kHz的晶振,8MHz的晶振的两根引脚分别接到第5脚OSC_IN和第6脚OSC_OUT,而32.768kHz的晶振的两根引脚分别接3号PC14-OSC32_IN和4号PC15-OSC32_OUT引脚,提供RTC功能。4个20pF的电容作为启震电容,电容的另一端接地。在8MHz晶振旁边接的电阻R2起到调节振荡回路的增益,和降低噪声干扰。
PZ254V-11-04P是一个1×4P的排针主要是将SWDIO和SWCLK这两个引脚引出来方便使用STLINK来下载和进行串口调试,VCC通过滤波电容接入GND。
PZ254V-12-6P是一个2×3P的排针,可设置主控模块的启动配置设置,通过跳线帽来选择BOOT0和BOOT1是接入3.3V和GND,通过改变BOOT0和BOOT1引脚的高低电平来决定STM32的启动配置。
中间部分可以看到主控芯片的四个分区供电的主电源和模拟电源部分都提供了供电引脚,四个供电分区为VDD1/VSS1、VDD2/VSS2、VDD3/VSS3、VDDA/VSSA。供电分区的VDD都接3.3V,VSS都接GND。供电分区的VDD与VSS之间都接入一个100nF的电容。电容起到稳压的作用,其余引脚通过网络标签连接到排针上,方便接线。主控模块电路设计图如图2.1所示。

图2.1 主控模块电路设计图
2.2 温湿度模块电路设计
温湿度传感器的DATA引脚为开漏输出,必须依赖外部上拉电阻将总线拉至高电平。DATA引脚外接一个4.7K的上拉电阻,接STM32的PA0的IO口。温湿度模块电路设计图如图3.2所示。

图2.2 温湿度模块电路
2.3 显示模块电路设计
OLED显示模块用于实时显示当前温湿度、电机状态、LED灯。OLED显示模块通过软件模拟I2C协议接收来自主控芯片的数据,进行内容更新和显示。
硬件方面,OLED显示屏的SCL和SDA分别接STM32的PB8和PB9。VCC与GND之间接1UF的电容,电容起到滤波的作用。GND接地,VCC接3V3。显示模块电路设计图如图2.3所示。

图2.3 显示模块电路设计
2.4 电机驱动模块电路设计
24号引脚VM1、14号引脚VM3和13号引脚VM2一同接入网络标签VM,网络标签VM通过一个10uF的钽电容和一个100nF的贴片电容接地,两个电容主要起滤波和稳压的功能,20号引脚VCC也接入了一个100nF的电容,电容起到滤波的作用。1号和2号引脚一同接入AO1,A02、BO1、BO2同理。PGND1与PGND2的引脚接地。电机驱动电路图如图2.4所示。

图2.4 TB6612FNG电机驱动模块电路
2.5 声光报警电路设计
有源蜂鸣器,直流电平驱动。其电路的三极管S8550(PNP型)起到开关的作用,左边的基极给低电平三极管导通,基极给高电平,三极管截至,所以蜂鸣器是低电平触发。三极管的基极通过一个1KΩ的电阻接到STM32的PB12引脚上,通过改变STM32的IO口的高低电平,控制蜂鸣器模块部分的电路的导通。蜂鸣器模块电路图如图2.5所示。

图2.5 蜂鸣器模块电路
2.6 LED灯模块电路设计
LED灯模块电路分为两部分,分别是LED灯电路和按键检测电路部分。LED灯电路通过一个510Ω的电阻接入STM32的PA5引脚,按键检测电路接入STM32的PC13引脚。检测PC13的高低电平来控制LED灯的亮灭。LED灯模块电路图如图2.6所示。

图2.6 LED灯模块电路设计
2.7 WIFI模块电路设计
ESP01SWIFI模块通过硬件UART串行接口与STM32单片机实现双向通信。软件方面,ESP01S使用AT指令MQTT协议连接OneNET云平台。硬件方面,系统将ESP01S的引脚引出,使用杜邦线连接STM32。ESP01S的RX引脚接STM32的PA2,TX引脚接PA3口。EN引脚接3V3电源,系统上电后,EN引脚为高电平,模块自动进入正常工作模式。GND接地,VCC接3V3电源。WIFI模块电路设计图如图2.7。

图2.7 WIFI模块电路
2.8 电源模块电路设计
电源电路部分其中的RT9193是稳压芯片,将来自USB的5V的电压降到3.3V,给STM32供电,5V接了1uF的电容,3.3V接了两个10uF和100nF的电容。BP引脚接一个22nF的电容,以获得最低噪声性能。EN引脚是使能引脚,可以控制此引脚的高低电平实现芯片的激活,其作为电源电路与VIN引脚一同接入5V的电源。USB口5V电源接入时,芯片便激活。电源模块电路图如图2.8所示。

图2.8 电源模块电路
2.9 PCB设计
必须根据元器件的电气特性和使用特点来布局,依据晶振的电气特性,需要靠近STM32的晶振引脚去摆放。为了满足板载天线的性能,把WIFI放在主板边沿,且天线区域伸出主板边沿。根据使用特点,将USB口放到板子边缘方便插接。元器件进行模块化布局,将需要与芯片连接的元器件与芯片的IO口是一个走向。优先关键的元件、信号线和密集的区域,把空间资源分配给重要关键的元器件。PCB的整体布局如图2.9所示。

图2.9 PCB的整体布局
布线尽量在顶层,电源线要加粗,这样可以承载更大的电流。避免直角和锐角走线,推荐使用45°角或圆弧过渡。电源要经过电容滤波,电容起到稳压的作用。去耦电容靠近芯片引脚,且就近接地。高频信号尽可能短,周围打一圈包地,并设置禁止铺铜区,做好与其他信号的屏蔽隔离,进行差分对布线处理,要保证符合规则。也就是保证下方条在符合规则区域。添加泪滴可以保护焊盘,使导线连接更稳定,PCB软件有自动添加泪滴的功能。完成布局和布线后再进行铺铜,板子是两层铺两层铜。顶层和底层。铺铜可以保证GND网络的飞线连接,可提供一个良好的回流路径。差分对布线和禁止铺铜区如图2.10所示。

图2.10 差分对布线和禁止铺铜区
PCB实物布线调试阶段出现两处布局布线问题。其一,STM32芯片电源引脚配套的四颗滤波电容布线实操难度较大。将电容布设至PCB顶层,会占用引脚布线通道,干扰芯片引脚引线的引出,布局优化方案为,将四颗滤波电容统一布置在PCB底层。其二,电路板部分区域存在铺铜未全覆盖的现象,可通过人工增补过孔的方式进行补铜。STM32芯片旁供电引脚的滤波电容接线详见图2.11。

图2.11 STM32芯片旁供电引脚的滤波电容接线
需要整齐美观的将元器件位号进行标识,并准确的在元器件的排针下进行引脚的标识,标注好每个模块名称,在STM32芯片下放置logo。PCB丝印部分图如图2.12所示。

图2.12 丝印部分
PCB设计教程参考视频链接【【教程】零基础入门PCB设计-国一学长带你学嘉立创EDA专业版 全程保姆级教学 中文字幕(大师篇已更新)】https://www.bilibili.com/video/BV1At421h7Ui?vd_source=62157b4982126e648e4051bdcd686ec9
软件设计
3.1 设计思路
智能粮仓系统编程使用C语言与KEIL工具,以实现温湿度检测、远程灯光和电机控制等功能。主控芯片STM32使用V3.5.0版本的标准库编译,通过调用库函数,实现对寄存器的操作。这种方式开发效率高,方便后续封装函数。APP使用uni-app开发,其软件优势是跨平台,极大增加了开发效率。虫害识别系统的YOLO模型是在EDGE IMPULSE平台中进行模型训练,编程使用Arduino IDE开发。
在模块函数封装阶段,需要将STM32的时钟、GPIO、定时器等外设配置。还需要设定好各模块的中断优先级,确保模块的正常工作。将各模块的封装好后,再在主程序中调用,这样,主函数的代码逻辑清晰,易于后续的开发维护。完成程序编写后,需要对各个程序进行调试,保证系统的各项功能运行正常,实现智能粮仓系统的软件设计。
3.2 主程序
基于STM32的粮仓温湿度及虫害检测设计完成了温湿度数据、粮仓模拟灯光状态和电机速度状态实时数据的上传、OLED屏幕实时显示。同时支持远程控制粮仓模拟灯光、电机和摄像头,通过ESP32-CAM摄像头可实时检测虫害。
STM32系统初始化,其中包括粮仓模拟灯光模块、蜂鸣器报警模块、OLED显示屏模块、ESP01SWIFI模块、TB6612FNG电机驱动模块、DHT11温湿度传感器模块的初始化,进入主循环,主循环中,周期性地读取各传感器的数据、更新显示信息并上传数据到云平台。同时解析云平台下发的命令,控制电机的启停和LED灯的亮灭。虫害检测装置部分,ESP32-CAM初始化后,ESP32-CAM基于YOLO算法自动识别虫害并串口打印害虫名称、位置和识别率。主程序流程图如图3.1所示。
图3.1 主程序流程图
3.3 子程序流程图设计
3.3.1 温湿度模块子程序流程图设计
在STM32中的DHT11温湿度传感器的工作流程如下,系统初始化,DHT11上电后,测试环境温湿度数据,并记录数据,主程序判断是否收集温湿度数据,需要收集后,传感器一次性从DATA串出40位数据,包括温度、湿度及校验值,高位先出。MCU需严格按照时序要求解析数据,接收高8位湿度整数部分,再接收湿度小数、温度整数、温度小数,最终校验数据正确性。校验失败则重新获取数据。校验成功,温湿度数据存储,程序进入下一个主循环等待操作。温湿度采集流程图如图3.2所示。

图3.2 温湿度采集流程图
3.3.2 显示模块子程序流程图
在智能粮仓系统中,显示模块进行初始化,配置工作模式和显示设置好后,在主循环中,通过软件模拟I2C协议依次获取STM32温湿度数据、电机和LED的状态,调用相应的函数来实时更新显示内容。OLED显示模块子程序流程图如图3.3所示。

图3.3 显示模块子程序流程图
3.3.3 WIFI模块子程序流程图
在智能粮仓系统中,WIFI模块进行初始化,完成串口配置、模块硬件复位、基础AT指令参数初始化,判断模块是否已建立网络连接,未连接则重新联网流程,网络连接后,获取通信频段并解析请求内容。模块匹配通信频段,传输数据包,传输失败则重新传输数据,传输完成则流程结束。WIFI模块子程序流程图如图3.4所示。

图3.4 WIFI模块子程序流程图
3.3.4 图像采集与虫害检测子程序流程图
在智能粮仓系统中,ESP32-CAM模块进行初始化,摄像头采集图像数据通过YOLO算法识别虫害,并显示害虫名称、位置和识别率。客户端断开或系统退出,子程序结束。ESP32-CAM模块与STM32F103C8T6系统相互独立、互不影响。图像采集与虫害检测子程序流程图如图4.5所示。

图3.5 图像采集与虫害检测子程序流程图
3.4 云平台接入与移动端APP程序设计
在OneNET云平台创建产品,选择接入协议MQTT,数据协议OneJson,联网方式为WIFI。设置物模型,添加自定义功能点。在云平台设备详情中获取产品ID、设备ID和设备密钥,结合上述信息与时间戳,用OneNET-token计算工具计算token。设备上传数据点主题为$sys/{pid}/{device-name}/thing/property/post,设备接收平台下发数据需要订阅主题为$sys/{pid}/{device-name}/thing/property/set。使用MQTT.fx调试器模拟设备登录、上传数据和接收下发指令。云平台下达指令后,ESP01S凭借订阅的主题接收指令,通过串口通信传输给STM32F103C8T6,STM32F103C8T6调用cJSON解析平台指令,完成相应的LED和电机的控制。物模型配置图如图3.6所示。
物联网接入与APP教程视频链接:【小白STM32物联网智能家居案例STM32F103+ESP8266/MQTT+OneNet+UniApp/微信小程序】https://www.bilibili.com/video/BV1HH4y1o7EN?vd_source=62157b4982126e648e4051bdcd686ec9

图3.6 物模型配置
使用HBuilder X软件进行APP的编写。用软件运行到内置浏览器,可直观的看到APP的图像显示,在控制台中检测代码的错误,查看已经上报的数据信息和下发命令控制的信息。
通过设置view视图容器的属性,来进行页面的布局。web-view的组件是承载网页的容器。通过ESP32-CAM生成摄像头视频网页,再使用这个web-view的组件显示视频网页,将本地网址资源放置到uni-app项目根目录\hybrid\html文件夹下,将网址地址设置为ESP32-CAM生成的网址,在APP上就显示摄像头画面。将图片资源放置在\static文件中,设置好图片资源地址,调整好样式,图片能够成功显示。APP整体布局设计如图3.7所示。

图3.7 APP布局
主程序代码参考张继瑞:
//单片机头文件
#include "stm32f10x.h"
#include "stdint.h"
//网络协议层
#include "onenet.h"
//网络设备
#include "esp8266.h"
//硬件驱动
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "dht11.h"
#include "OLED.h"
#include "OLED_Data.h"
#include "Motor.h"
#include "Buzzer.h"
//C库
#include <string.h>
#include <stdint.h>
#include <stdio.h>
#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"mqtts.heclouds.com\",1883\r\n"
u8 temp,humi;
uint8_t KeyNum;
int8_t Speed;
/*
************************************************************
* 函数名称: Hardware_Init
*
* 函数功能: 硬件初始化
*
* 入口参数: 无
*
* 返回参数: 无
*
* 说明: 初始化单片机功能以及外接设备
************************************************************
*/
void Hardware_Init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断控制器分组设置
Delay_Init(); //systick初始化
Usart1_Init(115200); //串口1,打印信息用
Usart2_Init(115200); //串口2,驱动ESP8266用
Key_Init();
Led_Init(); //灯初始化
OLED_Init();
Motor_Init();
Key_Init();
Buzzer_Init();
OLED_ShowString(0, 0, "temp:00", 8);
OLED_ShowString(0, 16, "humi:00", 8);
OLED_ShowString(0, 32, "LED:00", 8);
OLED_ShowString(0, 48, "Speed:", 8);
OLED_Update();
while(DHT11_Init())
{
UsartPrintf(USART_DEBUG, "DHT11 Error \r\n");
DelayMs(1000);
}
UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
}
void Refresh_Data(void)
{
char buf[5];
sprintf(buf, "%2d", temp);
OLED_ShowString(40, 0, buf, 8);
sprintf(buf, "%2d", humi);
OLED_ShowString(40, 16, buf, 8);
if(led_info.Led_Status) OLED_ShowString(35, 32, "ON ", 8);
else OLED_ShowString(35, 32, "OFF", 8);
if(motor_info.Motor_Switch) OLED_ShowString(40, 48, "ON ", 8);
else OLED_ShowString(40, 48, "OFF", 8);
OLED_Update();
}
/*
************************************************************
* 函数名称: main
*
* 函数功能:
*
* 入口参数: 无
*
* 返回参数: 0
*
* 说明:
************************************************************
*/
int main(void)
{
unsigned short timeCount = 0; //发送间隔变量
unsigned char *dataPtr = NULL;
Hardware_Init(); //初始化外围硬件
ESP8266_Init(); //初始化ESP8266
UsartPrintf(USART_DEBUG, "Connect MQTTs Server...\r\n");
while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
DelayXms(500);
UsartPrintf(USART_DEBUG, "Connect MQTTs Server Success\r\n");
while(OneNet_DevLink()) //接入OneNET
DelayXms(500);
OneNET_Subscribe();
OLED_Update();
while(1)
{
if(++timeCount >= 40) //发送间隔5s
{
DHT11_Read_Data(&temp,&humi);
UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
OneNet_SendData(); //发送数据
timeCount = 0;
ESP8266_Clear();
}
dataPtr = ESP8266_GetIPD(0);
if(dataPtr != NULL)
OneNet_RevPro(dataPtr);
Refresh_Data();
DelayMs(10);
}
}
4虫害检测装置设计
4.1 诱捕器结构设计
诱捕器参考中储粮的结构,使用SolidWorks软件设计,分为三个部分,顶壳、底壳、漏斗。顶壳的上端设置凹槽放置粮仓系统外壳,其尺寸大小与外壳相差0.2mm。下端凹槽放置ESP32-CAM摄像头。依据害虫的钻孔性,底壳设计多个圆孔来诱捕害虫。底部设有漏斗,可放置信息素。诱捕器装配体如图4.1所示。

图4.1诱捕器装配体
soliworks教程视频链接:【SOLIDWORKS 教学 精品教程 | 2024年新修 | B站 点赞 播放 收藏 NO.1】https://www.bilibili.com/video/BV1iw411Z7HZ?vd_source=62157b4982126e648e4051bdcd686ec9
4.2 虫害图像识别检测
本文设计的虫害诱捕器采用顶壳、底壳、漏斗三段式结构。顶壳上下端分别预留智能监测模块安装槽和ESP32-CAM摄像头安装槽,尺寸公差控制在±0.2mm;将摄像头模块正确放置在安装槽后,打开摄像头即可清晰观察到诱捕器内部。底壳开设有多个通孔,漏斗用于放置信息素以诱捕害虫。ESP32-CAM摄像头负责采集图像数据,通过YOLO算法自动识别害虫并显示其匹配率与位置,实现害虫的图像识别功能。
YOLO采用单一的卷积神经网络(CNN)同时预测边界框坐标和类别概率。该模型将输入图像划分为若干网格,每个网格单元负责预测其区域内的物体,并过滤低置信度结果,仅保留高准确度的检测输出。其核心理念是将目标检测视为一个单一的回归问题,而非传统的多阶段任务。通过对整张图像进行一次性分析,YOLO模型在实时应用中实现了卓越的速度和效率。
YOLO部署ESP32-CAM的步骤。配置Arduino IDE开发环境,安装Eloquent ESP32库,选择库中Collect Images from Edge Impulse的示例库,修改代码中的WIFI配置,并将底部配置修改为aithinker。将代码上传至ESP32-CAM。ESP32-CAM上电后,Arduino IDE软件的串口监视器中获取内网网址,通过该网址进行柑桔小实蝇、金龟子和星天牛的图像采集。采集完成后,下载包含图像数据集的ZIP文件,在EDGE Impulse平台上传采集到的数据集,在标注队列中,对上传图像进行框选,设置对应的标签名。创建Impulse,设置图像处理控制块和目标检测模块,其余保持默认配置,完成后点击保存Impulse。在图像设置中将色彩深度修改为灰度并保存参数,点击生成特征。进入目标检测模块,设置训练周期为100,学习率为0.001,模型训练完成后,即可查看训练结果图。模型训练结果图如图4.2所示。
YOLO部署视频教程链接:【如何使用ESP32-CAM和Edge Impulse YOLO模型进行物体检测】https://www.bilibili.com/video/BV11ZbSeEE63?vd_source=62157b4982126e648e4051bdcd686ec9

图4.2 模型训练结果
实物演示视频
【跟江协、壹知半解、Expert实验室学习后做的stm32物联网,与ESP32部署yolo】https://www.bilibili.com/video/BV1jX7D6DEQ7?vd_source=62157b4982126e648e4051bdcd686ec9
更多推荐



所有评论(0)