当前位置: 首页 > news >正文

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

文章目录

目录

文章目录

前言

一、效果展示

二、完整流程

1、STM32CubeMX配置

2、Keil编辑

3、硬件接线

4、参数调试

5、图像处理调试

三、总结


前言

        基于前面的系列文章,已基本介绍完了基于STM32+OpenMV的视觉巡线小车,本文将以小编自己的小车对其进行一下总结。

         系列文章请查看:视觉巡线小车——STM32+OpenMV系列文章


一、效果展示

        视频展示,无倍速。

视觉巡线小车(STM32+OpenMV)视频

完整工程如下,可进行二次开发(有需要的可以留言):

        其中包含STM32CubeMX生成的Keil工程,需要添加外设功能时,可用CubeMX打开进行配置;OpenMV图像处理代码示例,可自行修改代码,实现更多识别功能以及进一步优化代码;附加野火的多功能调试助手,用来进行PID参数的调试(主要是速度环),助手免安装;最后是一个简单的配置调试流程,也可参看本文后续内容。

        写这个示例,主要是为了方便后续的二次开发,比如在遇到各种设计以及巡线作品制作时,只需要在此基础上添加相关功能即可,避免每次都从零开始。

二、完整流程

         整体控制方案:

1、STM32CubeMX配置

2、Keil编辑

        部分代码编辑如下:

3、硬件接线

        由于硬件差异,接线只做参考。

电机A:   PWMA—PA8; AIN1—PB14;AIN2—PB15

                编码器A—PA6

                编码器B—PA7

电机B:    PWMB—PA11;BIN1—PB12;BIN1—PB13

                编码器A—PB6

                编码器B—PB7

        注意:电机的极性需要自己调整,当电机的转向极性有问题时,交换驱动引脚的接线,当编码器测得速度的极性有问题时,交换交换编码器AB相的接线。

串口接线:

        OpenMV与单片机通讯:

                OpenMV_Rx:P0—STM32_Tx2:PA2

                OpenMV_Tx:P1—STM32_Rx2:PA3

        注意:不同型号OpenMV的串口号有区别,需仔细检查,切勿将线接反了,需供地。

        单片机与上位机(野火多功能调试助手)通讯:

                TTL_Rx—STM32_Tx3:PB10

                TTL_Tx—STM32_Rx3:PB11

        注意:需要供地。

4、参数调试

        找到自己满意的参数即可,电机B的调试方法一样。

        注意:如果调试助手出现卡顿现象,可以适当将其所用的串口中断优先级调高一些。

5、图像处理调试


三、总结

        如果完成了前面 视觉巡线小车——STM32+OpenMV系列文章的内容,那么已经实现了一辆基于STM32+OpenMV的视觉巡线小车了。可根据此框架加入自己的功能,如识别线路分支,指示灯提示,蜂鸣器报警,按键切换状态,OLED显示参数,陀螺仪检测姿态等等。

        到此你已经学到了:

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

                2、编码器测速;

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

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

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

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

小白文章,有误之处望指正!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Dify中HTTP请求节点的常见操作
  • 数据url
  • C++中 cin、cin.get()、cin.getline()、getline() 的区别
  • Blender材质-PBR与纹理材质
  • scratch聊天机器人 2024年6月scratch四级 中国电子学会图形化编程 少儿编程等级考试四级真题和答案解析
  • sql server 连接报错error 40
  • 基于内容的音乐推荐网站/基于ssm的音乐推荐系统/基于协同过滤推荐的音乐网站/基于vue的音乐平台
  • 基于Element UI内置的Select下拉和Tree树形组件,组合封装的树状下拉选择器
  • 这一文,关于 Java 泛型的点点滴滴 一(泛型基础、类型擦除)
  • Javascript面试基础6【每日更新10】
  • MyBatis中的赋值语句:#{}和${}的区别差异(常见面试题)
  • 【Python机器学习】决策树的构造——划分数据集
  • 2024最新Uniapp的H5网页版添加谷歌授权验证
  • linux进程——解析命令行参数——环境变量详解
  • Spring Security面试三道题
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS6 编译安装 redis-3.2.3
  • eclipse(luna)创建web工程
  • Fastjson的基本使用方法大全
  • Go 语言编译器的 //go: 详解
  • Hexo+码云+git快速搭建免费的静态Blog
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • PV统计优化设计
  • Shell编程
  • spring boot 整合mybatis 无法输出sql的问题
  • spring-boot List转Page
  • 构建工具 - 收藏集 - 掘金
  • 如何编写一个可升级的智能合约
  • 实现菜单下拉伸展折叠效果demo
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 我的业余项目总结
  • 译自由幺半群
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)IOS中获取各种文件的目录路径的方法
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *1 计算机基础和操作系统基础及几大协议
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net Memory Profiler的使用举例
  • .NET 发展历程
  • .net 受管制代码
  • .NET企业级应用架构设计系列之技术选型
  • .Net小白的大学四年,内含面经
  • /proc/vmstat 详解
  • []sim300 GPRS数据收发程序
  • [10] CUDA程序性能的提升 与 流
  • [Ariticle] 厚黑之道 一 小狐狸听故事