目录
- 修改记录
- 1.摘 要
- 2.整体功能分析
- 3.硬件选型
-
- 3.1 OpenMV4 Cam H7
- 3.2 STM32F103ZET6
- 3.3 DS3120舵机
- 3.4 LED补光板
- 3.5 供电及稳压
- 3.6 硬件连接
- 4.软件功能实现
-
- 4.1 OpenMV部分的功能实现
-
- 4.1.1 整体逻辑分析
- 4.1.2 对被测物体的识别
- 4.1.2 寻找最大色块区域
- 4.1.3 判断被测物体所在区域
- 4.1.5 串口发送数据
- 4.2 STM32部分软件功能的实现
-
- 4.2.1 整体逻辑分析
- 4.2.2 串口接收数据
- 4.2.3 定时器输出PWM波
- 4.2.4 控制舵机旋转
- 5. 总结
- 6. 第一次补充(2022.3.12)
-
- 6.1 PID控制追踪
- 6.2 PID控制代码部分
-
- 6.2.1 OpenMV代码
- 6.2.2 STM32代码
- 6.3 第一次补充总结
- 7. 第二次补充(2022.10.22)
-
- 7.1 硬件部分
-
- 7.1.1主控PCB
- 7.1.2 补光板PCB
- 7.1.3OPENMV串口扩展板
- 7.2 代码部分
-
- 7.2.1 openmv部分
- 7.2.2 stm32部分
- 7.2.3 3D建模
- 7.4 演示与购买
-
- 7.4.1 演示
- 7.4.2 购买
- 7.5 第二次补充总结
修改记录
序 | 修改时间 | 修改内容 |
---|---|---|
1 | 2022-3-12 | 增加第一次补充内容:PID控制,详细请见“6. 第一次补充(2022.3.12)” |
2 | 2022-4-21 | 修改了PID代码部分“误差的计算公式”错误 ,由“ pid_x.Actual – pid_x.Set ”修改为“pid_x.Set – pid_x.Actual”,详细请见“6.2.2 STM32代码”部分 |
3 | 2022-10-22 | 增加第二次补充内容:硬件部分改为PCB,主控芯片替换为STM32F103C8T6,详细请见“7. 第二次补充(2022.10.22)” |
1.摘 要
实现效果
【毕业设计】基于Stm32及OpenMV的云台追踪装置
我会把我做该毕业设计的整体思路以及部分的主要代码在文章中详细介绍,很简单的,在追踪部分没有用到PID控制哦!大家可以放心食用(手动滑稽)!很容易复刻的!
若是你很懒,不想自己一步一步自己做的话,可以直接去下载论文和源代码。
代码:【代码】基于STM32及OpenMV的云台追踪装置_毕业设计
论文:【论文】基于STM32及OpenMV的云台追踪装置_毕业设计
全家桶:【毕设全家桶】基于Stm32及OpenMV的云台追踪装置_毕业设计
(温馨提示:是要花钱的哦,我觉得你看完这篇文章完全可以自己做出来的,没必要花钱的,所以请一定要仔细看下去哦!)
2022.3.12 第一次补充:
新添加了PID控制追踪的代码:
【代码(PID控制)】基于Stm32及OpenMV的云台追踪装置_毕业设计
注:在2022.3.12前,购买过我的云台追踪的代码或是全家桶的小伙伴,可以带着购买记录私信我,可以免费获得这个PID控制的代码。
2.整体功能分析
完成一个好的设计是要在实现了它的功能的基础上,所以在进行设计之前需要确定一下本设计要实现的功能,然后再进行相应的设计。在本设计中使用OpenMV作为视觉模块,STM32作为主控制MCU去控制舵机旋转,以实现追踪功能。整体功能流程图如图2.1所示。
OpenMV:作为识别模块,主要实现物体识别的功能,并将识别到的物体的位置信息通过串口传递给STM32。
STM32的串口部分:主要功能是与OpenMV进行数据交互,接收OpenMV发来的位置信息。
STM32的定时器部分:主要功能是通过库函数输出PWM波,从而控制X、Y轴的两个舵机旋转。以达到追踪效果。
整体功能流程图
3.2 STM32F103ZET6
本次设计中使用STM32F103ZET6最小系统板作为核心MCU,实物如图3.3所示。使用其他的芯片已ok的,只需要确定该芯片可以输出两路PWM波、一个串口就行。
3.5 供电及稳压
供电使用3s锂电池作为整体装置的供电,3S锂电池可以提供11.1V的电压,3S锂电池实物图如图3.9所示。
3.6 硬件连接
硬件连接部分使用杜邦线连接,连接如下:3S锂电池接稳压板输入端以及直接给LED补光板供电,稳压板输出端接OpenMV的VIN和GND引脚、STM32的5V和GND引脚以及两个舵机的正(红色)负(棕色)极。OpenMV的P4引脚(串口3的TX)接STM32的PA10引脚(串口1的RX),OpenMV的P5引脚(串口3的RX)接STM32的PA9引脚(串口1的TX),STM32的PC7引脚(定时器3通道2)接x轴的舵机的信 线(橙黄色),STM32的PC7引脚(定时器3通道1)接y轴的舵机的信 线(橙黄色)。
4.软件功能实现
软件部分的功能主要分为两部分,一个是OpenMV部分,另一是STM32部分,OpenMV主要实现功能:完成被测物体的识别、寻找最大色块区域、判断被测物体所在区域、通过串口发送被测物体的位置信息。STM32部分主要实现功能:使用串口接收OpenMV发来的数据、通过定时器输出PWM波、以及实现控制舵机旋转追踪的目的。
4.1 OpenMV部分的功能实现
4.1.1 整体逻辑分析
首先对OpenMV部分实现功能:首先进行摄像头的初始化,确保其可以正常的使用。其次设置图像格式,选用RGB模式,使其图像为彩色模式,然后设置图像大小,设置为QVGA格式,分辨率为320*240 dpi。而后设置颜色阈值,确保OpenMV可以识别到此颜色。然后设置白平衡,关闭自动白平衡,避免对识别的影响。接着对串口初始化,确保串口可以正常的发送数据。到此准备工作完成,进入识别部分,首先截取图像并返回,然后判断图像内是否识别到红色区域:否则循环等待,是则判断区域是否为最大区域,否则返回等待,是则用矩形框标出中心位置,判断中心位置所在的区域,并将位置信息通过串口发出。以上部分除了判断所在区域外的所有代码都可以在星瞳科技的官 上找到,并且官方还有配套的详细讲解。
戳这里直接进入:星瞳科技官
调整好红色阈值后,赋值LAB阈值的参数,并赋值给red_threshold,调用MicroPython函数库中的image.find_blobs()函数,对该色域进行识别。该功能部分程序如下:
其中:
while循环之前为OpenMV初始化部分:
RGB565为彩色模式(颜色识别嘛,肯定得用彩色模式);
QVGA为图像大小(320dpi * 160dpi,像素点),这个可以根据选的OpenMV的性能来选择;
关闭白平衡:是指关闭系统的自动白平衡,自动白平衡会对颜色识别造成影响。
4.1.2 寻找最大色块区域
在OpenMV追踪识别的过程中,可能出现背景或是其他区域出现小面积的红色区域,如图所示。这会对识别造成影响,所以需要用程序过滤掉那些小的红色区域。
4.1.3 判断被测物体所在区域
本段程序是判断被测物体所在区域,将OpenMV拍摄到的画面分为五个区域,分别为中心区域、左上区域、右上区域、左下区域、右下区域,分布结构如图所示。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!