描述
<div>
<p style="line-height:1.8;">注:* 为必填项</p>
<p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在报名阶段填写 ↓</span></strong></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p>本项目为2025年全国大学生电子设计竞赛E题自动打靶小车系统,包含三大核心子系统:</p>
<p>移动平台系统:</p>
<p style="padding-left:40px;">基于TI MPM0系列MCU的主控制器</p>
<p style="padding-left:40px;">八路红外寻迹传感器阵列实现精确路径跟踪</p>
<p style="padding-left:40px;">TB6612电机驱动模块控制直流减速电机</p>
<p style="padding-left:40px;">可编程圈数设定(1-5圈),单圈时间≤20秒</p>
<p style="padding-left:40px;">具备起点识别和圈数计数功能</p>
<p>瞄准发射系统:</p>
<p style="padding-left:40px;">STM32微控制器作为核心处理器</p>
<p style="padding-left:40px;">二维云台结构,采用42步进电机精密控制</p>
<p style="padding-left:40px;">张大头步进电机驱动器提供稳定电流驱动</p>
<p style="padding-left:40px;">蓝紫色激光笔作为射击装置</p>
<p style="padding-left:40px;">具备俯仰和水平双轴运动控制能力</p>
<p>视觉识别系统:</p>
<p style="padding-left:40px;">树莓派5作为图像处理核心</p>
<p style="padding-left:40px;">USB高清摄像头进行实时图像采集</p>
<p style="padding-left:40px;">OpenCV视觉算法实现目标识别定位</p>
<p style="padding-left:40px;">与瞄准系统通过串口通信传输坐标数据</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p><strong>首次公开状态</strong>:本项目为首次公开</p>
<p><strong>获奖情况</strong>:无</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p style="line-height:1.8;"><strong>开源声明:</strong><br>本项目遵循GPL-3.0开源协议</p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在竞赛阶段填写 ↓</span></strong></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height:1.8;"><strong>4.1 系统架构设计</strong><br>自动打靶小车硬件系统架构:<br> 视觉识别系统 瞄准发射系统 移动平台系统 <br> 树莓派5 + UART STM32 + UART TI MPM0 + <br> USB摄像头 ◄───► 步进电机驱动 ◄───► TB6612驱动 </p>
<p style="line-height:1.8;"> </p>
<p><strong>4.2 移动平台硬件设计</strong><br>主控制器模块:</p>
<p style="padding-left:40px;">采用TI MPM0系列MCU,具备丰富外设接口</p>
<p style="padding-left:40px;">8路ADC通道用于红外传感器信号采集</p>
<p style="padding-left:40px;">2路PWM输出控制电机速度</p>
<p style="padding-left:40px;">4路GPIO用于电机方向控制</p>
<p>传感器模块:</p>
<p style="padding-left:40px;">八路TCRT5000红外反射传感器阵列</p>
<p style="padding-left:40px;">传感器间距25mm,覆盖检测宽度180mm</p>
<p style="padding-left:40px;">比较器电路输出数字信号,抗干扰性强</p>
<p style="padding-left:40px;">供电电压:5V DC</p>
<p>电机驱动模块:</p>
<p style="padding-left:40px;">TB6612FNG双通道电机驱动芯片</p>
<p style="padding-left:40px;">最大输出电流:1.2A(连续)</p>
<p style="padding-left:40px;">驱动电压:2.5-13.5V</p>
<p style="padding-left:40px;">PWM频率:10kHz</p>
<p style="padding-left:40px;">具备正反转控制和制动功能</p>
<p>电源管理:</p>
<p style="padding-left:40px;">12V锂电池为电机系统供电</p>
<p style="padding-left:40px;">5V稳压模块为控制电路供电</p>
<p style="padding-left:40px;">3.3V LDO为MCU核心供电</p>
<p style="padding-left:40px;"> </p>
<p><strong>4.3 瞄准系统硬件设计</strong><br>云台机械结构:</p>
<p style="padding-left:40px;">水平旋转范围:±90°</p>
<p style="padding-left:40px;">俯仰调节范围:-15°至+45°</p>
<p style="padding-left:40px;">42步进电机,1.8°步距角</p>
<p style="padding-left:40px;">减速比1:5,提高扭矩和精度</p>
<p>步进电机驱动:</p>
<p style="padding-left:40px;">张大头DM542步进电机驱动器</p>
<p style="padding-left:40px;">支持16细分模式</p>
<p style="padding-left:40px;">输出电流可调(0.5-4.2A)</p>
<p style="padding-left:40px;">具备过流、过热保护</p>
<p>激光发射模块:</p>
<p style="padding-left:40px;">蓝紫色激光笔,波长405nm</p>
<p style="padding-left:40px;">光斑直径:2mm@10m</p>
<p style="padding-left:40px;">由STM32 GPIO控制开关</p>
<p style="padding-left:40px;"> </p>
<p><strong>4.4 视觉系统硬件设计</strong><br>图像采集:</p>
<p style="padding-left:40px;">树莓派5主控,4GB内存</p>
<p style="padding-left:40px;">Logitech C920 USB摄像头</p>
<p style="padding-left:40px;">分辨率:1920×1080 @ 30fps</p>
<p style="padding-left:40px;">自动白平衡和曝光控制</p>
<p>通信接口:</p>
<p style="padding-left:40px;">UART串口与STM32通信</p>
<p style="padding-left:40px;">数据传输格式:目标坐标(x,y)+置信度</p>
<p style="padding-left:40px;">通信波特率:115200bps</p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> 注:请前往<span style="text-decoration:underline;"><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </span>生成/上传设计文件,文件完成后,相关文稿将自动生成至项目详情;这里可以详细说明您的项目实现原理和机制、注意事项、调试方法、测试方法等。推荐图文并茂的形式向别人介绍您的想法。 </span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p style="line-height:1.8;"><strong>5.1 STM32瞄准控制系统</strong></p>
<p style="line-height:1.8;">┌──────────────────────<br>│ STM32主控制器 │<br>├─────────────────────────<br>│ 1. 串口通信模块 │ 2. PID控制模块 │<br>│ - 数据接收 │ - 位置PID计算 │<br>│ - 协议解析 │ - 死区处理 │<br>├─────────────────────────<br>│ 3. 步进电机控制 │ 4. 定时器中断 │<br>│ - 脉冲生成 │ - 10ms控制周期 │<br>│ - 方向控制 │ - 50ms辅助周期 │<br>├──────────────────────── <br>│ 5. OLED显示模块 │ 6. 按键输入模块 │<br>│ - 状态显示 │ - 参数设置 │<br>└─────────────────────────</p>
<p>PID位置控制算法:</p>
<p>float PID_x(float Target_x, float True_x)<br>{<br> err_x = Target_x - True_x; // 计算误差<br> err_difference_x = err_x - last_err_x; // 计算误差变化率<br> last_err_x = err_x; // 更新上次误差<br> return Kp_x * err_x + Kd_x * err_difference_x; // PD控制器输出<br>}</p>
<p><strong>5.2 树莓派视觉系统</strong><br>核心算法说明:<br>双方法矩形检测:</p>
<p>python<br># 方法1:颜色阈值法<br>mask_black = cv.inRange(hsv_black, np.array([0,0,0]), np.array([180,255,60]))<br>contours_black, _ = cv.findContours(mask_black, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)</p>
<p># 方法2:边缘轮廓法 <br>edges = cv.Canny(blurred, 0, 120)<br>contours_all, _ = cv.findContours(closed, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)</p>
<p># 综合决策逻辑<br>if frame_rect is not None and rect_edge is not None:<br> center_color = np.mean(frame_rect[:, 0, :], axis=0)<br> center_edge = np.mean(rect_edge[:, 0, :], axis=0)<br> dist = np.linalg.norm(center_color - center_edge)<br> if dist selected_rect = frame_rect<br>白色区域比例验证:</p>
<p>python<br>def white_ratio_in_rect(approx, hsv_img):<br> mask_roi = np.zeros(hsv_img.shape[:2], dtype=np.uint8)<br> cv.fillPoly(mask_roi, [approx.reshape(-1, 1, 2)], 255)<br> <br> lower_white = np.array([28, 0, WHITE_V_MIN])<br> upper_white = np.array([180, WHITE_S_MAX, 255])<br> mask_white = cv.inRange(hsv_img, lower_white, upper_white)<br> <br> white_in_roi = cv.bitwise_and(mask_white, mask_white, mask=mask_roi)<br> roi_area = cv.countNonZero(mask_roi)<br> ratio = cv.countNonZero(white_in_roi) / roi_area<br> return ratio, white_in_roi</p>
<p>系统要求:</p>
<p>操作系统: Raspberry Pi OS (64-bit)</p>
<p>Python版本: 3.9+</p>
<p>OpenCV版本: 4.5+</p>
<p>程序运行方法<br>bash<br># 进入项目目录<br>cd RaspberryPi_Vision</p>
<p># 运行主程序<br>python main.py</p>
<p># 调试模式运行<br>python main.py --debug<br><br><strong>5.3 MPM0</strong><br>// 定时器中断中读取编码器计数<br>void TIMER_ms_INST_IRQHandler(void)<br>{<br> if(DL_TimerG_getPendingInterrupt(TIMER_ms_INST)==DL_TIMER_IIDX_ZERO)<br> {<br> num++;<br> Encode_MotorL_Count_Temp = -Read_Speed(1); // 左电机编码器<br> Encode_MotorR_Count_Temp = Read_Speed(2); // 右电机编码器<br> if(num % 50 == 0) {<br> DL_GPIO_togglePins(LED_PORT, LED_PIN_PIN); // 状态指示<br> }<br> }<br>}<br><br><strong>5.4 通信协议设计</strong><br>树莓派→STM32协议格式<br> 帧格式: [0x12, 0x2C, 数据段, 0x5B]<br> 数据段: 符号位+X坐标(3位)+符号位+Y坐标(3位)<br> 示例: '1' '025' '0' '150' 表示坐标(25, -150)<br>STM32→树莓派协议格式<br> 控制命令: <br> - 'd1': 请求矩形顶点数据<br> - 'd2': 请求中心坐标数据<br><br><br></p>
<h3>*6、BOM清单</h3>
<hr>
<p><img src="//image.lceda.cn/pullimage/lVtRpS5zGS6PuMXvGJaFXMcbVqbqbFnjGWr1S4oK.png" width="1200" height="414" alt="lVtRpS5zGS6PuMXvGJaFXMcbVqbqbFnjGWr1S4oK.png"></p>
<p> </p>
<p>注:项目涉及的BOM清单。在<a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> 生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。</p>
<p> </p>
<h3>*7、大赛LOGO验证</h3>
<hr>
<p><img src="//image.lceda.cn/pullimage/457aq20DmBL4sH0eQoALpZ0cpAs8vmXtBSvY3P9v.jpeg" width="270" height="360" alt="457aq20DmBL4sH0eQoALpZ0cpAs8vmXtBSvY3P9v.jpeg"></p>
<p> </p>
<h3>* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p> </p>
<p>视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</p>
<p>视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</p>
</div>
评论(1)