去年由于参加电赛接触到了openmv和k210,虽然没有拿到奖但还是收获很多的,最近看到openmv有一个追小球小车的例程,秉承着学习的态度(主要是觉得买openmv现成的小车模块直接下载代码实现功能没意思),想着将代码移植到stm32上实现追小球的功能,通过大概2周的调试和学习终于实现了追小球的功能,觉得单纯的比买opmv的小车模块和opmv组装成小车直接下载代码实现功能要学到很多,对于我来说收获最大的是学会了串口通信中的数据打包和解析,和pid算法的简单理解和应用,其实之前有很多追小球的文章,但是我看过之后大部分写的是关于串口通信数据打包和解析的问题,或者是没有彻底的按照openmv的官方例程的原理进行移植,官方例程是小车可以追指定颜色的小球,同时当小球和车的距离过近时,小车可以后退,这里用到了2次pid;而有些文章只实现了可以追小球,不能实现当小车和球距离过近时小车可以后退的功能,他们用的是openmv的测距功能,当小车和小球距离达到他们设定的距离时,小车便自己停下来,当小球远离到大于设置的距离后小车在追上去。不是说他们不好,只是自己觉得没有官方实现方式丝滑(只是个人觉得,大佬勿喷),所以特地写一个和官方实现原理相同的文章。

一,所需物品

(1)openmv摄像头一个

(2)正点原子stm32精英板一个(作者自己用的板子,当然也可以是其它型号的32板子)

(3)一个TB6612电机驱动模块

(4)车模一个(作者买的是自带两个带编码器的直流电机的车模)

​​​​​​​

(5)电池2组(作者就不贴图片了,应该很好找到):

第一组电池:一个12伏的电池(电池盒里装3个4伏电池),作用:为了给TB6612电                        机驱动模块供电。

第二组电池:一个5伏的锂电池,作用:给单片机单独供电。

(6)杜邦线若干

二,功能实现基本思路:(如果还没有看过openmv官方追小球小车教学视频和资料的同学,请先          去openmv网站经行学习,了解大概思路,否则你很难理解下面这段文字)

(1)首先是openmv端,通过直接调用openmv自带的颜色识别函数,识别你自己设置的颜                       色(摄像头通过识别你设置的颜色的阈值来实现识别颜色的功能,阈值的设置方法                         openmv官方颜色识别教程视频里面有大家可去自行观看),识别到指定颜色后                               openmv通过串口通信的方式,将目标颜色物体的横坐标x和物体宽w和高h发送给                             stm32。

(2)stm32端,通过串口接收标志的判断,判断是否接收到openmv发来的数据,当收到                         openmv发来的数据后,将横坐标x减去图像一边的长度,作为误差利用pid算法算出输出                 值ouput_x;将目标物体的宽w和高h相乘得到物体的色块面积,物体色块面积减去你设置                   的目标色块面积作为误差,利用pid算法计算出输出值output_y;算出之后得到左右电机                 的pwm值,左边电机pwm值:-output_y+ouput_x;右边电机pwm值:-output_y-                             ouput_x。将pwm值代入电机控制函数实现追踪小球的功能。

注:如果还没有看过openmv官方追小球小车教学视频和资料的同学,请先去openmv网站经                  行学习,了解大概思路,否则你很难理解下面这段文字(先去看,再来看这里你能豁然                   开朗哦)

三,功能实现代码

(1)openmv端

每行代码后面我已经标写了中文注释方便大家理解,其中最值得注意的是串口数据通信,我采用的是数据打包方式进行发送,因为我们采用串口通信大部分时候并不是一次只发一个数据,而是发很多个数据,上述代码中我们实际想要发3个数据(目标物体中心横坐标,目标物体宽度,目标物体高度) ;而且正点原子的串口每接收到一个数据就要产生一次中断,如果想接受完我们要发的数据就要产生3次中断;所以为了防止处理数据出错,和提高处理数据的准确性,我们在这三个数据之前先发2个数据,之后再发一个数据,一次性发6个数据,前面俩个叫帧头,后面一个叫帧尾,单片机通过判断帧头和帧位数据来判断数据是否正确,这就叫打包数据,这六个数据组成的一个数据集就叫一帧,只是简单给大家说一下,详细的大家可以自己去了解。

(2)stm32端

a,串口部分(进行数据解析)

第一个函数是串口初始化函数,第二个函数是串口中断函数, 第三个函数时是串口数据解析函数,通过串口数据解析函数得到正确的数据,当收到的结果正确时,把串口接收完成标志位赋值一,main函数通过判断串口接收完成标志位来判断是否接收到一帧数据,并启用pid算法。

b,main函数部分

 

这部分代码相信大家都能看懂,再此就不赘述了。

关于本项目完整代码(电机驱动,pid等)大家可私信我发给大家

项目成果视频如下:

视频在百度网盘:

