

The Fermion Motion Sensor, manufactured by DFRobot (Part ID: 10 DOF), is a highly sensitive device designed to detect motion by measuring changes in the position of fermionic particles. This advanced sensor is ideal for applications requiring precise motion detection, such as security systems, robotics, industrial automation, and smart home devices. Its compact design and high accuracy make it a versatile choice for both hobbyists and professionals.








The Fermion Motion Sensor is equipped with advanced sensing technology to ensure reliable performance. Below are the key technical details:
| Parameter | Value |
|---|---|
| Manufacturer | DFRobot |
| Part ID | 10 DOF |
| Operating Voltage | 3.3V - 5V |
| Operating Current | < 10 mA |
| Communication Protocol | I2C, SPI |
| Measurement Range | ±16g (acceleration) |
| Gyroscope Range | ±2000°/s |
| Magnetometer Range | ±8 Gauss |
| Operating Temperature | -40°C to 85°C |
| Dimensions | 20mm x 20mm x 3mm |
The Fermion Motion Sensor features a standard pinout for easy integration into circuits. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.3V - 5V) |
| GND | Ground |
| SDA | I2C data line |
| SCL | I2C clock line |
| CS | Chip select for SPI communication |
| MOSI | Master Out Slave In (SPI data input) |
| MISO | Master In Slave Out (SPI data output) |
| SCK | SPI clock line |
| INT | Interrupt pin for motion detection |
The Fermion Motion Sensor can be easily integrated into a variety of projects. Below are the steps and best practices for using the sensor:
Below is an example of how to use the Fermion Motion Sensor with an Arduino UNO via the I2C interface:
#include <Wire.h>
// Define the I2C address of the Fermion Motion Sensor
#define SENSOR_ADDR 0x68
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
// Initialize the sensor
Wire.beginTransmission(SENSOR_ADDR);
Wire.write(0x6B); // Access the power management register
Wire.write(0x00); // Wake up the sensor
Wire.endTransmission();
Serial.println("Fermion Motion Sensor Initialized");
}
void loop() {
Wire.beginTransmission(SENSOR_ADDR);
Wire.write(0x3B); // Start reading acceleration data
Wire.endTransmission(false);
Wire.requestFrom(SENSOR_ADDR, 6); // Request 6 bytes of data
if (Wire.available() == 6) {
int16_t accelX = (Wire.read() << 8) | Wire.read();
int16_t accelY = (Wire.read() << 8) | Wire.read();
int16_t accelZ = (Wire.read() << 8) | Wire.read();
// Print acceleration data to the serial monitor
Serial.print("Accel X: ");
Serial.print(accelX);
Serial.print(" | Accel Y: ");
Serial.print(accelY);
Serial.print(" | Accel Z: ");
Serial.println(accelZ);
}
delay(500); // Wait for 500ms before the next reading
}
No Data from the Sensor:
Inaccurate Readings:
Interrupt Pin Not Working:
Q: Can the Fermion Motion Sensor be used with 3.3V microcontrollers?
A: Yes, the sensor supports both 3.3V and 5V logic levels, making it compatible with a wide range of microcontrollers.
Q: How do I switch between I2C and SPI communication?
A: The communication mode is determined by the connections. For I2C, connect SDA and SCL. For SPI, connect CS, MOSI, MISO, and SCK.
Q: Is the sensor suitable for outdoor use?
A: The sensor can operate in a wide temperature range (-40°C to 85°C), but it is not waterproof. Use appropriate enclosures for outdoor applications.
By following this documentation, you can effectively integrate and utilize the Fermion Motion Sensor in your projects.