201浏览
查看: 201|回复: 9

[项目] 【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

[复制链接]
【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图2

ESP32-S3 UNO 开发板是基于 ESP32-S3-WROOM-1-N16R8 微控制器的扩展板,基于 Arduino 开发板架构。凭借 2.4GHz Wi-Fi 和集成蓝牙 5.0 等高级功能,它为开发各种项目提供了一个强大的平台。ESP32-S3 UNO 配备 16MB 闪存和 8MB RAM,特别适用于物联网 (IoT)、机器人和其他工程项目的复杂应用。该开发板支持 Python 和 C 等流行的编程语言,可以在 Arduino IDE 开发环境中轻松编程和使用。该板的高级功能,包括对多种通信协议的支持和高处理能力,使其成为专业工程师和开发人员的理想工具。

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 06:53:09

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

ADXL345是一款由Analog Devices公司推出的三轴数字加速度计,具有高分辨率和低功耗的特点,非常适合移动设备和其他需要精确加速度测量的应用。以下是对ADXL345三轴模块的详细介绍:

1、主要特点
高分辨率:ADXL345能够提供高达13位的分辨率,能够测量高达±16g的加速度1。
低功耗:在测量模式下,功耗低至23 μA,在待机模式下功耗仅为0.1 μA1。
多种测量范围:用户可以选择±2g、±4g、±8g或±16g的测量范围,适应不同的应用需求1。
数字接口:支持SPI(3线或4线)和I2C数字接口,方便与各种微控制器进行通信1。
内置功能:具有活动/非活动检测、单击/双击检测、自由落体检测等多种功能,可以独立映射到两个中断输出引脚1。

2、应用场景
移动设备:用于检测设备的倾斜、运动和冲击。
医疗仪器:用于监测患者的运动状态。
游戏和定点设备:用于检测用户的动作和姿态。
工业仪器仪表:用于监测机器的振动和运动状态。
个人导航设备:用于检测设备的方向和运动。

3、引脚功能
ADXL345模块通常有以下引脚:
VCC:电源引脚,连接到2.0V至3.6V的电源。
GND:地引脚。
SDA/SDI/SDIO:数据输入/输出引脚,用于I2C或SPI通信。
SCL/SCLK:时钟引脚,用于I2C或SPI通信。
CS:片选引脚,用于SPI通信。
INT1/INT2:中断引脚,用于输出检测到的事件。

4、使用步骤
连接电源和地:将VCC引脚连接到电源,GND引脚连接到地。
选择通信接口:根据需要选择I2C或SPI接口,并连接相应的引脚。
初始化传感器:在代码中初始化ADXL345传感器,设置测量范围和其他参数。
读取数据:通过I2C或SPI接口读取加速度数据,并进行处理。
ADXL345是一款功能强大且易于使用的三轴加速度计,适用于各种需要精确加速度测量的应用。

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图2

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:28:09

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
  {花雕动手做}项目之六:ESP32-S3 UNO(N16R8)驱动ADXL345动态检测俯仰角和滚动角的变化

知识点
1、俯仰角(Pitch)
俯仰角是物体绕其横轴(左右方向的轴)旋转的角度。以下是几个例子:

飞机:当飞机起飞时,机头向上抬起,这时俯仰角为正。如果飞机降落时机头向下,则俯仰角为负。
汽车:在陡坡上行驶时,汽车前端抬起,俯仰角为正;下坡时,汽车前端向下,俯仰角为负。
自平衡小车:当小车前倾时,俯仰角为正;后倾时,俯仰角为负。自平衡小车通过调整俯仰角来保持平衡。

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:31:43

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

滚动角(Roll)
滚动角是物体绕其纵轴(前后方向的轴)旋转的角度。以下是几个例子:
飞机:当飞机做滚转动作时,左翼或右翼向上抬起,这时滚动角发生变化。左翼向上时,滚动角为正;右翼向上时,滚动角为负。
船只:在波浪中航行时,船只左右摇摆,这时滚动角不断变化。船只左倾时,滚动角为正;右倾时,滚动角为负。
无人机:无人机在飞行中左右倾斜以改变飞行方向时,滚动角发生变化。无人机左倾时,滚动角为正;右倾时,滚动角为负。

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1


