智能哑铃

2023-08-196248
精华项目
AI 快速预览详细 收起
该项目使用micro:bit和加速度传感器制作了一个智能哑铃。通过分析加速度数据,可以记录运动状态并使用二进制点阵显示计数。项目设计考虑了不影响原有重量和存放,适合青少年STEM教育场景。


【项目背景】
    闺女开学就要升入高中了,据说衡水中学的军训很累,还有远足活动。所以这几天每天早起陪闺女晨跑,孩儿她妈还给买了哑铃,哑铃是每个5KG,孩子觉得锻炼起来还可以,但她妈觉得有些重,不适合闺女。又买了更小的3KG,大的就给我了。我微微一笑,“造”起来。
智能哑铃图2

【项目设计】
设计原则:不能太影响哑铃原有重量,不影响活动过程,不影响存放。
设计原理:使用哑铃锻炼过程中,哑铃上升下降,运动速度会有快慢变化即产生加速度变化,可由加速度传感器测得。
硬件选择:主板使用micro:bit,Micro:bit板载加速度传感器。
【设计亮点】
智能哑铃图1
1.使用X轴、Y轴向量和的模来判断运动状态
2.使用指数移动平均(EMA)滤波算法
3.使用二进制点阵进行计数
【制作过程】
智能哑铃图11
1、方案一,将Micro:bit固定在正面。
智能哑铃图4
编写程序,获取三轴加速度值
智能哑铃图5
在Excel中处理,并使用图表进行分析
智能哑铃图3
可发现,运动过程中,Z轴加速度有明显变化。通过程序分析Z轴加速度值,可得运行状态。但同时,也发现,这样放置主控板,不利于存放(有可能放下时朝下压坏)。
2.方案二,将Micro:bit固定在侧面。
智能哑铃图6
经数据分析发现,主控板如上图朝向运动时,Y轴加速度值变化明显。
智能哑铃图7

智能哑铃图8
经数据分析发现,主控板如上图朝向运动时,X轴加速度值变化明显。
智能哑铃图9
3.矢量和的模

当主控板安装在侧面时,运动时,只有Z轴加速度值变化不明显。当主控板在侧面朝向不同时,运动时,xy两轴的数据是不确定的,但是二者矢量和的模却是有规律的(其实真正的加速度被正交分解了)。
智能哑铃图12

智能哑铃图10

智能哑铃图13
4.(EMA)滤波
记第i个时间单位获取到的加速度的二个矢量和的模大小为xi,为了使数据更加平滑,分别使用两次的指数滤波(EMA)。


智能哑铃图15
其中a i 是拟合曲线,b i均值,因此Δ h = a i − b i 即波峰波谷的高度差,得到Δ h后再跟设置好的阈值比较。
Δ h>highLimit 往高
Δ h<lowLimit 往低
p1=0.5
p2=0.002
highLimit=300
lowLimit=-300
智能哑铃图17

智能哑铃图16

上图是带入这些参数得到的曲线,我们可以看到经过p1参数的滤波得到的曲线(红色),已经大致拟合原数据(蓝色),而经过p2 参数得到的曲线(绿色)大致为均值
5.记录个数

智能哑铃图18
智能哑铃图14
通过上图与实际运动情况对比分析,两个大波峰这间的小波峰是运动到最上时平行回拉的过程,此波峰可通过设定的阈值忽略掉。此时,只需要判断一个上升接一个下降,就可将计数器加1。具体程序如下:
智能哑铃图19

智能哑铃图22

6.使用二进制点阵显示计数
使用Micro:bit点阵屏最中间一行,使用二进制方式亮灯显示计数。因只有五位,所以最大可显示计数31。如要显示更大的计数,可将其它点阵灯利用上。
智能哑铃图20
智能哑铃图21
(显示计数9)
【演示视频】

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
aYYSW8AepLLd
aYYSW8AepLLd
厉害厉害
花生编程
花生编程
赞赞赞赞赞!!!
花生编程
花生编程
厉害厉害
Amos Young
Amos Young
厉害,膜拜大神!
三春牛-创客
三春牛-创客
不过这样有点不方便,还要连上数据线。如果能加个物联网模块,上传到MQTT上面就更好了!另外,我有点怕哑铃不小心掉了,就砸碎micro:bit。。。
三春牛-创客
三春牛-创客
赞赞赞!大神更新了!
三春牛-创客
三春牛-创客
厉害厉害
- 没有更多了 -