智能哑铃
本帖最后由 云天 于 2023-8-20 10:28 编辑【项目背景】
闺女开学就要升入高中了,据说衡水中学的军训很累,还有远足活动。所以这几天每天早起陪闺女晨跑,孩儿她妈还给买了哑铃,哑铃是每个5KG,孩子觉得锻炼起来还可以,但她妈觉得有些重,不适合闺女。又买了更小的3KG,大的就给我了。我微微一笑,“造”起来。
【项目设计】
设计原则:不能太影响哑铃原有重量,不影响活动过程,不影响存放。
设计原理:使用哑铃锻炼过程中,哑铃上升下降,运动速度会有快慢变化即产生加速度变化,可由加速度传感器测得。
硬件选择:主板使用Micro:bit,Micro:bit板载加速度传感器。
【设计亮点】
1.使用X轴、Y轴向量和的模来判断运动状态
2.使用指数移动平均(EMA)滤波算法
3.使用二进制点阵进行计数
【制作过程】
1、方案一,将Micro:bit固定在正面。
编写程序,获取三轴加速度值
在Excel中处理,并使用图表进行分析
可发现,运动过程中,Z轴加速度有明显变化。通过程序分析Z轴加速度值,可得运行状态。但同时,也发现,这样放置主控板,不利于存放(有可能放下时朝下压坏)。
2.方案二,将Micro:bit固定在侧面。
经数据分析发现,主控板如上图朝向运动时,Y轴加速度值变化明显。
经数据分析发现,主控板如上图朝向运动时,X轴加速度值变化明显。
3.矢量和的模
当主控板安装在侧面时,运动时,只有Z轴加速度值变化不明显。当主控板在侧面朝向不同时,运动时,xy两轴的数据是不确定的,但是二者矢量和的模却是有规律的(其实真正的加速度被正交分解了)。
4.(EMA)滤波
记第i个时间单位获取到的加速度的二个矢量和的模大小为xi,为了使数据更加平滑,分别使用两次的指数滤波(EMA)。
其中a i 是拟合曲线,b i均值,因此Δ h = a i − b i 即波峰波谷的高度差,得到Δ h后再跟设置好的阈值比较。
Δ h>highLimit 往高
Δ h<lowLimit 往低
p1=0.5
p2=0.002
highLimit=300
lowLimit=-300
上图是带入这些参数得到的曲线,我们可以看到经过p1参数的滤波得到的曲线(红色),已经大致拟合原数据(蓝色),而经过p2 参数得到的曲线(绿色)大致为均值
5.记录个数
通过上图与实际运动情况对比分析,两个大波峰这间的小波峰是运动到最上时平行回拉的过程,此波峰可通过设定的阈值忽略掉。此时,只需要判断一个上升接一个下降,就可将计数器加1。具体程序如下:
6.使用二进制点阵显示计数
使用Micro:bit点阵屏最中间一行,使用二进制方式亮灯显示计数。因只有五位,所以最大可显示计数31。如要显示更大的计数,可将其它点阵灯利用上。
(显示计数9)
【演示视频】
https://www.bilibili.com/video/BV1A44y1F7b9/?share_source=copy_web&vd_source=98855d5b99ff76982639c5ca6ff6f528 厉害厉害 赞赞赞!大神更新了! 不过这样有点不方便,还要连上数据线。如果能加个物联网模块,上传到MQTT上面就更好了!另外,我有点怕哑铃不小心掉了,就砸碎micro:bit。。。 厉害,膜拜大神! 厉害厉害 赞赞赞赞赞!!!{:6_215:}{:6_209:} 厉害厉害
页:
[1]