0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

19.5-星曈科技 STM32接收openmv数据-根据状态控制电机 超详细OpenMV与STM32单片机通信 OPENMV和STM32的识别追踪小车

dfhjgfg 来源:dfhjgfg 作者:dfhjgfg 2024-08-20 11:24 次阅读

功能介绍放开头, 使用便捷无需愁

这是全网最详细、性价比最高的STM32实战项目入门教程,通过合理的硬件设计和详细的视频笔记介绍,硬件使用STM32F103主控资料多方便学习,通过3万字笔记、12多个小时视频、20多章节代码手把手教会你如何开发和调试。让你更快掌握嵌入式系统开发。

V3.3.0-STM32智能小车

视频: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click

V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。

19.5-STM32接收数据-根据状态控制电机

前面我们测试了openmv能够正确识别,正确发送数据、STM32能够正确接收、那么下面STM32单片机就要开始控制电机了。

这里控制电机其实和我们红外循迹PID基本一致。

需要注意的 因为我们的摄像头更加前瞻,距离车轮更远,所以电机同样的摆动幅度,摄像头摆动更大。

先分析一下之前的代码,然后明白我们要改什么了就
在这里插入图片描述
所以我们需要上面红色减蓝色 的部分

这里我们先定义一个结构体,这个是摄像头PID循迹,仿造那个红外对管的就可以。

tPid pidOpenmv_Tracking;//openmv摄像头的PID结构体类型变量

在这里插入图片描述

pidOpenmv_Tracking.actual_val=0.0;
	pidOpenmv_Tracking.target_val=0.00;//摄像头PID 的目标值为0
	pidOpenmv_Tracking.err=0.0;
	pidOpenmv_Tracking.err_last=0.0;
	pidOpenmv_Tracking.err_sum=0.0;
	pidOpenmv_Tracking.Kp=-0.4;//摄像头循迹PID的K和d先调整的小一些
	pidOpenmv_Tracking.Ki=0;
	pidOpenmv_Tracking.Kd=0.10;

在这里插入图片描述
声明一下

extern tPid pidOpenmv_Tracking;//摄像头的PID

在这里插入图片描述

sprintf((char*)OledString, "lHW:%d  ", g_lHW_State);//视觉识别结果
		OLED_ShowString(0,0,OledString,12);//这个是oled驱动里面的,是显示位置的一个函数,
		
		g_fHW_PID_Out = PID_realize(&pidOpenmv_Tracking,g_cThisState);//PID计算输出目标速度 这个速度,会和基础速度加减

		g_fHW_PID_Out1 = 0.5 + g_fHW_PID_Out;//电机1速度=基础速度+循迹PID输出速度
		g_fHW_PID_Out2 = 0.5 - g_fHW_PID_Out;//电机1速度=基础速度-循迹PID输出速度
		if(g_fHW_PID_Out1 >1.2) g_fHW_PID_Out1 =1.2;//进行限幅 限幅速度在0-1.2之间
		if(g_fHW_PID_Out1 < 0) g_fHW_PID_Out1 =0;
		if(g_fHW_PID_Out2 >1.2) g_fHW_PID_Out2 =1.2;//进行限幅 限幅速度在0-1.2之间
		if(g_fHW_PID_Out2 < 0) g_fHW_PID_Out2 =0;
		if(g_cThisState != g_cLastState)//如何这次状态不等于上次状态、就进行改变目标速度和控制电机、在定时器中依旧定时控制电机
		{
			motorPidSetSpeed(g_fHW_PID_Out1,g_fHW_PID_Out2);//通过计算的速度控制电机
		}
		
		g_cLastState = g_cThisState;//保存上次红外对管状态

在这里插入图片描述
注意摄像头不能仰角太大
在这里插入图片描述

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355726
  • 小车
    +关注

    关注

    0

    文章

    54

    浏览量

    20929
  • 单片机通信
    +关注

    关注

    1

    文章

    12

    浏览量

    15388
  • 控制电机
    +关注

    关注

    0

    文章

    240

    浏览量

    18119
  • openMV
    +关注

    关注

    3

    文章

    39

    浏览量

    9810
