1. 原题要求
- 设计运动检测终端
- 读取adxl345数据,并通过滤波获得稳定的数据,绘制x y z三个方向的加速度曲线
- 通过重力加速度以及三轴测量值计算倾角 https://blog.csdn.net/black_yu/article/details/52673718
- 可记录历史曲线
- 通过三轴坐标系显示物体姿态
2. 运动检测终端是啥?
其实运动检测终端就是分解一个物体是怎么动的,方向是向前,还是向后,还是左右,速度加速度是多少,同时也要能识别出角度(仰角,俯角)等等。然后可以通过这些参数,还原出物体的怎么运动的。例如Switch的体感游戏,手柄就是一个运动检测终端。
3. ADXL345 传感器
简介
ADXL345 是一种三轴加速度传感器。可以获取当前X, Y, Z三轴的加速度数据。
https://blog.csdn.net/jcdjx/article/details/24356035
通讯方式
想让树莓派和ADXL345 进行通信,有2种方式:
SPI 通信
引脚 | 功能 |
---|---|
SDA(MOSI) | 数据线 |
SCL(SCLK) | 时钟线 |
CS(CE) | 片选线 |
VCC | 3.3V |
GND | 接地 |
数据滤波
传感器读回来的数据需要进行数据滤波,最简单可以使用平均值来计算
复杂一些可以使用卡尔曼滤波,如下面博客
https://www.cnblogs.com/wangh0802PositiveANDupward/archive/2012/09/01/2666857.html
4. 倾角计算
通过这三个加速度的数据, 可以计算出对应的俯角,倾斜角度,旋转角度数据。计算方法可以看下面这篇博客
https://wiki.dfrobot.com/How_to_Use_a_Three-Axis_Accelerometer_for_Tilt_Sensing#Introduction
5. 可记录历史曲线
将3个轴的数据,用曲线图的方式来实现,例如这种:
qt 自带的图表库不好用,可以实验QCustomplot来绘图实现
QCustomplot官网:https://www.qcustomplot.com/
QCustomplot 安装方法:https://blog.csdn.net/czyt1988/article/details/10143141
QCustomplot 官方入门教程:https://www.qcustomplot.com/index.php/tutorials/basicplotting
QCustomplot 官方文档:https://www.qcustomplot.com/documentation/index.html
6. 三轴坐标系显示物体姿态
通过 qwtplot3d 来实现
官网:http://qwtplot3d.sourceforge.net/
demo: https://blog.csdn.net/kanpeila1963/article/details/100611875
这个模块比较难写,目前参考资料也不多,后面会具体试一下。
7.需要实现的功能整理
- adxl345 传感器初始化与数据读取
- adxl345 传感器数据滤波
- adxl345 传感器计算获得角度信息
- 定时器定时读取数据并更新在GUI(通过QCustomplot)
- 绘制出3D模型