站内搜索
发作品签到
专业版

#第十届立创电赛#自动激光打靶小车

工程标签

926
0
0
1

简介

2025年全国大学生电子设计竞赛E题自动打靶小车系统

简介:2025年全国大学生电子设计竞赛E题自动打靶小车系统
第十届立创电子设计开源大赛

开源协议

GPL 3.0

创建时间:2025-09-29 11:31:19更新时间:2025-10-23 17:59:59

描述

注:* 为必填项

请在报名阶段填写 ↓

 

* 1、项目功能介绍


本项目为2025年全国大学生电子设计竞赛E题自动打靶小车系统,包含三大核心子系统:

移动平台系统:

基于TI MPM0系列MCU的主控制器

八路红外寻迹传感器阵列实现精确路径跟踪

TB6612电机驱动模块控制直流减速电机

可编程圈数设定(1-5圈),单圈时间≤20秒

具备起点识别和圈数计数功能

瞄准发射系统:

STM32微控制器作为核心处理器

二维云台结构,采用42步进电机精密控制

张大头步进电机驱动器提供稳定电流驱动

蓝紫色激光笔作为射击装置

具备俯仰和水平双轴运动控制能力

视觉识别系统:

树莓派5作为图像处理核心

USB高清摄像头进行实时图像采集

OpenCV视觉算法实现目标识别定位

与瞄准系统通过串口通信传输坐标数据

 

*2、项目属性


首次公开状态:本项目为首次公开

获奖情况:无

 

* 3、开源协议


开源声明:
本项目遵循GPL-3.0开源协议

 

请在竞赛阶段填写 ↓

 

*4、硬件部分


4.1 系统架构设计
自动打靶小车硬件系统架构:
  视觉识别系统                 瞄准发射系统                   移动平台系统   
  树莓派5 +        UART        STM32 +           UART         TI MPM0 +     
  USB摄像头     ◄───►   步进电机驱动   ◄───►   TB6612驱动   

 

4.2 移动平台硬件设计
主控制器模块:

采用TI MPM0系列MCU,具备丰富外设接口

8路ADC通道用于红外传感器信号采集

2路PWM输出控制电机速度

4路GPIO用于电机方向控制

传感器模块:

八路TCRT5000红外反射传感器阵列

传感器间距25mm,覆盖检测宽度180mm

比较器电路输出数字信号,抗干扰性强

供电电压:5V DC

电机驱动模块:

TB6612FNG双通道电机驱动芯片

最大输出电流:1.2A(连续)

驱动电压:2.5-13.5V

PWM频率:10kHz

具备正反转控制和制动功能

电源管理:

12V锂电池为电机系统供电

5V稳压模块为控制电路供电

3.3V LDO为MCU核心供电

 

4.3 瞄准系统硬件设计
云台机械结构:

水平旋转范围:±90°

俯仰调节范围:-15°至+45°

42步进电机,1.8°步距角

减速比1:5,提高扭矩和精度

步进电机驱动:

张大头DM542步进电机驱动器

支持16细分模式

输出电流可调(0.5-4.2A)

具备过流、过热保护

激光发射模块:

蓝紫色激光笔,波长405nm

光斑直径:2mm@10m

由STM32 GPIO控制开关

 

4.4 视觉系统硬件设计
图像采集:

树莓派5主控,4GB内存

Logitech C920 USB摄像头

分辨率:1920×1080 @ 30fps

自动白平衡和曝光控制

通信接口:

UART串口与STM32通信

数据传输格式:目标坐标(x,y)+置信度

通信波特率:115200bps

 

注:请前往嘉立创EDA 生成/上传设计文件,文件完成后,相关文稿将自动生成至项目详情;这里可以详细说明您的项目实现原理和机制、注意事项、调试方法、测试方法等。推荐图文并茂的形式向别人介绍您的想法。

 

*5、软件部分


5.1 STM32瞄准控制系统

