为了给大家些创作灵感,今天带来第十届立创电赛二等奖作品#第十届立创电赛#眼疾手快抓棒机案例分享!本文作者:@mfkxls,禁止商用,未经许可禁止转载。
第十一届立创电赛正在进行中心,点击图片报名。
1、项目功能介绍
记得在读书的时候,老师在课堂上为了增加气氛,让我们同桌之间玩了个小游戏。就是让一个同学右手捏一只铅笔,手臂尽量举高,然后让同桌用右手在下方去接同学突然松手掉落的铅笔,看谁能接住突然掉落的铅笔。当时觉得挺好玩很考验大家的反应力。
上个月,有天刷抖音,看到一个网红在玩一个游戏项目。
站在一个架子下面,架子的横梁上挂了10个圆棒棒,棒子随机掉落。那个美女好厉害,居然全部都接住了!呃,这不就是跟小时侯玩的那个接铅笔的一样吗!
后来,到网上一查,原来这个游戏项目就叫“眼疾手快”,最早好像出现在湖南卫视的一档综艺节目上(平时不太爱看)当时就学得很好玩的,但平常周边也没看见有这个东西,心里就想,其实,这个原理挺简单的,就是让挂在横梁上的10根棒棒,在规定的时间内,随机掉下来。。。。再说,平时自己没事的时候就喜欢捣鼓这些,当兵那会就跟着杜洋老师开始学习单片机,现在自己小孩也上4年级了,正好也可以带着娃娃一起练练手,增加孩子的兴趣,也圆了自己儿时的愿望吧。
说干就干,于是开始在脑海里构思起来。。
2、项目属性
本项目,纯粹是偶然兴起,是本人和小孩原创项目。一开始也没有打算参加什么比赛,只是想带小孩一起做点既可以实际参与做好后又可以玩的项目,今天偶然在嘉立创下单平台看到这个赛事,再说我做的项目都在立创打的板,也“白漂”了不少的板子,怎么也得支持下吧!
3、开源协议
请输入内容…
项目遵循GPL3.0开源协议
注:利他即利己,请认真阅读下述内容。
- 拥抱开源,赋予项目无限价值。建议项目核心功能开源80%以上;
- 2、若某一部分功能不可替代且删掉之后项目无法解决对应的问题,则这一部分实现的功能就是项目的核心功能;比如设计了一台电子负载且设计了一款上位机软件监控功率变化,则电子负载为核心功能,上位机软件为辅助功能;比如电子负载中使用了一款隔离485模块与上位机通信,则此485模块实现的通讯功能为辅助功能;
- 项目应选择适合自己的开源协议,若项目引用其他开源项目,应注明来源并遵循原作者的开源协议规定;原创项目推荐使用GPL3.0开源协议;
- 直接引用开源项目的原电路或原代码实现的功能不可作为自己项目的核心功能、使用市场上通用模块直接实现的功能不可作为自己项目的核心功能。
请在竞赛阶段填写 ↓
4、硬件部分
一、硬件设计方案
《眼疾手快》接棒机,设计由3部分构成,
第一是主控部分,MCU采用STC8H8K64U,主要功能:
- 开始/结束按键检测,由P32负责;
- 音频输出控制功能(CX1000A-5W)由串口2负责,波特率9600,提供游戏背景音乐、相关游戏提示音和音量大小调节;
- WS2812全彩8*8点阵显示功能,数据接口P05,实现待机时背景音乐的频谱显示、简单表情显示、遥控菜单相关显示和游戏的得分显示等,频谱直接由音频模块输入MCU接口ADC5/ADC6(P15/P16),显示亮度由ADC7(P17)的光敏电阻感应自动调节;
- 433M模块由串口3负责,波特率9600,接收遥控指令,进行菜单设置功能,433遥控器共4个按键,A 键(键值19 1C 08)开始、结束;B 键(键值19 1C 04)菜单(0-4)分别是模式调节0-3、难度调节0-3、亮度调节10-100、音量调节0-30和颜色调节0-6;C键:(键值19 1C 02)向上;D键 (键值19 1C 01)向下;
- 检测掉落棒是否被接住功能,由串口4负责,波特率38400,由2.4G串口模块接收信号,在规定时间内收到相应棒子的信息,才算接住,超时则判为掉落;
- 与输出执行部分通信功能,由串口1负责,波特率115200,主控仅发送开始/结束、游戏模式、游戏难度等信息,执行输出部分按接收到的游戏参数自主执行,主控同时接收执行输出部分反馈的开机棒子归位情况、游戏中棒子掉落情况和结束后规定时间内棒子的归位情况。
- 主控由一个12V电瓶统一供电,由5V5A降压模块转换后,给执行输出部分提供5V直流电压。
第二部分是执行输出部分,MCU采用STC8H8K64U,主要功能:
- 控制掉落棒的掉落与吸合,采用10个5V0.3A失电式电磁铁,开始前默认断电,吸住掉落棒,当需要扑掉落时,通电50MS使电磁铁消磁让棒子掉落,50MS后电磁铁断电恢复到吸合状态,等待棒子归位。
- 红外检测功能,由10对红外对管实时检测棒子的掉落、归位状态。
- 棒子掉落指示及归位指示功能,10个蓝色LED灯。
- 开机检测棒子归位情况,如果没有归位,其他功能无效,游戏无法开始,LED相应提示,并将信息反馈给主控。
- 游戏中棒子掉落情况,并将信息反馈给主控。
- 游戏结束后规定时间内,棒子归位情况,如超时未归位,将信息反馈给主控。
- 按主控给的参数,自主随机生成掉落的顺序,间隔等。
- 通过串口1,波特率115200,接收主控指令,及反馈信息。
第三部分接握棒子反馈部分,MCU采用8PIN的STC8G1K08。
- 1220电池供电
- 电容触摸检测功能,采用TTP223芯片。
- 串口无线发送功能,采用2.4G模块(GL24S)
- 单片机用串口1与GL24S通信,波特率38400,
- 全部采用低耗设计。
二、硬件配置
1. 主控部分(核心 MCU:STC8H8K64U)
|
功能 |
引脚 |
详细说明 |
|
开始 / 结束按键 |
P3.2 |
按键按下时接低电平,上拉输入模式,用于游戏启动 / 暂停 / 结束控制 |
|
WS2812 点阵数据 |
P0.5 |
8×8 点阵数据输入引脚,支持左右分屏显示(如双人模式左红右蓝计数,范围 0-99) |
|
音频模块(CX1000A-5W) |
串口 2(P1.0/RxD2, P1.1/TxD2) |
波特率 9600bps,仅发送控制指令,播放格式:7E 07 FF FF 02 [音效码] EF 不需要接收,只需查询发送 |
|
433M 遥控接收模块 |
串口 3(P0.0/RxD3, P0.1/TxD3) |
波特率 9600bps,仅接收遥控指令;键值:A 键(19 1C 08)、B 键(19 1C 04)、C 键(19 1C 02)、D 键(19 1C 01)中断接收,查询解析方式 |
|
2.4G 接棒信号接收模块 |
串口 4(P0.2/RxD4, P0.3/TxD4) |
波特率 38400bps,仅接收掉落棒反馈部分的无线信号,用于接棒判定 中断接收,查询解析方式 |
|
与执行部分通信 |
串口 1(P3.0/RxD1, P3.1/TxD1) |
波特率 115200bps,双向通信(发送游戏参数,接收执行部分状态) 查询式接收 + 查询式发送
|
|
音频频谱采集 |
P1.5(ADC5)、P1.6(ADC6) |
ADC 模拟输入,分别采集音频左右声道信号,用于待机时频谱显示 |
|
亮度自动调节(光敏电阻) |
P1.7(ADC7) |
ADC 模拟输入,检测环境光强度,自动调整 WS2812 点阵亮度(范围 10%-100%)AD值实测:(150-3300) |
|
电源供电 |
5V |
由 12V 电瓶经 5V5A 降压模块转换提供,为主控及执行部分供电 |
2. 执行输出部分(核心 MCU:STC8H8K64U)
|
功能 |
引脚 |
详细说明 |
|
失电式电磁铁控制(10 路) |
DCT1=P0.0、DCT2=P0.3、DCT3=P0.6、DCT4=P1.1、DCT5=P5.4、DCT6=P3.7、DCT7=P4.3、DCT8=P2.1、DCT9=P2.6、DCT10=P4.6 |
每路经 MOS 管(3400Q)驱动;默认断电吸合(低电平),通电 100ms 消磁(高电平)释放棒子,100ms 后恢复断电吸合 |
|
红外对管检测(10 路) |
IRIN1=P0.1、IRIN2=P0.4、IRIN3=P0.7、IRIN4=P4.7、IRIN5=P1.5、IRIN6=P3.5、IRIN7=P4.1、IRIN8=P4.4、IRIN9=P2.2、IRIN10=P2.7 |
输入模式,检测棒子归位状态:被遮挡(归位)时输入低电平,无遮挡(掉落)时输入高电平;连续 3 次采样防抖 |
|
蓝色 LED 指示灯(10 路) |
LED1=P0.2、LED2=P0.5、LED3=P1.0、LED4=P1.4、LED5=P1.6、LED6=P3.6、LED7=P4.2、LED8=P2.0、LED9=P2.5、LED10=P4.5 |
输出模式,低电平熄灭,高电平点亮;上电自检未归位时闪烁(1 秒 / 次),游戏掉落时点亮,全掉落后熄灭 |
|
与主控通信 |
串口 1(P3.0/RxD1, P3.1/TxD1) |
波特率 115200bps,双向通信(接收游戏参数,发送状态 / 反馈信息) |
|
电源供电 |
5V |
由主控部分的 5V 供电端提供,与主控共电源地,避免电压波动干扰 |
3. 掉落棒反馈部分(核心 MCU:STC8G1K08)
|
功能 |
引脚 |
详细说明 |
|
触摸检测(TTP223 芯片) |
P3.3 |
低电平有效,未触摸时为低电平,触摸时输出高电平;用于检测玩家是否接住棒子 |
|
2.4G 无线发送模块(GL24S) |
串口 1(P3.0/RxD, P3.1/TxD) |
波特率 38400bps,与 MCU 串口 1 通信,将接棒信号无线发送给主控的 2.4G 接收模块 |
|
2.4G 模块片选(2.4G_CS) |
P5.5 |
低电平时 2.4G 模块工作,高电平时休眠;由 MCU 控制,未接棒时休眠以降低功耗 |
|
2.4G 模块配置(2.4G_SET) |
P5.4 |
高阻态(悬空),保持模块默认通信配置,无需额外设置 |
|
低功耗控制 |
P3.3(INT1 中断,上升沿) |
触摸检测引脚同时作为 INT1 中断触发端,上升沿(触摸时)唤醒 2.4G 模块,无触摸时模块休眠 |
|
电源供电 |
3V |
由 1220 纽扣电池供电,带独立电源开关;低功耗设计,单次更换电池可支持长期使用 |
三、整体结构
1、机架设计:采用便于移动的三角架,外加PVC管加高,所有连接件用3D打印件;整体高度在2.2米左右;

