目录
- 作业要求
- 设计原理与思路
- 扩展任务说明
- 课程感受
- 友情链接
- 工程链接
作业要求
体能测试记录仪设计
基于课程发放的实验板,设计一个带有计时和数据采集功能的体能测试记录仪。
基本设计内容
功能1:对应1000米体测场景,使用充电宝供电,提供计时功能,按K5清零并开始计时,K6停止计时。计时过程使用数码管显示当前计时,K2显示分秒,K3显示秒、百分秒,计时结束后保持显示结果。
功能2∶计时完成后自动将测试时间(RTC时钟的年月日时分秒)和测试时长(分、秒、百分秒)记录到外置FLASH存储器。最多保存100次记录数据,并可由K1按键或串口发命令读取所有记录。
功能3:在计时状态,提供数据采集功能,使用MPU6050六轴传感器,采集测试者3轴加速度和3轴角速度,每隔50ms采集数据,包括时间、6轴数据,计时结束时自动存储采集数据。采集数据仅保存单次计时过程产生的数据,重新开始计时后覆盖上次数据。可使用K4按键或由串口发命令读取所有采集数据。
扩展设计内容
扩展功能1:使用C++、Java、C#、Matlab或Python等高级语言,编写记录仪上位机数据处理工具,能读取记录仪存储的所有信息。能根据记录的时间、6轴数据绘制数据曲线(6轴数据分6条曲线可单独显示或叠加显示)。
扩展功能2:提供蓝牙或WIFI模块,使用安卓手机连接记录仪,通过手机上设计的App应用,读取记录仪上的所有信息。并能在手机上显示当前计时时间、当前6轴数据,计时完成后,能绘制6轴数据曲线。
扩展功能3:对应不同的体测对象,根据其各自的记录数据进行综合计算,分析比较其体能强弱,需给出判断依据、算法原理和设计流程。
设计原理与思路
系统设计流程:
下位机采集到数据并将数据按照相应的协议、数据帧格式分别发送给上位机以及手机。
手机app显示波形和当前时间。
上位机显示波形和时间, 6轴数据分6条曲线可单独显示或叠加显示。
当所有数据接收完毕,上位机会将6轴数据以及时间以文本形式保存到电脑。再使用matlab对本文数据进行读取、分析,得到测试者体能情况。
系统框图:
下位机设计流程:
本作业主要使用到的模块有:MPU6050、外置flash、无线模块esp826、蓝牙HC05
再加上板子上的数码管、按键;这样就能构成我们使用RTOS所需要的task了,分为:数据采集任务、无线数据传输任务、蓝牙数据传输任务、时间显示任务、按键检测任务。
关于外置flash模块,由于写入速度较慢,所以并没有单独形成一个任务,而是在停止按键按下后,顺序执行数据存入flash操作。同时为了可视化写入进程,使用了led。
下位机处理流程图:
扩展任务说明
扩展功能1 上位机开发环境:
扩展功能1 上位机开启tcp服务:
扩展功能1 上位机绘制曲线:
扩展功能1 文件写入功能:
拓展功能1 效果展示:(找不到有曲线绘图的图片了)
拓展功能2 APP介绍
手机APP端我们选择的是对”蓝牙调试器”做二次开发。
拓展功能2 APP设置:
设置接收数据包格式,除了帧头帧尾以及校验位之外,我们这里需要传送12个byte类型数据,分别为年、月、日、时、分、秒、gx、gy、gz、ax、ay、az。注意这里的六轴数据在下位已经做好归一化处理了,归一化到-127~128的范围了。关于帧头帧尾校验位需要在下位机设置。
选择一个一维波形窗口,以及6个文本窗口。将数据帧的12个数据对应到各自的位置即可。
拓展功能3 原理:
首先对加速度计采集回来的数据进行处理,提取其中水平方向上的加速度变化,再通过离散傅里叶变化,获取三个三个方向上加速度的频域曲线,经过低通滤波,最后对频域进行积分处理,得到一个数值,即可代表体能大小,改数值越大则代表体能越好,因为说明测试者大部分时间在高频率地运动。
拓展功能4 代码展示:
拓展功能3 效果展示:
课程感受
对团队合作想法:分工合作、各自完成分配好的任务能够节省不少时间。在对不同版本的工程进行更新时,也更容易发现队友出现的问题;
对嵌入式课程的看法:平时作业量较大,能学到很多单片机知识;
友情链接
Zcc的博客
杭电嵌入式课程设计——上位机(ZCC)
[强哥博客](www.kensporger. com)
工程链接
链接:https://pan.baidu.com/s/14ZLFZjar8uSd8BBqZVTMIw
提取码:ljn0