跑跑啦航模

  OpenMV是专为机器视觉设计的微控制器,内置摄像头和图像处理芯片,可以直接运行Python视觉程序。配合小车底盘,就可以做出一台会追踪目标的智能小车。

一、硬件准备

  OpenMV H7 Plus(或OpenMV Cam M7) × 1

  二轮或四轮小车底盘 × 1

  L298N电机驱动模块 × 1

  Arduino或STM32(作为下位机执行电机控制)

  OpenMV的串口连接下位机

  7.4V锂电池

二、接线方式

  OpenMV通过串口(UART3:P4=TX,P5=RX)与下位机通信:

  OpenMV P4(TX) → 下位机 RX

  OpenMV P5(RX) → 下位机 TX

  注意电平匹配:OpenMV H7 Plus为3.3V电平,可直接接Arduino(5V也能识别)。如果是STM32则完全兼容。

三、OpenMV颜色追踪程序

# OpenMV 红色目标追踪程序
import sensor, image, time
from pyb import UART

# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)  # 320x240
sensor.skip_frames(time=2000)
sensor.set_auto_gain(False)  # 关闭自动增益,颜色更稳定
sensor.set_auto_whitebal(False)

# 初始化串口(P4 TX, P5 RX)
uart = UART(3, 9600)

# 定义红色阈值(LAB色彩空间)
# 需要在OpenMV IDE中调试确定具体数值
red_threshold = (30, 100, 15, 127, -10, 127)

# 图像中心横坐标
IMG_CENTER_X = 160

clock = time.clock()

while(True):
    clock.tick()
    img = sensor.snapshot()
    
    # 寻找红色色块
    blobs = img.find_blobs([red_threshold], pixels_threshold=50, area_threshold=50)
    
    if blobs:
        # 取最大的色块
        largest_blob = max(blobs, key=lambda b: b.area())
        
        # 在图像上画框
        img.draw_rectangle(largest_blob.rect())
        img.draw_cross(largest_blob.cx(), largest_blob.cy())
        
        # 计算偏差
        error = largest_blob.cx() - IMG_CENTER_X
        
        # 根据偏差发送控制指令
        if abs(error) < 20:
            cmd = "F\n"  # 正对目标,前进
        elif error > 0:
            cmd = "R\n"  # 目标偏右,右转
        else:
            cmd = "L\n"  # 目标偏左,左转
    else:
        cmd = "S\n"  # 没找到目标,停止/搜索
    
    uart.write(cmd)
    print(cmd.strip())

四、下位机电机控制代码

  下位机接收串口指令,解析后控制电机。指令格式沿用蓝牙遥控的字符指令:F前进、B后退、L左转、R右转、S停止。

  这里可以用之前蓝牙遥控那篇文章的Arduino代码,或者用STM32的串口中断接收代码。

五、调试颜色阈值

  颜色阈值是OpenMV追踪的关键。在OpenMV IDE中:

  1. 打开工具 → 机器视觉 → 阈值编辑器。

  2. 将摄像头对准要追踪的颜色目标(红色小球、绿色标志物等)。

  3. 在阈值编辑器中调整LAB三个通道的上下限,直到图像中只选中目标颜色。

  4. 将得到的阈值填入代码。

  不同光线环境下阈值可能需要重新调整,建议在目标使用场景的光线下进行调试。

六、常见问题

  Q:颜色追踪不稳定,目标丢失?

  A:光线变化会影响颜色识别。建议在固定光线环境下使用,或者使用自动曝光但关闭自动白平衡。

  Q:小车追目标时左右震荡?

  A:偏差死区(代码里的20像素)可以适当调大。也可以在控制中加入PID,让转向量随偏差大小渐变。

跑跑啦航模详情

联系手机15058675618 qq售后群号241350086 微信号paopaola_com
长距离FPV无人机,高清传感器模块,终身保修和升级服务。