# bosch-bme690 AI-generated Rust port of the official Bosch BME690 environmental sensor driver. ## About This crate provides a `no_std` Rust driver for the BME690 environmental sensor, based on the [official Bosch C driver](https://github.com/boschsensortec/BME690_SensorAPI). The implementation has been automatically translated and verified to match the floating-point calculation formulas from the original C driver. ## Features - ✅ Temperature measurement (°C) - ✅ Pressure measurement (Pa) - ✅ Relative humidity measurement (%) - ✅ Blocking and async implementations using `embedded-hal` traits - ✅ `no_std` compatible - ✅ Calculation formulas verified against official C driver ## Limitations - Gas resistance measurement not yet implemented - Only forced mode supported (no sequential/parallel modes) - Basic configuration only (1x oversampling) ## Usage ### Blocking ```rust use bosch_bme690::{AsyncBme690, DeviceAddr, Measurement}; use embassy_time::Delay; // Create driver instance let i2c = /* your I2C peripheral */; let delay = Delay; let mut bme = AsyncBme690::new(i2c, delay, DeviceAddr::Primary).await.unwrap(); // Take measurements let data = bme.measure().await; println!("Temperature: {} °C", data.temperature); println!("Pressure: {} Pa", data.pressure); println!("Humidity: {} %", data.humidity); ``` ### Async (embassy-rs) ```rust use bosch_bme690::{AsyncBme690, DeviceAddr}; use embassy_time::Delay; let i2c = /* your async I2C peripheral */; let delay = Delay; let mut bme = AsyncBme690::new(i2c, delay, DeviceAddr::Primary).await.unwrap(); loop { let data = bme.measure().await; // Use measurement data... Timer::after_secs(1).await; } ``` ## I2C Addresses - **Primary (0x76)**: SDO pin connected to GND - use `DeviceAddr::Primary` - **Secondary (0x77)**: SDO pin connected to VDD - use `DeviceAddr::Secondary` ## License BSD-3-Clause (matching the original Bosch driver) ## Acknowledgments This is an AI-generated port of the official Bosch Sensortec BME690 driver. All calculation formulas and calibration logic are derived from the [original C implementation](https://github.com/boschsensortec/BME690_SensorAPI).