收藏 人收藏

    评论

    相关推荐

    第19.1 章-瞳科技 OpenMV视觉循迹功能 详细OpenMVSTM32单片机通信

    第19.1 章-[瞳科技]OpenMV视觉循迹功能 详细OpenMVSTM32
    的头像 发表于 08-20 11:41 960次阅读
    第19.1 章-<b class='flag-5'>星</b>瞳科技 <b class='flag-5'>OpenMV</b>视觉循迹功能 <b class='flag-5'>超</b><b class='flag-5'>详细</b><b class='flag-5'>OpenMV</b>与<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b><b class='flag-5'>通信</b>

    19.3-科技 openmv Hopenmv发送五个uchar Openmv+STM32F103C8T6视觉巡线小车 STM32循迹小车系列教程

    19.3-【科技】openmv Hopenmv发送五个uchar Openmv+STM32F103C8T6视觉巡线小车
    的头像 发表于 08-20 11:32 872次阅读
    19.3-<b class='flag-5'>星</b><b class='flag-5'>曈</b>科技 <b class='flag-5'>openmv</b> Hopenmv发送五个uchar <b class='flag-5'>Openmv+STM32</b>F103C8T6视觉巡线<b class='flag-5'>小车</b> <b class='flag-5'>STM32</b>循迹<b class='flag-5'>小车</b>系列教程

    19.4-STM32接收数据-状态显示在屏幕 openMV寻迹与小车控制 Openmv+STM32F103C8T6视觉巡线小车

    19.4-STM32接收数据-状态显示在屏幕 openMV寻迹与小车
    的头像 发表于 08-20 11:12 906次阅读
    19.4-<b class='flag-5'>STM32</b><b class='flag-5'>接收</b><b class='flag-5'>数据</b>-<b class='flag-5'>状态</b>显示在屏幕 <b class='flag-5'>openMV</b>寻迹与<b class='flag-5'>小车</b><b class='flag-5'>控制</b> <b class='flag-5'>Openmv+STM32</b>F103C8T6视觉巡线<b class='flag-5'>小车</b>

    怎样设计OPENMVSTM32识别追踪小车

    OPENMVSTM32识别追踪小车详细版)之STM32
    发表于 08-11 06:27

    OpenMvSTM32通信问题

    问题,刚开始不知道哪里出了问题,一直通信失败,明明使用TTL串口接收OpenMv发送的数据是可以在串口调试助手上显示的,但就是无法发给Stm32
    发表于 08-16 07:44

    STM32openmv通信的相关资料分享

    最近需要用到openmv进行追踪物体,所以在此做个小结,其中这些文章给我很大的帮助,建议可以去看详细OpenMV
    发表于 02-21 06:47

    基于OPENMVSTM32识别追踪小车设计实现

    OPENMVSTM32识别追踪小车详细版)实现:通过O
    发表于 02-25 06:21

    OpenMvstm32简单串口通信

    前言刚开始学openmv与32串口通信,我是用的stm32f103的板子。开始想简单发送字符或者16位数试验一下,然后就遇到了个小问题,即openmv
    发表于 12-16 16:56 27次下载
    <b class='flag-5'>OpenMv</b>与<b class='flag-5'>stm32</b>简单串口<b class='flag-5'>通信</b>

    科技】OpenMv笔记——利用OpenMVSTM32进行串口通信

    利用OpenMVSTM32进行串口通信OpenMV端的程序# Untitled - By: dell - 周一 7月 19 2021# Blob Detection and uart
    发表于 12-24 18:51 27次下载
    【<b class='flag-5'>星</b><b class='flag-5'>曈</b>科技】<b class='flag-5'>OpenMv</b>笔记——利用<b class='flag-5'>OpenMV</b>与<b class='flag-5'>STM32</b>进行串口<b class='flag-5'>通信</b>

    OpenMV识别色块并且与STM32串口通信

    。因为视觉部分有两个任务,所以用单片机STM32发送“1”,开始颜色识别,发送“2”,开始特征点识别。不发送则不识别
    发表于 12-24 19:03 44次下载
    <b class='flag-5'>OpenMV</b><b class='flag-5'>识别</b>色块并且与<b class='flag-5'>STM32</b>串口<b class='flag-5'>通信</b>

    STM32openmv通信(HAL库)

    最近需要用到openmv进行追踪物体,所以在此做个小结,其中这些文章给我很大的帮助,建议可以去看详细OpenMV
    发表于 12-24 19:16 23次下载
    <b class='flag-5'>STM32</b>与<b class='flag-5'>openmv</b><b class='flag-5'>通信</b>(HAL库)

    OpenMV单片机串口通信交互

    器件:OpenMVMM32单片机一、采用串口通信串口通信想必大家都知道,这里就不多赘述了,如果有不了解的可以看我的往期文章【STM32】HAL库 CubeMX例程三—串口中断
    发表于 12-27 19:21 20次下载
    <b class='flag-5'>OpenMV</b>与<b class='flag-5'>单片机</b>串口<b class='flag-5'>通信</b>交互

    OPENMVSTM32识别追踪小车详细版)之OPENMV

    OPENMVSTM32识别追踪小车详细版)实现:通过O
    发表于 01-13 12:05 0次下载
    <b class='flag-5'>OPENMV</b>和<b class='flag-5'>STM32</b>的<b class='flag-5'>识别</b><b class='flag-5'>追踪</b><b class='flag-5'>小车</b>(<b class='flag-5'>详细</b>版)之<b class='flag-5'>OPENMV</b>端

    【DIY】基于OpenMVSTM32追球小车

    简单识别程序设计【microPython】2)STM32控制程序设计 【C语言】①对OpenMV发送的数据包进行解析②
    发表于 01-14 13:01 39次下载
    【DIY】基于<b class='flag-5'>OpenMV</b>的<b class='flag-5'>STM32</b>追球<b class='flag-5'>小车</b>

    第19.2章-科技 openmv H7 plus openmv视觉循迹功能-完成视觉识别指定区域 OpenMV视觉模块循迹 STM32F103C8T6视觉巡线

    第19.2章-【科技】openmv H7 plus openmv视觉循迹功能-完成视觉识别指定区域
    的头像 发表于 08-20 11:28 515次阅读