ESP32读取ADXL345三轴加速度传感器实时数据
- ADXL345三轴加速度传感器简介
- ADXL345模块原理图与引脚说明
- ESP32读取ADXL345程序
- 实验结果
ADXL345三轴加速度传感器简介
ADXL345是一款由Analog Devices公司推出的三轴数字加速度计,分辨率高(13位),测量范围达± 16g,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。
该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立映射到两个中断输出引脚中的一个。集成式存储器管理系统采用一个32级先进先出(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。
ADXL345模块原理图与引脚说明
ADXL345模块原理图
ADXL345芯片引脚定义
ADXL345传感器接线
由于SDO引脚下拉到GND,当使用SPI通信时为3线式。由于原理图中CS引脚已经上拉,默认为IIC通信模式,要使用SPI通信模式,CS引脚需要外部控制器下拉。
本测试实验中使用默认的IIC通信方式,ESP32开发板GPIO4接ADXL345的SDA,GPIO5接SCL
ESP32读取ADXL345程序
Arduino IDE库管理器中搜索安装如图Adafruit ADXL345库,会一并安装好相关依赖库Adafruit BusIO,Adafruit_Sensor和Adafruit_ADXL345_U库,或单独搜索安装依赖库。
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>// 创建ADXL345对象
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);void setup() {Serial.begin(115200);// 初始化I2C总线,设置SDA为GPIO4,SCL为GPIO5Wire.begin(4, 5);// 初始化传感器if (!accel.begin()) {Serial.println("无法找到ADXL345传感器");while (1);}Serial.println("ADXL345传感器初始化成功");// 设置测量范围accel.setRange(ADXL345_RANGE_16_G);
}void loop() {sensors_event_t event;accel.getEvent(&event);// 打印加速度数据Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.println(" ");delay(500);
}
实验结果
打开串口监视器,复位ESP32开发板,若传感器正常,接线无误,则会打印出ADXL345初始化成功,并读取到X、Y、Z三轴的加速度值,摇晃传感器数值会发生相应变化。若传感器或接线不正常,则会打印出提示无法找到ADXL345传感器。