Introduction
This module integrates high-precision gyroscopes, accelerometer, microprocessor of high-performance and advanced dynamics solves and Kalman filter algorithms that aim to quickly solve the current real-time movement of the module attitude. The use of advanced digital filtering technology can effectively reduce measurement noise and improve accuracy.
The module comes with built-in gesture solver that can get accurate attitude in dynamic environment combining with dynamic Kalman filter algorithm. Its static measurement accuracy is up to 0.05 degree(dynamic 0.1) with high stability, which could bring better performance even than some professional Inclinometers!
There is a voltage stabilizer circuit inside the module. The product should be operated at 3.3-5V and its pin level is compatible with 3.3/5V embedded systems. It employs TTL interface for connection.
Specification
- Voltage: 3.3V~5V
- Current: <40mA
- Size: 51.33610mm
- Measuring Dimension: acceleration: 3D; angular velocity: 3D; attitude angle: 3D
- Range: acceleration: ±2/4/8/16g(optional); angular velocity: ±250/500/1000/2000 °/s(Optional), attitude angle: ±180°
Tutorial
Requirements
- Hardware
- DFRduino UNO R3 (or similar) x 1
- Serial 6-Axis Accelerometer x1
- Software
- Arduino IDE
- Download and install the DFRobot_WT61PC Library (About how to install the library?)
Connection
WT61PC | Arduino UNO |
---|---|
VCC | 5V/3V |
RXD | D11 |
TXD | D10 |
GND | GND |
Sample Code
/*!
* @file getData.ino
* @brief Set the frequency of data output by the sensor, read the acceleration,
* @n angular velocity, and angle of X, Y, and Z axes.
* @n Experimental phenomenon: when the sensor starts, it outputs data at the set
* @n frequency and the data will be displayed on serial monitor.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [huyujie](yujie.hu@dfrobot.com)
* @version V1.0
* @date 2023-07-12
* @url https://github.com/DFRobot/DFRobot_WT61PC
*/
#include <DFRobot_WT61PC.h>
#if (defined(ARDUINO_AVR_UNO) || defined(ESP8266)) // Using a soft serial port
#include <SoftwareSerial.h>
SoftwareSerial softSerial(/*rx =*/10, /*tx =*/11);
#define FPSerial softSerial
#else
#define FPSerial Serial1
#endif
DFRobot_WT61PC sensor(&FPSerial);
void setup()
{
//Use Serial as debugging serial port
Serial.begin(115200);
#if (defined ESP32)
FPSerial.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
FPSerial.begin(9600);
#endif
/**
* @brief Revise the data output frequncy of sensor
* @param frequency - FREQUENCY_0_1HZ for 0.1Hz, FREQUENCY_0_5HZ for 0.5Hz, FREQUENCY_1HZ for 1Hz,
* @n FREQUENCY_2HZ for 2Hz, FREQUENCY_5HZ for 5Hz, FREQUENCY_10HZ for 10Hz,
* @n FREQUENCY_20HZ for 20Hz, FREQUENCY_50HZ for 50Hz, FREQUENCY_100HZ for 100Hz,
* @n FREQUENCY_125HZ for 125Hz, FREQUENCY_200HZ for 200Hz.
*/
sensor.modifyFrequency(FREQUENCY_10HZ);
}
void loop()
{
if (sensor.available()) {
Serial.print("Acc\t"); Serial.print(sensor.Acc.X); Serial.print("\t");
Serial.print(sensor.Acc.Y); Serial.print("\t"); Serial.println(sensor.Acc.Z); //acceleration information of X,Y,Z
Serial.print("Gyro\t"); Serial.print(sensor.Gyro.X); Serial.print("\t");
Serial.print(sensor.Gyro.Y); Serial.print("\t"); Serial.println(sensor.Gyro.Z); //angular velocity information of X,Y,Z
Serial.print("Angle\t"); Serial.print(sensor.Angle.X); Serial.print("\t");
Serial.print(sensor.Angle.Y); Serial.print("\t"); Serial.println(sensor.Angle.Z); //angle information of X, Y, Z
Serial.println();
}
}
Expected Results
FAQ
For any questions, advice or cool ideas to share, please visit the DFRobot Forum.