Ks0128 keyestudio EASY plug ADXL345 Three Axis Acceleration Module: Difference between revisions

From Keyestudio Wiki
Jump to navigation Jump to search
No edit summary
Line 28: Line 28:
<br>
<br>
==Upload the Code==
==Upload the Code==
Copy and paste below code to [http://wiki.keyestudio.com/index.php/How_to_Download_Arduino_IDE Arduino IDE] and upload.
Below is an example code. Open or drag below code to [https://wiki.keyestudio.com/Getting_Started_with_Mixly  Mixly Blocks] and upload the code to your board to check the 3-axis acceleration data and the module's tilt information.<br>
<pre>
<br>[[File:ks0397 22.1.png|500px|frameless|thumb]]<br>
#include <Wire.h>    // place file “Wire.h” under the directory “libraries” of Arduino
// Registers for ADXL345
#define ADXL345_ADDRESS (0xA6 >> 1)  // address for device is 8 bit but shift to the
                                    // right by 1 bit to make it 7 bit because the
                                    // wire library only takes in 7 bit addresses
#define ADXL345_REGISTER_XLSB (0x32)


int accelerometer_data[3];
<br>
// void because this only tells the cip to send data to its output register
==What You Should See==
// writes data to the slave's buffer
Open the Serial monitor to see the 3-axis acceleration data. See changes as you sway the Accelerometer.
void i2c_write(int address, byte reg, byte data) {
<br>[[File:ks0397 22-2.png|500px|frameless|thumb]]<br>
  // Send output register address
  Wire.beginTransmission(address);
  // Connect to device
  Wire.write(reg);
  // Send data
  Wire.write(data); //low byte
  Wire.endTransmission();
}


// void because using pointers
<br>
// microcontroller reads data from the sensor's input register
<span style="color: red">'''Little Knowledge:'''</span> <br>
void i2c_read(int address, byte reg, int count, byte* data) {
If you think the monitor’s result is too fast to see the data clearly, you can drag a Delay block to add into the source code. Shown below. <br>
  // Used to read the number of data received
After that, upload the code again and open the monitor, you should be able to see the display data clearly. <br>
  int i = 0;
<br>[[File:ks0397 22-3.png|500px|frameless|thumb]]<br>
  // Send input register address
  Wire.beginTransmission(address);
  // Connect to device
  Wire.write(reg);
  Wire.endTransmission();


  // Connect to device
  Wire.beginTransmission(address);
  // Request data from slave
  // Count stands for number of bytes to request
  Wire.requestFrom(address, count);
  while(Wire.available()) // slave may send less than requested
  {
    char c = Wire.read(); // receive a byte as character
    data[i] = c;
    i++;
  }
  Wire.endTransmission();
}


void init_adxl345() {
<br>
  byte data = 0;
==Extension Experiment==
<br>
<span style=color:brown>'''Controlling Three LEDs'''  </span><br>
<br>
'''Hookup Guide'''<br>
Connect the EASY Plug ADXL345 Acceleration module and three LED modules to control board using RJ11 cables.
<br>[[File:三轴灯.jpg|500px|frameless|thumb]]<br>


  i2c_write(ADXL345_ADDRESS, 0x31, 0x0B);  // 13-bit mode  +_ 16g
<br>
  i2c_write(ADXL345_ADDRESS, 0x2D, 0x08);  // Power register
'''Test Code'''<br>
Upload the test code below to your board to check the 3-axis acceleration data and the module's tilt information.
<br>[[File:ks0397 22.2.png|500px|frameless|thumb]]<br>


  i2c_write(ADXL345_ADDRESS, 0x1E, 0x00);  // x
<br>
  i2c_write(ADXL345_ADDRESS, 0x1F, 0x00);  // Y
'''What You Should See'''<br>
  i2c_write(ADXL345_ADDRESS, 0x20, 0x05);  // Z
<br>[[File:ks0397 22-4.png|500px|frameless|thumb]]<br>
<br>
  // Check to see if it worked!
Upload success, open the serial monitor, it prints out the value of X,Y,Z axis. Each axis controls a light. If the measured value is greater than 200, LED lights up.
  i2c_read(ADXL345_ADDRESS, 0X00, 1, &data);
<br>[[File:ks0397 22-6.png|500px|frameless|thumb]]<br>
  if(data==0xE5)
<br>[[File:ks0397 22-7.png|500px|frameless|thumb]]<br>
    Serial.println("it work Success");
<br>[[File:ks0397 22-8.png|500px|frameless|thumb]]<br>
  else
    Serial.println("it work Fail");
}


void read_adxl345() {
  byte bytes[6];
  memset(bytes,0,6);
  // Read 6 bytes from the ADXL345
  i2c_read(ADXL345_ADDRESS, ADXL345_REGISTER_XLSB, 6, bytes);
  // Unpack data
  for (int i=0;i<3;++i) {
    accelerometer_data[i] = (int)bytes[2*i] + (((int)bytes[2*i + 1]) << 8);
  }
}
// initialise and start everything
void setup() {
  Wire.begin();
  Serial.begin(9600);
  for(int i=0; i<3; ++i) {
    accelerometer_data[i]  = 0;
  }
  init_adxl345();
}
void loop() {
  read_adxl345();
  Serial.print("ACCEL: ");
  Serial.print(float(accelerometer_data[0])*3.9/1000);//3.9mg/LSB scale factor in 13-bit mode
  Serial.print("\t");
  Serial.print(float(accelerometer_data[1])*3.9/1000);
  Serial.print("\t");
  Serial.print(float(accelerometer_data[2])*3.9/1000);
  Serial.print("\n");
  delay(100);
}
</pre>


<br>
<br>
==What You Should See==
==Resources ==
Open the Serial monitor to see the 3-axis acceleration data. See changes as you sway the Accelerometer.
'''Download the Arduino datasheet:'''<br>
<br>[[File:ks0128 Result.gif|700px|frameless|thumb]]<br>
https://drive.google.com/open?id=1T8nejCErqCIU77e3dA2IvNUA_3VbsHq3


<br>
'''Download the Mixly Code and Datasheet:'''<br>
 
https://drive.google.com/open?id=1Oqg067IBgaQSLoRQcvfxpAa6rR1i2HVs
==Resources ==
'''Download the PDF:'''<br>
https://drive.google.com/open?id=1y4fcjZzVs7ds2udrOFQINh8LxXg4tp1F


'''Download the Code:'''<br>
https://drive.google.com/open?id=1T-9tg_D9hsSF3kasC-T8xdihXrKW67JF


<br>
<br>
==Buy from ==
==Buy from ==
*'''Official Website:''' http://www.keyestudio.com/ks0128.html
*[https://www.keyestudio.com/newkeyestudio-easy-plug-adxl345-three-axis-acceleration-module-for-arduino-steam-p0098-p0098.html '''Official Website''' ]


*[https://www.aliexpress.com/store/product/New-Keyestudio-EASY-plug-ADXL345-Three-Axis-Acceleration-Module-for-arduino/1452162_32644046717.html?spm=2114.12010612.8148356.48.41484ba7Q6bjKs  Shop on aliexpress]
*[https://www.aliexpress.com/store/product/New-Keyestudio-EASY-plug-ADXL345-Three-Axis-Acceleration-Module-for-arduino/1452162_32644046717.html?spm=2114.12010612.8148356.48.41484ba7Q6bjKs  Shop on aliexpress]

Revision as of 13:22, 7 May 2019

Keyestudio EASY plug ADXL345 Acceleration Module

Introduction

The ADXL345 module is a low power, 3-axis MEMS accelerometer with high resolution (13-bit) and measurement at up to ±16g (gravitational force).
Digital output data is formatted as 16-bit twos complement, and is accessible through either a SPI or I2C digital interface.
The ADXL345 is well suited to measures the static acceleration of gravity in tilt-sensing applications, as well as dynamic acceleration resulting from motion or shock.
Note: this module needs to be used together with EASY plug control board.

Features

  • Connector: Easy plug
  • Working Voltage: 2.0-3.6V
  • Ultra Low Power @2.5v: 40uA /working mode; 0.1uA / standby mode
  • Communication interface: I2C / SPI
  • Tap/Double Tap Detection
  • Free-Fall Detection


Technical Details

  • Dimensions: 41mm*20mm*18mm
  • Weight: 4.6g


Connect It Up

Connect the EASY Plug ADXL345 Acceleration module to control board using an RJ11 cable. Then connect the control board to your PC with a USB cable.
thumb


Upload the Code

Below is an example code. Open or drag below code to Mixly Blocks and upload the code to your board to check the 3-axis acceleration data and the module's tilt information.

thumb


What You Should See

Open the Serial monitor to see the 3-axis acceleration data. See changes as you sway the Accelerometer.
thumb


Little Knowledge:
If you think the monitor’s result is too fast to see the data clearly, you can drag a Delay block to add into the source code. Shown below.
After that, upload the code again and open the monitor, you should be able to see the display data clearly.

thumb



Extension Experiment


Controlling Three LEDs

Hookup Guide
Connect the EASY Plug ADXL345 Acceleration module and three LED modules to control board using RJ11 cables.
thumb


Test Code
Upload the test code below to your board to check the 3-axis acceleration data and the module's tilt information.
thumb


What You Should See

thumb

Upload success, open the serial monitor, it prints out the value of X,Y,Z axis. Each axis controls a light. If the measured value is greater than 200, LED lights up.
thumb

thumb

thumb



Resources

Download the Arduino datasheet:
https://drive.google.com/open?id=1T8nejCErqCIU77e3dA2IvNUA_3VbsHq3

Download the Mixly Code and Datasheet:
https://drive.google.com/open?id=1Oqg067IBgaQSLoRQcvfxpAa6rR1i2HVs



Buy from