2、感应头横梁:采用2.5*2.5*1.0的U型铝材,这种材料轻巧也便于加工,因为没有折弯工具,只能每12CM据开,然后手工做成半圆形;

3、棒子感应头:根据电磁铁尺寸,采用3维建模,再3D打印的方式,每个感应头设计了对应的PCB板,专门负责LED、红外对管和电磁铁的控制;


4、主控板、音频、按键、显示屏等放到一个长条形的防水盒里




5、执行部分:为了节约成本做成了3部分组合的方式,由3块PCB板组成,然后3D打印了个装配件,最后组合在一起放到长21CM的2.5*2.5*1.0的U型材里刚刚好;每个棒子一个航空接口与感应头连接。


6、掉落棒的设计:这个费了不少精力去找合适的材料,既要轻便,粗细合适、还要便宜取材方便,最后,在五金店找到了一种16MM的电工绝缘管,跟电磁铁的直径刚好!为了与电磁铁吸合,又打印了个小配件,中间用一个12MM的大平头螺丝,完美解决;为了防滑,又找了那种防滑的热缩管,套上,然后在底部再套一个防撞套,最终就是下面这样啦



7、棒子抓握反馈:这部分主要设想是通过电容触摸感应芯片,感应手握信号,再通过2.4G模块发送信息给主控,由主控处理是否接住棒子,因为要塞进16MM的掉落棒里,所以板子设计的刚好插进去,用了1220焊接电池,不过这个电池电量太小,自持力不高,后期,会考虑用大容量的可充电的锂电池。下面是目前的板子:




