视觉巡线小车——STM32+OpenMV

系列文章目录

第一章:视觉巡线小车——STM32+OpenMV(一)

第二章:视觉巡线小车——STM32+OpenMV(二)

第三章:视觉巡线小车——STM32+OpenMV(三)

第四章:视觉巡线小车——STM32+OpenMV(四)

视觉巡线小车(STM32+OpenMV)——总结

         通过制作小车,可以get到:

1、直流减速电机的控制;

2、编码器测速;

3、STM32——定时器(PWM、正交编码、中断)、串口接收发送等;

4、OpenMV——图像二值化,线性回归处理等;

5、PID算法——速度环、转向环控制以及串级使用;

6、数据解析——串口接收处理。


前言

一、开发环境

1、Keil

2、STM32Cube MX

3、OpenMV IDE

4、野火PID串口调试助手

二、硬件准备

1.单片机

2.OpenMV

3、减速电机

4、电机驱动

总结


前言

        该系列文章主要介绍,如何使用STM32+OpenMV来实现一个基于视觉处理的自主巡线小车。主要包括,减速电机的驱动,速度采集,PID速度闭环控制,PID参数整定,OpenMV黑线视觉处理,串口数据解析,最后小车巡线闭环控制。功能还是比较单一,最终实现了小车的视觉巡线功能,其他功能需要自行二次开发,如识别线路分支,指示灯提示,按键切换状态,OLED显示参数,陀螺仪检测姿态等等。

        效果展示:视觉巡线小车(STM32+OpenMV)——总结


一、开发环境

1、Keil

        主要对STM32进行逻辑代码的编写,以及调试。

2、STM32CubeMX

        通过图形化的方式对STM32的外设进行配置,简单方便,节省时间。

3、OpenMV IDE

        对OpenMV进行开发,主要使用Python语言。推荐参考内容:

OpenMV下载 | 星瞳科技

OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_open mv

4、野火PID串口调试助手

        通过使用该助手,可以观察实际值与目标值的曲线进行PID参数的调整,直观便捷。推荐参考内容:

1、野火多功能调试助手上位机 — 野火产品资料下载中心 

2、野火电机驱动板 — 野火产品资料下载中心 

二、硬件准备

1.单片机

        采用STM32F103C8T6即可。这里主要用到该芯片的定时器、中断、串口等功能,定时器主要用于生成PWM、编码器解码、产生定时中断;串口主要用来接收OpenMV的数据和发送数据到上位机。

2.OpenMV

        OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。OpenMV搭载了MicroPython解释器,使其可以在嵌入式端进行python开发。OpenMV基于32位,ARM Cortex-M7内核的OpenMV-H7,并结合各种摄像头,可以进行多种机器视觉应用的实现,比如人脸检测,物体分类等。OpenMV搭载MicroPython解释器,这允许你在嵌入式上使用Python来编程 (Python 3 to be precise). Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。 使用python遍历每一个色块,就可以获取他们所有信息,而这些,只需要两行代码!

        主要作用:进行图像处理,对黑线图像进行二值化处理,再对其及进行线性回归处理等。

推荐参考内容:

OpenMV | 星瞳科技

OpenMV Cam | 星瞳科技

10分钟快速上手 · OpenMV中文入门教程

3、减速电机

        减速电机需要自带编码器,方便测速。至少需要两个减速电机加一个万向轮进行辅助,有兴趣的可以挑战两轮平衡小车巡线。

4、电机驱动

        TB6612是一款功能强大的直流电机驱动器,其内部高度集成化,使其运用电路设计简单。

AIN1

AIN2

PWMA

Motor

1

0

1

正转

0

1

1

反转

1

1

1

刹车

0

0

0

停车

X

X

X

刹车


完结

        欢迎查看!!!

第一章:视觉巡线小车——STM32+OpenMV(一)

第二章:视觉巡线小车——STM32+OpenMV(二)

第三章:视觉巡线小车——STM32+OpenMV(三)

第四章:视觉巡线小车——STM32+OpenMV(四)

视觉巡线小车(STM32+OpenMV)——总结

OpenMVSTM32巡线代码可以通过串口通信进行交互。OpenMV使用C语言实现了核心的机器视觉算法,包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等等。\[1\]而STM32则负责处理数据,将数组中的二进制数转换为十六进制数,并打包发送给OpenMV。\[2\]下面是一个示例代码: 在OpenMV端,发送数据的函数可以如下定义: ```python def sending_data(data1, data2): global uart data = ustruct.pack("<bbii", 0xAA, 0xAE, data1, data2) uart.write(data) ``` 在STM32端,接收数据的函数可以如下定义: ```c #include <stdio.h> void receive_data() { if (uart_available()) { uint8_t tmp_data\[6\]; uart_read(tmp_data, 6); // 处理接收到的数据 // ... } } ``` 通过以上代码,OpenMVSTM32可以通过串口通信来传递巡线所需的数据。 #### 引用[.reference_title] - *1* *2* [STM32循迹小车系列教程(四)—— 使用OpenMV循迹](https://blog.youkuaiyun.com/weixin_49821504/article/details/130451123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32送药小车(四):Openmv实现数字识别,巡线以及串口通信](https://blog.youkuaiyun.com/ssfight1/article/details/123117274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画凉ZL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值