链接: https://pan.baidu.com/s/1ivVLkaaWO66aYTliKbVQcQ

提取码: 1234

基于STM32+Openmv的追小球(颜色追踪)小车——一篇解决所有基本问题相关推荐

  1. 基于STM32的智能循迹避障小车实验(小车运动部分)

    写在前面 这个实验是关于智能小车的实验,现在的想法就是先做出一个循迹和避障功能,后续可能会再添加一些其他的模块. 我在做这个实验之前基本了解了F1系列开发板的大部分模块,如果没有学习之前的模块,建议先 ...

  2. 【学习笔记】stm32+openmv串口通信实现颜色识别

    个人笔记.这是之前的一个实验,现在把它整理出来. 本实验用的是stm32h743和openmv作为硬件,实现用openmv识别出我们想要的颜色,将获取的颜色坐标和目标区域的宽.高 通过串口发送给 st ...

  3. OpenMV:02追小球的云台

    pid.py(直接在网上复制即可) from pyb import millis from math import pi, isnanclass PID:_kp = _ki = _kd = _inte ...

  4. 基于STM32的智能循迹避障小车

    [1]研究背景 随着计算机,微电子技术的快速发展,智能化技术的开发越来越快,智能程度也越来越高,应用的范围也得到了极大的扩展.因此,基于嵌入式技术的智能小车应运而生. 近来两年,智能小车在生活中有着广 ...

  5. 基于STM32设计的避障寻迹小车

    一.前言 1.1 项目背景 根据美国玩具协会在一项研究中,过去几年全球玩具销售增长与GDP的世界平均水平大致相同.但全球玩具市场的内部结构已经占据了巨大的位置变化:传统玩具的市场份额正在下降,高科技电 ...

  6. 基于STM32 Cortex-M3内核F103制作的智能小车项目

    目录 一.简单介绍: 二.硬件支持: 三.软件部分介绍: 四.整体调试: 五.学习总结: 一.简单介绍: 花上一周的时间制作一个智能小车玩玩吧,一直想要制作一辆自己的智能小车,看多了网上的各种小车,有 ...

  7. [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息

    系列文章目录 第一节 stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32 ...

  8. 记录基于STM32的独轮车测试板构建(一)电机篇

    今年是学校第一次参加智能车竞赛,毫无传承下想要脱颖而出那必定得先发制人,预选的是独轮车组,得用完全陌生的英飞凌单片机搞全新的独轮车模,难度不小.前些天看了看龙邱的库,在配套的母版上确实很简单好用,但独 ...

  9. 基于STM32的高精度温度测控系统-原理图设计

    基于STM32的高精度温度测控系统,本篇为原理图设计分析篇 高精度温度测控仪设计原理图篇(已更新) 高精度温度测控仪设计PCB篇(已更新) 高精度温度测控仪设计STM32代码篇(未更新) 高精度温度测 ...

最新文章

  1. R语言Logistic回归模型案例基于AER包的affair数据分析
  2. 《七笔勾》--陕北风光
  3. Android开源框架源码鉴赏:Fresco
  4. 安装NodeJs运行环境
  5. Codeigniter中创建LeanCloud云函数实现微信支付
  6. Hadoop1——创建虚拟机
  7. 在Mac中用快捷键快速插入日期时间
  8. 【Hive】日期函数
  9. logistics regression 线性不可分转换成线性可分
  10. DMS经销商管理系统解决方案
  11. synchronized原理
  12. linux加静态路由命令,LINUX添加静态路由
  13. 计算机仿真在线投稿系统,常见问题解决-计算机仿真官方投稿系统.doc
  14. 对PVP手游产品《王者荣耀》的一些思考
  15. Java基础面试 --序列化,反射,拷贝
  16. c语言程序设计指针何钦铭ppt,C语言程序设计 教学课件 作者 何钦铭 c2.ppt
  17. Mob 秒验 实测评
  18. plotly绘制简单图形4--饼形图
  19. 【《2021机器学习-李宏毅》学习笔记】
  20. SafeNet通过新的光纤签名设备加强应对电子银行诈骗

热门文章

  1. win7蓝屏0x000000f4修复_紧急通知关于电脑2月20号蓝屏代码0X000000F4的处理和预防方法...
  2. 优选策略的自适应蚁狮优化算法-附代码
  3. 中国真的要成为全球软件的测试基地吗?
  4. 三角函数知识点及公式大全
  5. 外汇黄金交易平台排行榜2019
  6. c语言编游戏怎么设置背景图,steam如何设置背景图片 steam个人背景图片设置教程...
  7. iOS 按钮图片和文字位置的各种设置(Swift代码)
  8. 基于SSM框架的重工旧书网(二手闲置书城、图书商城)
  9. 西门子S7-1200PLC 与V20变频器 的MODBUS RTU通信教程
  10. 华为云计算之FusionCompute8.0版本安装