openmv与stm32通讯实现控制舵机跟随颜色块转动[hal库]_openmv与是stm32二维自由度舵机(2)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

所需要的元器件

  • stm32单片机
  • stlink
  • openmv
  • 舵机
  • 导线若干
    在这里插入图片描述

整体思路

  1. 先编写openmv的代码,实现特定颜色识别,并把坐标值通过串口发送出去;
  2. 之后在cube上配置相关stm32的初始化设置,并生成代码;
  3. 在keil里编写串口中断接收函数,将串口1用于接收openmv发送来的数据,并编写舵机控制程序;
  4. 烧录程序实现效果,并改进出现的问题。

接线方式

  • stm32通过uart1与openmv连接
  • stm32通过sw与stlink连接
  • stm32通过GND、VCC、PWM口连接舵机

完成效果

openmv识别特定颜色的物体,并把其坐标发送给stm32,单片机读取后控制舵机转动,实现定向跟随效果。

Cube配置

  1. 串口

串口
2. 定时器

定时器

代码解析

  • openmv颜色识别及坐标发送

import sensor, image, time
from pyb import UART
import json

threshold = [(6, 16, 19, 63, 4, 25)]

sensor.reset()
sensor.set\_pixformat(sensor.RGB565)
sensor.set\_framesize(sensor.QVGA)
sensor.skip\_frames(time = 2000 )
sensor.set\_auto\_whitebal(False)

clock = time.clock()

uart = UART(3, 115200)

uart.init(115200, bits=8, parity=None, stop=1)  #8位数据位,无校验位,1位停止位、

while(True):
    clock.tick()
    img = sensor.snapshot()
    blob = img.find\_blobs(threshold, area_threshold=300)
    if blob: #如果找到了目标颜色
        FH = bytearray([0xb3,0xb4])
        uart.write(FH)
        for b in blob:
        #迭代找到的目标颜色区域
            img.draw\_cross(b[5], b[6]) # cx, cy
            img.draw\_edges(b.min\_corners(), color=(0,255,0))
            x = b.cx()
            y = b.cy()

            data = bytearray([x,y])
            uart.write(data)

            end = bytearray([0x01,0x01,0xb5,0xb6])
            uart.write(end)




  • stm32串口中断接收

void HAL\_UART\_RxCpltCallback(UART_HandleTypeDef \*huart)     //opmv-receive
{
	if(huart==&huart1)
	{	
		HAL\_UART\_Receive\_IT(&huart1,&my_re_buf1[++pt_w1],1);  		
		trans(my_re_buf1[pt_w1]);		
	}
}


  • 舵机控制函数


void measure(void)
{
	
      if(m>6){
		
			  if(x<130&&x>10){
				
				if(servo_angle<90){
									
	     	servo_angle+=5;
	     	MG996R\_Set\_Angle(servo_angle); 	//SERVO
					
				}
		
      	}else if(x>170&&x<300){
					
					
					if(servo_angle>-90){
									
	     	servo_angle-=5;
	     	MG996R\_Set\_Angle(servo_angle); 	//SERVO
					
				}
		
	}
	m=0;
		


![img](https://img-blog.csdnimg.cn/img_convert/7a13b081f4a7157343f1bc08dc0e354b.png)
![img](https://img-blog.csdnimg.cn/img_convert/0f04a96e73f11ba3f407ea124a689b09.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是由意法半导体(STMicroelectronics)公司推出的基于ARM Cortex-M内核的高性能、低功耗、高性价比32位微控制器系列。自其面世以来,STM32凭借其广泛的适用性和卓越的特性,已成为嵌入式系统设计领域的主流选择之一,广泛应用于工业控制、消费电子、物联网、汽车电子、医疗设备、智能家居等多个领域。 内核与架构 STM32产品线采用了不同版本的ARM Cortex-M内核,包括M0、M0+、M3、M4、M7等,分别对应不同级别的性能需求。这些内核提供单周期乘法、硬件除法、DSP指令集、浮点单元(FPU)等功能,以满足不同应用场景中的计算密集型任务需求。处理器架构遵循哈佛结构,具有独立的指令总线和数据总线,确保高效的代码执行和数据访问。 丰富的外设与接口 STM32微控制器集成了丰富的外设资源,以适应各种复杂系统设计。这些外设包括但不限于: 通信接口:如USART、UART、SPI、I2C、CAN、USB(全速/高速)、Ethernet、无线连接模(如BLE、Wi-Fi)等,用于实现设备间的串行通信和网络连接。 定时器:多种通用定时器、高级定时器、基本定时器以及PWM输出,支持定时、计数、脉冲捕获、电机控制等多种功能。 模拟外设:高精度ADC(模数转换器)、DAC(数模转换器)、比较器、温度传感器等,用于采集和处理模拟信号。 存储器:内置Flash和SRAM,容量从几KB到几MB不等,满足不同应用的数据存储和运行空间需求。部分型号还支持外部存储器接口(如FSMC、Octo-SPI)以扩展存储能力。 安全与保护机制:如加密加速器、安全单元、内存保护单元(MPU)、看门狗定时器、时钟安全系统(CSS)等,保障系统安全稳定运行。 开发环境与生态系统 STM32拥有强大的软件支持和生态系统,简化开发流程并加速产品上市时间: 开发工具:官方提供STM32CubeMX初始化配置工具,帮助开发者快速进行项目设置、外设配置及代码生成。此外,还有STM32CubeIDE集成开发环境,集成了编译器、调试器和仿真器支持。 软件库:STM32Cube软件包包含HAL(硬件抽象层)库和LL(低层)库,前者提供跨平台、跨系列的统一API接口,后者直接面向寄存器提供高效访问。同时,还提供各类外设驱动、中间件组件(如FreeRTOS、FatFS、LwIP等)以及特定应用框架(如STM32Cube.AI for AI推理)。 社区与资源:ST官方社区、论坛、博客、技术文档、培训材料、应用笔记、用户案例等资源丰富,为开发者提供全方位的技术支持和交流平台。 产品线与封装 STM32产品线按性能、功耗、外设组合等特性划分为多个子系列,如STM32F、STM32L、STM32G、STM32H等,每个子系列下又包含多种型号,以适应不同成本、性能、尺寸和功耗要求。封装形式多样,从小型QFN、LQFP到大型BGA,满足不同应用场景的封装密度和散热需求。 综上所述,STM32微控制器以其强大的内核性能、丰富的外设集成、完善的开发支持和广泛的市场应用,为嵌入式系统设计提供了高度灵活且极具竞争力的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值