┌──────────────────────
│              STM32主控制器                       │
├─────────────────────────
│ 1. 串口通信模块  │ 2. PID控制模块       │
│    - 数据接收       │    - 位置PID计算      │
│    - 协议解析       │    - 死区处理           │
├─────────────────────────
│ 3. 步进电机控制   │ 4. 定时器中断        │
│    - 脉冲生成        │    - 10ms控制周期  │
│    - 方向控制        │    - 50ms辅助周期  │
├────────────────────────   
│ 5. OLED显示模块  │ 6. 按键输入模块   │
│    - 状态显示         │    - 参数设置         │
└─────────────────────────

PID位置控制算法:

float PID_x(float Target_x, float True_x)
{
    err_x = Target_x - True_x;                    // 计算误差
    err_difference_x = err_x - last_err_x;        // 计算误差变化率
    last_err_x = err_x;                           // 更新上次误差
    return Kp_x * err_x + Kd_x * err_difference_x; // PD控制器输出
}

5.2 树莓派视觉系统
核心算法说明:
双方法矩形检测:

python
# 方法1:颜色阈值法
mask_black = cv.inRange(hsv_black, np.array([0,0,0]), np.array([180,255,60]))
contours_black, _ = cv.findContours(mask_black, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

# 方法2:边缘轮廓法  
edges = cv.Canny(blurred, 0, 120)
contours_all, _ = cv.findContours(closed, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)

# 综合决策逻辑
if frame_rect is not None and rect_edge is not None:
    center_color = np.mean(frame_rect[:, 0, :], axis=0)
    center_edge = np.mean(rect_edge[:, 0, :], axis=0)
    dist = np.linalg.norm(center_color - center_edge)
    if dist         selected_rect = frame_rect
白色区域比例验证:

python
def white_ratio_in_rect(approx, hsv_img):
    mask_roi = np.zeros(hsv_img.shape[:2], dtype=np.uint8)
    cv.fillPoly(mask_roi, [approx.reshape(-1, 1, 2)], 255)
    
    lower_white = np.array([28, 0, WHITE_V_MIN])
    upper_white = np.array([180, WHITE_S_MAX, 255])
    mask_white = cv.inRange(hsv_img, lower_white, upper_white)
    
    white_in_roi = cv.bitwise_and(mask_white, mask_white, mask=mask_roi)
    roi_area = cv.countNonZero(mask_roi)
    ratio = cv.countNonZero(white_in_roi) / roi_area
    return ratio, white_in_roi

系统要求:

操作系统: Raspberry Pi OS (64-bit)

Python版本: 3.9+

OpenCV版本: 4.5+

程序运行方法
bash
# 进入项目目录
cd RaspberryPi_Vision

# 运行主程序
python main.py

# 调试模式运行
python main.py --debug

5.3 MPM0
// 定时器中断中读取编码器计数
void TIMER_ms_INST_IRQHandler(void)
{
    if(DL_TimerG_getPendingInterrupt(TIMER_ms_INST)==DL_TIMER_IIDX_ZERO)
    {
        num++;
        Encode_MotorL_Count_Temp = -Read_Speed(1);  // 左电机编码器
        Encode_MotorR_Count_Temp = Read_Speed(2);   // 右电机编码器
        if(num % 50 == 0) {
            DL_GPIO_togglePins(LED_PORT, LED_PIN_PIN); // 状态指示
        }
    }
}

5.4 通信协议设计
树莓派→STM32协议格式
    帧格式: [0x12, 0x2C, 数据段, 0x5B]
    数据段: 符号位+X坐标(3位)+符号位+Y坐标(3位)
    示例: '1' '025' '0' '150' 表示坐标(25, -150)
STM32→树莓派协议格式
    控制命令: 
     - 'd1': 请求矩形顶点数据
     - 'd2': 请求中心坐标数据


*6、BOM清单


 

注:项目涉及的BOM清单。在嘉立创EDA 生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。

 

*7、大赛LOGO验证


 

* 8、演示您的项目并录制成视频上传


 

视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;

视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
BOM_Board1_Schematic666_.xlsx
8
2
视觉识别代码(树莓派5).rar
11
3
移动平台代码(MSPM0).rar
10
4
瞄准部分代码(STM32).rar
15
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航