为了更直观地理解,可以想象以下情景:
俯仰角:想象你站在一个跷跷板的中间,当跷跷板的前端抬起时,你的俯仰角为正;当跷跷板的前端向下时,你的俯仰角为负。
滚动角:想象你站在一个旋转的圆筒中,当圆筒向左或向右倾斜时,你的滚动角发生变化。向左倾斜时,滚动角为正;向右倾斜时,滚动角为负。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:32:57

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
  4.   {花雕动手做}项目之六:ESP32-S3 UNO(N16R8)驱动ADXL345动态检测俯仰角和滚动角的变化
  5. */
  6. #include <Wire.h>
  7. #include <Adafruit_Sensor.h>
  8. #include <Adafruit_ADXL345_U.h>
  9. // 创建ADXL345对象
  10. Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
  11. void setup() {
  12.   // 初始化串口通信,波特率为115200
  13.   Serial.begin(115200);
  14.   Serial.println(" ");
  15.   Serial.println("ESP32-S3 UNO(N16R8)准备就绪");
  16.   // 初始化I2C总线,设置SDA为GPIO4,SCL为GPIO5
  17.   Wire.begin(4, 5);
  18.   // 初始化ADXL345传感器
  19.   if (!accel.begin()) {
  20.     // 如果传感器初始化失败,打印错误信息并停止程序
  21.     Serial.println("无法找到ADXL345传感器");
  22.     while (1);
  23.   }
  24.   Serial.println("ADXL345传感器初始化成功");
  25.   // 设置传感器的测量范围为±16g
  26.   accel.setRange(ADXL345_RANGE_16_G);
  27. }
  28. void loop() {
  29.   // 创建一个事件对象,用于存储传感器数据
  30.   sensors_event_t event;
  31.   // 读取传感器数据并存储到事件对象中
  32.   accel.getEvent(&event);
  33.   // 计算俯仰角(Pitch),使用atan2函数计算Y轴与X轴加速度的比值,并转换为角度
  34.   float pitch = atan2(event.acceleration.y, event.acceleration.x) * 180.0 / PI;
  35.   // 计算滚动角(Roll),使用atan2函数计算X轴与Y轴加速度的比值,并转换为角度
  36.   float roll = atan2(event.acceleration.x, event.acceleration.y) * 180.0 / PI;
  37.   // 打印计算得到的俯仰角和滚动角
  38.   Serial.print("俯仰角= "); Serial.print(pitch); Serial.print(" 度   ");
  39.   Serial.print("滚动角= "); Serial.print(roll); Serial.println(" 度");
  40.   // 延时500毫秒,控制数据输出频率
  41.   delay(1000);
  42. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:36:32

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

代码解读
1、传感器初始化:代码中首先初始化了ADXL345传感器,并设置了I2C总线的SDA和SCL引脚。这一步确保传感器能够正常工作。
2、数据读取:通过getEvent函数读取传感器的X、Y、Z轴加速度数据,这是计算俯仰角和滚动角的基础。
3、俯仰角计算:使用atan2函数计算俯仰角,公式为atan2(x, z),结果转换为角度。这里涉及X轴和Z轴的加速度数据。
4、滚动角计算:同样使用atan2函数计算滚动角,公式为atan2(y, z),结果转换为角度。这里涉及Y轴和Z轴的加速度数据。
5、数据输出:将计算得到的俯仰角和滚动角通过串口输出,便于观察和调试。延时100毫秒控制数据输出频率,避免过多数据输出导致串口缓冲区溢出。

通过这些步骤,你可以实时监测ADXL345传感器的俯仰角和滚动角。

实验串口返回情况

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:39:20

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

实验串口绘图器返回情况

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图2

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图3
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:41:50

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

实验场景图  动态图

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 07:58:29

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

实验场景图

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-10-5 08:01:14

【花雕学编程】Arduino动手做(233)---ADXL345的俯仰滚动角

ESP32-S3 UNO 开发板是基于 ESP32-S3-WROOM-1-N16R8 微控制器的扩展板,基于 Arduino 开发板架构。凭借 2.4GHz Wi-Fi 和集成蓝牙 5.0 等高级功能,它为开发各种项目提供了一个强大的平台。ESP32-S3 UNO 配备 16MB 闪存和 8MB RAM,特别适用于物联网 (IoT)、机器人和其他工程项目的复杂应用。该开发板支持 Python 和 C 等流行的编程语言,可以在 Arduino IDE 开发环境中轻松编程和使用。该板的高级功能,包括对多种通信协议的支持和高处理能力,使其成为专业工程师和开发人员的理想工具。

实验记录视频
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail