1、前言
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目,今天要分享的是基于STM32单片机ADXL345三轴加速器的无线数据采集与运动状态监测
2、简介
基于STM32单片机ADXL345三轴加速器的无线数据采集与运动状态监测
1、利用单片机STM32F103C8T6单片机采集ADXL345加速度计数据;
2、OLED液晶屏实时显示当前三轴加速器模块XYZ轴数据。
3、 将采集到的三轴加速器模块XYZ轴数据通过wifi模块上传到app实时显示
4、对实时采集的数据进行处理分析并在app上显示行走、站立、跌倒、跳跃等运动状态。
3、组成
本设计由STM32F103C8T6单片机最小系统+wifi模块+ADXL345三轴加速器模块+OLED液晶显示屏+电源电路组成。
4、实现效果
整体展示
5、设计原理
5.1DXL345倾角传感器模块简介
本设计选择倾角传感器ADXL345模块实时检测相关的状态信息。ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立映射到两个中断输出引脚中的一个。正在申请专利的集成式存储器管理系统采用一个32级先进先出(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。
实物图
5.2 STM32F103C8T6简介
- STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
- 一、STM32的主要优点:
- (1)使用ARM最新的、先进架构的Cortex-M3内核
- (2) 优异的实时性能
- (3) 杰出的功耗控制
- (4) 出众及创新的外设
- (5) 最大程度的集成整合
- (6) 易于开发,可使产品快速将进入市场
- 二、STM32——最佳的平台选项
- 对于使用同一平台进行多个项目开发而言,STM32是最
- 佳的选择:
- (1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
- (2) 从苛求性能的应用到电池供电的应用
- (3) 从简单而成本敏感的应用到高端应用
- (4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
- STM32F103C8T6单片机核心板接口电路图如下图所示。
STM32单片机核心板接口原理图
6、部分核心代码
void TCPsend(short x,short y, short z , uint8_t s); //
uint8_t STATE_Dear(short x,short y, short z); //
int main(void)
{
uint8_t stateee = 0;
char DevIP[120];
delay_init();
uart1_init(115200);
uart2_init(115200);
YHGUI_Config();
ADXL345_Init();
YHGUI_DispString(0,0,DevIP,16,1);
while(1)
{
if(WIFI_OPEN == 1)
{
YHGUI_DispString(120,0,(char*)socket,16,0);
ADXL345_Read_Average(&x_AXIS,&y_AXIS,&z_AXIS,10);
ADXL_Show_num(0,16,x_AXIS);
ADXL_Show_num(0,32,y_AXIS);
ADXL_Show_num(0,48,z_AXIS);