Skip to content

QMC5883P magnetic sensor driver

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

KapJ1coH/qmc5883p

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qmc5883p

An asynchronous driver for the QMC5883P 3-Axis Magnetic Sensor using I2C. This driver is designed for no_std environments and uses embedded-hal-async for non-blocking I2C communication.

Features

  • Asynchronous Interface: Built for async/await using embedded-hal-async trait.
  • Platform-Agnostic: Compatible with any microcontroller that implements the embedded-hal-async I2C traits.
  • no_std: No need for the standard library.
  • Configurable Settings: Full control over operating modes, output data rates, measurement ranges, and oversampling ratios using a builder pattern.
  • Self-Test Support: Includes a built-in self-test procedure to verify hardware functionality.
  • Magnitude Calculation: Helper methods to read raw X, Y, Z data or calculate the total magnetic field magnitude.
  • Optional Logging: Integrated with defmt for efficient logging in embedded environments.

Installation

Add this to your Cargo.toml:

[dependencies]
qmc5883p = "0.1.0"

Usage

Basic Configuration

use qmc5883p::{Range, Mode, Qmc5883PConfig, OutputDataRate, OverSampleRate, OverSampleRatio1};

// Create a custom configuration
let config = Qmc5883PConfig::default()
    .with_mode(Mode::Continuous)
    .with_odr(OutputDataRate::Hz100)
    .with_range(Range::Gauss8)
    .with_osr1(OverSampleRatio1::Ratio4)
    .with_osr2(OverSampleRate::Rate4);

Driver Initialization

use qmc5883p::Qmc5883p;
// Initialize the sensor with your I2C peripheral
let mut sensor = Qmc5883p::new(i2c);
sensor.init(config).await?;

// Read magnetic field data
let [x, y, z] = sensor.read_x_y_z().await?;
let magnitude = sensor.read_magnitude().await?;

Look into tests for more usage examples.

Supported Hardware

This driver is specifically for the QMC5883P magnetic sensor. It verifies the chip ID (expected 0x80) during initialization.

License

This project is licensed under either of:

About

QMC5883P magnetic sensor driver

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages