描述
<div>
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p style="line-height:1.8;">本设计以STM32F103C8T6单片机为主控模块,设计了主要包含龙门架控制、树莓派5、A4988电机驱动模块、对弈算法策略、人机交互的运三子棋下棋装置。通过树莓派5运行Opencv各种算法进行视觉处理获得棋盘各个分区的位置以及棋局情况;采用双步进电机控制使精度更准确;</p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p><strong>首次公开状态</strong>:本项目为首次公开</p>
<p><strong>获奖情况</strong>:截至目前,项目尚未参与任何正式比赛或评奖活动</p>
<h3 style="line-height:1.8;"> </h3>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p style="line-height:1.8;"><strong><em>GPL-3.0</em></strong></p>
<div>
<p> </p>
<p> </p>
</div>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height:1.8;">主控:STM32F103C8T6 开发板 — 负责步进电机驱动控制、IO 采集、限位/回零逻辑与与树莓派的串口通信;<br>视觉计算:Raspberry Pi 5(含 Raspberry Pi Camera V2 或 USB 摄像头)— 运行 OpenCV 图像处理与对弈决策;<br>步进驱动:A4988 ×2(或更多,按轴数)— 驱动步进电机微步控制;推荐配合限流与散热片;<br>步进电机:长大头步进电机(如 NEMA17 或项目中实际型号)×2(X/Y),用于龙门架平移;第三自由度可用小型步进或伺服;<br>机械机构:采用球星机器人结构,保证电磁铁能覆盖所有棋格;<br>吸取/放置:电磁铁 + 继电器/MOSFET 驱动(根据线圈电流选择),配合限位开关或光电传感器做取放判断;<br>传感/限位:机械限位开关 若干(回原点与安全限位),编码器(若有)或光电以增强定位可靠性;<br>通信:TTL 串口(树莓派 STM32),可扩展为 USB、Wi-Fi(远程调试);<br>其他:电源(稳压 12V/5V 组合)、线缆、散热、PCB 板(丝印预留比赛 logo)。</p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong>系统连接图:</strong></p>
<p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/hTm5rF7kyxhsWw2RjQ5b1uLuXRgk0iP4ocnj9ivV.png" width="639" height="451" alt="hTm5rF7kyxhsWw2RjQ5b1uLuXRgk0iP4ocnj9ivV.png"></strong></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;">我认为stm32最重要的部分就是角度转换的步骤,因为我们是球型机器人,所以我们必须用三角函数让棋子到达指定位置:</p>
<p style="line-height:1.8;">go_point(double x, double y):把目标点 (x,y) 转换为两轴的步数(逆运动学/几何法):<br>计算目标与原点距离 r = sqrt(x*x + y*y),再设定三角形边长 b = 80.0, c = 132.0,通过余弦定理算角 A,B,C,然后按经验公式与步进器参数换算为 OC_Channel1_step 与 OC_Channel2_step(步数)。<br>步数换算里用到常量 1.8(deg/step)和微步倍数 64 等(见 OC_Channel*_step = ... * 64 * 2),并设置 DIR 引脚(DIR_A, DIR_B)方向后启动 TIM2 的 PWM/OC 中断以产生脉冲。<br>zuobiao_bianhuan(unsigned char jiaodu) / rotatePoint:按给定角度(度->弧度)把 points[] 围绕 center 旋转,结果保存在 points_after[],用于视觉标定后将视觉坐标变换为运动目标点(配合 go_point)。</p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/fCo2qhNmgRQzy4ONWqq75M3j8LIhPmv0zLTH1kEo.png" width="535" height="523" alt="fCo2qhNmgRQzy4ONWqq75M3j8LIhPmv0zLTH1kEo.png"></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong>视觉模块</strong></p>
<p>从摄像头获取一帧图像,并调整图像大小。<br>图像预处理:灰度化、高斯模糊、Canny边缘检测和形态学闭运算。<br>查找轮廓并筛选出近似为矩形的轮廓,这些轮廓代表棋盘上的格子。<br>对找到的矩形格子进行排序,并在图像上标记它们的位置。<br>转换到棋子颜色识别,在此模式下继续处理图像以识别棋子。</p>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/4DFqmrEvKYAoJh9hajh2jd3si5JljDSf7YvvpqXi.png" width="846" height="574" alt="4DFqmrEvKYAoJh9hajh2jd3si5JljDSf7YvvpqXi.png"></p>
<p> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"><img src="//image.lceda.cn/pullimage/XqsvP9lv1WCEaevpOppoQx9wjhNq3l6axYFKm1sZ.png" width="1200" height="653" alt="XqsvP9lv1WCEaevpOppoQx9wjhNq3l6axYFKm1sZ.png"></span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/UOr2Asu38FVUuYBs8pwW1riVNwPA9R2W5MJu8ZS5.jpeg" width="555" height="577" alt="UOr2Asu38FVUuYBs8pwW1riVNwPA9R2W5MJu8ZS5.jpeg"></p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/fLw3j1G9qjLvhmA0ITT26Vwq7i6xcqgUTCSYxata.jpeg" width="555" height="741" alt="fLw3j1G9qjLvhmA0ITT26Vwq7i6xcqgUTCSYxata.jpeg"></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
</div>
评论(1)