科技助力健身:仰卧起坐测试仪的功能设计与实现
本帖最后由 章 于 2025-6-4 09:55 编辑【演示视频】
https://www.bilibili.com/video/BV1os7LzAEVG/?vd_source=a2f15767c95ef2fd3773ea851eb1d643
【项目背景】 仰卧起坐是一项广受欢迎的腹部锻炼运动,其普及程度从小学三年级起便可见一斑,其中1分钟仰卧起坐测试更是成为了衡量学生体能的一项基础指标。市面上已有专门设计的仰卧起坐测试仪出售,它们在一定程度上提高了计数的准确性,但这些设备往往价格不菲,且体积较大,携带不便,限制了其在更广泛场景下的应用。鉴于此,制作了这个既轻便又功能全面的仰卧起坐测试仪。
【功能和亮点】 1、便携式设计:作品体积小巧,携带极为方便,无论是家庭、学校还是户外,都能轻松使用,满足您随时随地的健身需求。 2、高度可调节传感器:根据检测人员的身高和体型差异,可自由调节传感器的高度,确保每位使用者都能获得准确、舒适的仰卧起坐体验。 3、NFC智能识别:内置NFC识别功能,轻松识别学生卡等NFC标签,快速绑定学生姓名及成绩信息,实现智能化管理,让健身数据更加精准、可追溯。 4、自动计数功能:采用先进的传感器技术,能够精准统计仰卧起坐的次数,无需人工干预,让健身效果一目了然。 5、语音播报系统:配备清晰的语音播报功能,在各个环节中自动播报相应的提示语,如准备开始、倒计时、完成次数等,让使用者更加专注于锻炼,提升健身效果。 6、高清显示屏:配备一块高清显示屏,能够实时显示人员信息、倒计时信息以及所做的次数等关键信息,让使用者随时掌握健身进度。 7、1分钟倒计时功能:内置1分钟倒计时功能,帮助使用者合理安排锻炼时间,确保每次锻炼都能达到最佳效果。 8、物联网数据上传:支持将相关数据自动上传到物联网平台,方便管理者实时查看、分析健身数据,为健身计划提供科学依据,让健身更加科学、高效。【硬件清单】
序号硬件数量功能
1行空板1主控板,通过程序控制各个传感器及信息相关信息。
2语音合成模块1语音合成播报
3NFC近场通讯模块1识别学生卡等NFC标签
4红外光电开关2检测人的移动位置
5铵键2开始及重置
6喇叭1语音播放
7结构件等
【结构设计与搭建】 1、结构的设计 外观结构的材料采用3MM和5MM的椴木板,根据硬件组装的需求及作品外观的设想,先利用LaserMaker软件在电脑上设计出其外壳图纸,再用激光切割机切割出来。
2、把喇叭安装在侧面板相应位置,并用热熔胶固定。
3、把音频延长线的母头部分安装在侧面板的相应位置,并用热熔胶固定。(把一根1米长的音频延长线靠近母头20厘米处剪断,公头部分连接红外光电开关用。)
4、把侧面板与底板组装在一起。
5、把NFC近场通讯模块、语音合成模块及按键安装在上面板相应位置,用铆钉固定。
6、把各个传感器连接到行空板相应的接口上。
7、组装好上面板。
8、把红外光电传感器和行空板组装在支架面板的相应位置。再把支架面板用铆钉固定在底座盒子上。
9、组装好头部检测部分结构,音频延长线公头部分与红外光电传感器连接好,注意连接线的顺序与母头与行空板连接顺序要对应起来,这样使用时只要把公头插在母头上就行了,不用时可以拔掉方面移动携带,至此,整个结构组装及接线就完成了。
五、程序编写 1、程序的编写软件是Mind+,打开Mind+软件,切换到Python模式并选择图形化编程模式。下图所示:
2、作品使用的主控板是行空板,传感器执行器有NFC模块、语音合成模块,我们先选择相应的主控板和传感器、执行器。点击左下角的“扩展”,在弹出窗口的“官方库”中选择“行空板”和“MQTT-py”,在“pinpong库”中选择“NFC模块”和“语音合成模块”,最后点击“返回”回到编程界面。如下图所示:
3、作品中用了NFC模块,我们添加NFC初始化积木块,再添加一些显示显示文字对象积木块,根据屏幕显示的内容及位置设置相应的参数及显示内容。如下图所示:
4、作品中使用了行空板版自带的物联网平台SIoT,把每位学生的测试结果都上传到物联网平台上,可以实时查看和后期查看统计及分析。要使用行空板自带的物联网平台,先要开启SIoT服务和无线热点模式,长按行空板的“Home”键进入菜单页,点击“应用开关”,检查SIoT服务是否开启,如果显示“已禁用”,点击SIoT选项,切换SIoT状态为“已启用”,再进入“开关无线热点模式”,检查无线热点是否启用,如果显示“已禁用”,则把它开启起来。 添加“初始化MQTT”、“MQTT发起连接”、“MQTT保持连接,永久”、“MQTT订阅”积木块,再对MQTT 进行初始化参数设置,其中SIoT服务器地址为192.168.123.1,其它的都用默认的,不用更改。如下图所示:
5、程序中要用到一些变量,根据下图新建相应的变量并进行赋值,再添加语音合成模块的初始化等并进行相应的设置。具体程序如下图所示:
6、读取卡片的UID。 通过串口打印的方式来查看卡片的UID,在循环执行中添加一个条件判断积木块,其中条件是有没有“检测到卡片”,当检测到卡片时就串口打印卡片的UID,再加一个等待1秒的积木块。
7、卡片的UID知道后,要把卡片与学生姓名一一对应起来,可以用条件判断的积木块来实现,每个UID对应一个学生,通过更新相应对象名让学生的名字在屏幕上显示出来,并用语音合成模块播报学生的姓名及相应的内容。如下图所示:
8、仰卧起坐计数的开始与重置。通过接在P21和P22引脚上的按键来控制计数的开始与结束,程序中变量“开始”用来控制仰卧起坐“倒计时60秒”是否开始运行及时间到后运行的程序;变量“倒计时时间”不管是在“开始计数”中还是“重置”中都设为60(1分钟),也就是说我们要统计60秒内仰卧起坐的次数;变量“个数”用来统计仰卧起坐所做的数量;变量“计数开始”用来控制“仰卧起坐计数统计”程序是否运行。再分别更新屏幕上显示的内容和播报语音内容。详细程序如下图所示:
9、变量“开始”为1时“仰卧起坐倒计时”开始运行,首先进行3秒倒计时播报,这样可以让学生有准备的时间,再让赋值变量“计数开始”为1,这时“仰卧起坐计数统计”程序就开始运行,接着执行“60秒倒计时程序”,在倒计时过程中如果“倒计时时间”为0或按了重置按键则跳出“60秒倒计时程序”,最后如果“倒计时时间”为0则播报相应的内容,并把相关内容上传到物联网平台。详细程序如下图所示:
10、仰卧起坐个数统计程序。为了使个数统计不受主程序运行时间的影响,可以新建一个“个数统计”线程,这样它们之间运行互不干扰。首先在点击左侧的“行空板”,在“多线程”组中拖出“线程对象启动”积木块,把对象名改为“个数统计”,再把它放到主程序循环执行的上面。 在“个数统计”线程中,也要用到的主程序中的变量“计数开始”、“个数”、“倒计时时间”及“状态”,所以要把这几个变量定义为全局变量。什么时候开始统计呢,只有变量“计数开始”为1时且“倒计时时间”大于0时才运行具体的个数统计程序。个数统计主要是借助两个红外光电开关传感器来实现的,其中一个摆放在头部位置,一个摆放在腰部位置,一开始时测试者人先躺好,这时头部的红外光电开关就会检测到,直到头部离开红外光电开关处才会继续执行下面的程序,当腰部的红外光电开关检测到人时,则个数就自动增加1个,结果在屏幕上更新显示并语音进行播报,为了使运行效果更加完美,在这里还增加了变量“状态”的条件判断。详细程序如下图所示:
11、完整程序如下图所示:
真厉害,以后体侧都简单了 方便把激光切割的源文件分享一下,谢谢。13601970671@163.com 赞
页:
[1]