如何让Arduino使用ADXL345加速度计传感器

在本篇Arduino使用加速度计的文章中,我们将使用物美价廉的ADXL345加速度计。

跟随我们的脚步,您将学会如何将ADXL345加速度计连接到Arduino Uno,利用Adafruit的ADXL345传感器库读取数据。

ADXL345是一款经济型的低功耗三轴MEMS加速度计,支持I2C和SPI串行接口。

MEMS是微型电子机械系统的缩写,这表明ADXL345包含一个微观的机械元件,用于确定加速度。

也可以在Raspberry Pi上使用这个ADXL345,但设置过程是相当不同,所以如果决定使用Pi,请务必查看教程。

设备清单

需要有以下设备来完成这个Arduino加速度计教程。

必备设备

  • Arduino Uno
  • 面包板
  • 面包板线
  • ADXL345加速度计

连接Arduino加速度计电路

ADXL345加速度计的电路相当简单,不需要任何复杂的部件和接线,可以直接连接到Arduino上。

下面的教程将包含所有步骤。

  • 将ADXl345的GND引脚连接到Arduino的GND引脚。
  • 将ADXL345的VCC引脚连接到Arduino的3v3引脚。
  • 将 ADXL345 的 SCL 引脚与 Arduino 上的 SCL 引脚连接。
  • 将ADXL345的SDA引脚连接到Arduino上的SCL引脚。

下面的电路图对连接Arduino和ADXL345可能更直观。

如果你使用的是Adafruit ADXL345板,你也可以使用5V连接,因为该板上有电路将电压降到3V。Arduino Accelerometer ADXL345 Wiring Schematic

导入控制库

使用库,编写读取加速度计数据的代码就非常简单了。

在这个Arduino项目中,我们利用”Adafruit Unified Sensor”库和”Adafruit ADXL345″库。

  1. 首先,在Arduino IDE中打开库菜单,进入Sketch (1.) -> Include Library (2.) -> Manage Libraries (3.)

Arduino Sketch Manage Libraries

  1. 在这个窗口中搜索Adafruit ADXL345(1.),找到 “Adafruit ADXL345 by Adafruit”(2.),应该是唯一的搜索结果。

Adafruit ADXL345 Library install

  1. 现在,在同一个窗口中,搜索 “Adafruit Unified Sensor”(1.),找到库(2.)。

找到后,按 “Install”(3.)按钮进行安装。

DHT Adafruit Unified Sensor Library

编写加速度计代码

  1. 在Arduino IDE中输入以下代码

我们将对Arduino加速度计代码的每个部分进行解释,让你了解这一切是如何工作的,以及每个重要代码的作用。

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>

首先包括所有的库头文件,这些文件将是我们程序的大部分功能所依赖的。

在ADXL345库中使用了 “Wire “库,这样Arduino可以使用i2C串行协议与加速度计进行通信。

需要使用 “Adafruit_Sensor “库,因为它是我们使用的ADXL345库的基础。它为ADXL345库处理一些不同的事情,并作为Adafruit的大部分传感器库的基础。

最后我们导入的库是 “Adafruit_ADXL345 “库。这个库负责处理与Arduino的加速度计的交互,我们利用这个库来读取传感器的加速度数据。

Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();

这一行将Adafruit ADXL345库实例化为 “accel “变量。

accel “变量将有一个自定义对象,允许访问许多帮助函数,用于与ADXL345加速度计交互。

void setup(void) 
{
   Serial.begin(9600);  

   if(!accel.begin())
   {
      Serial.println("No ADXL345 sensor detected.");
      while(1);
   }
}

当Arduino开机时,这个”setup()“函数会自动运行。

我们首先运行”Serial.begin()“函数,这样Arduino就可以通过串行连接发送消息。在这个函数中,我们输入了9600的波特率。

之后,我们利用 “accel “对象的 “begin()“函数来启动它与ADXL345加速度计的连接。

接下来,我们检查这个函数返回的结果。如果返回的结果为 “False”,就向串行监视器打印出一条消息,提醒用户我们访问ADXL345加速度计失败。

如果确实发生了错误,我们使用 “while(1) “运行一个无限循环,这样可以确保我们永远不会进入主循环。要退出这个循环,需要重新启动Arduino。

void loop(void) 
{
   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.print("  ");
   Serial.println("m/s^2 ");
   delay(500);
}

这个 “loop() “函数在 “setup() “函数执行完毕后自动运行。

在这个函数中,我们创建了一个名为”event”的变量,使用”sensor_event_t”结构。

接下来,我们使用 “accel”对象的”getEvent()“函数,传入我们之前定义的事件变量。

这个 “getEvent()“函数将从加速度计中获取数据,并将相关数据填入我们传入的结构(本例中是 “event”变量)。

然后我们打印出存储在 “事件 “变量中的X、Y和Z加速度值。所有这三个值都可以通过”event.acceleration “向量获得。

最后,我们通过使用 “delay()“函数来延迟循环运行500ms。

  1. 最终的代码应该会像下面所示的那样。
#include <Wire.h>
#include <Adafruit_Sensor.h> 
#include <Adafruit_ADXL345_U.h>

Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();

void setup(void) 
{
  Serial.begin(9600);  
  if(!accel.begin())
  {
     Serial.println("No ADXL345 sensor detected.");
     while(1);
  }
}
void loop(void) 
{
  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.print("  ");
  Serial.println("m/s^2 ");
  delay(500);
}

测试Arduino ADXL345加速度计

  1. 将代码上传到Arduino中,请点击 “Verify”按钮(1.),然后点击 “Upload”按钮(2)。

Adafruit ADXL345 Accelerometer Verify and upload code

如果你遇到问题,请检查代码以确保一切正常。

另外,确认你的Arduino是否连接好了,并且在Tools -> Port下选择了它。

  1. Arduino加速度计现在应该已经启动并运行,并通过串行监控器展示数据。

现在是加载串行监控器的最佳时机,这样你就可以看到ADXL345加速度计正在进行的测量。

您可以通过点击 “Tools”(1.),然后点击 “Serial Monitor””(2.),打开Arduino串行监控器软件。

Adafruit-ADXL345-Accelerometer-Tools-Serial-Monitor

  1. 在串行监视器内,应该开始看到连接到Arduino的ADX345加速度计的数据。Adafruit-ADXL345-Accelerometer-Serial-Monitor

希望在本教程结束时,你的Arduino加速器能正常工作,数据也是你所期望的样子。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 如何让Arduino使用ADXL345加速度计传感器

赞 (0)

评论

7+9=