【单片机毕业设计】基于STM32单片机ADXL345三轴加速器的无线数据采集与运动状态监测

28 篇文章 2 订阅
13 篇文章 1 订阅

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简介

  1. STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
  2. 一、STM32的主要优点:
  3. (1)使用ARM最新的、先进架构的Cortex-M3内核
  4. (2) 优异的实时性能
  5. (3) 杰出的功耗控制
  6. (4) 出众及创新的外设
  7. (5) 最大程度的集成整合
  8. (6) 易于开发,可使产品快速将进入市场
  9. 二、STM32——最佳的平台选项
  10. 对于使用同一平台进行多个项目开发而言,STM32是最
  11. 佳的选择:
  12. (1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
  13. (2) 从苛求性能的应用到电池供电的应用
  14. (3) 从简单而成本敏感的应用到高端应用
  15. (4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
  16. 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);                       

STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,而ADXL345是一款低功耗、三轴加速度传感器。要在这款STM32上读取ADXL345的数据,你需要完成以下几个步骤: 1. **硬件连接**: - 将ADXL345的SCL和SDA线连接到STM32的I2C通信接口。 - 如果ADXL345需要外部电源,确保供电稳定。 2. **初始化I2C**: - 配置I2C模块,包括设置时钟速率、地址(通常是0x53或0x1D,取决于模式)等。 3. **打开I2C通信**: - 发起从设备(ADXL345)的读取请求。 4. **数据传输和读取**: - 使用I2C的`read()`或`receive()`函数读取传感器的命令字节(如测量启动)以及数据结果。 5. **处理数据**: - ADXL345通常会返回三个轴的加速度值,解析并转换成合适的单位(比如g)。 6. **数据存储和显示**: - 把读取到的加速度数据保存在STM32的内存里,然后如果需要,可以在LCD、LED或其他外设上显示。 下面是一个简单的伪代码示例: ```cpp #include "stm32f1xx_hal.h" #include <i2c.h> #include "adxl345.h" void readAdxl345(void) { I2C_HandleTypeDef hi2c; uint8_t data; // 初始化I2C HAL_I2C_Init(&hi2c); // 发送读取命令 writeCommand(ADXL345_MEASURE_CMD); // 读取数据 HAL_I2C_Master_Transmit(&hi2c, ADXL345_ADDRESS, (uint8_t*)data, 6, 1000); // 解析数据并处理 float x = convertData(data, data); float y = convertData(data[2], data); float z = convertData(data, data); // 存储和显示数据... }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值