measure pressure and temp!
This commit is contained in:
parent
c3768283d3
commit
ff2a2e2440
3 changed files with 155 additions and 6 deletions
84
firmware/Cargo.lock
generated
84
firmware/Cargo.lock
generated
|
|
@ -94,6 +94,16 @@ version = "2.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
|
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bme280"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "169ac81b9123f316fde5b0e00175294dcdcdd800c1a6c92a4b58caf42a14cf1f"
|
||||||
|
dependencies = [
|
||||||
|
"embedded-hal 1.0.0",
|
||||||
|
"maybe-async-cfg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bstr"
|
name = "bstr"
|
||||||
version = "1.12.0"
|
version = "1.12.0"
|
||||||
|
|
@ -621,8 +631,11 @@ dependencies = [
|
||||||
name = "firmware"
|
name = "firmware"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"bme280",
|
||||||
"embuild",
|
"embuild",
|
||||||
|
"esp-idf-hal",
|
||||||
"esp-idf-svc",
|
"esp-idf-svc",
|
||||||
|
"esp-idf-sys",
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -890,6 +903,43 @@ version = "0.4.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
|
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "manyhow"
|
||||||
|
version = "0.11.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587"
|
||||||
|
dependencies = [
|
||||||
|
"manyhow-macros",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
"syn 2.0.104",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "manyhow-macros"
|
||||||
|
version = "0.11.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-utils",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maybe-async-cfg"
|
||||||
|
version = "0.2.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8dbfaa67a76e2623580df07d6bb5e7956c0a4bae4b418314083a9c619bd66627"
|
||||||
|
dependencies = [
|
||||||
|
"manyhow",
|
||||||
|
"proc-macro2",
|
||||||
|
"pulldown-cmark",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.5"
|
version = "2.7.5"
|
||||||
|
|
@ -1038,6 +1088,17 @@ dependencies = [
|
||||||
"syn 2.0.104",
|
"syn 2.0.104",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-utils"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"smallvec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.95"
|
version = "1.0.95"
|
||||||
|
|
@ -1047,6 +1108,17 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pulldown-cmark"
|
||||||
|
version = "0.11.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "679341d22c78c6c649893cbd6c3278dcbe9fc4faa62fea3a9296ae2b50c14625"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.9.1",
|
||||||
|
"memchr",
|
||||||
|
"unicase",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.40"
|
version = "1.0.40"
|
||||||
|
|
@ -1214,6 +1286,12 @@ version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smallvec"
|
||||||
|
version = "1.15.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
|
|
@ -1365,6 +1443,12 @@ dependencies = [
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicase"
|
||||||
|
version = "2.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@ experimental = ["esp-idf-svc/experimental"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
esp-idf-svc = "0.51"
|
esp-idf-svc = "0.51"
|
||||||
|
bme280 = "0.5.1"
|
||||||
|
esp-idf-hal = "0.45.2"
|
||||||
|
esp-idf-sys = { version = "0.36.1", features = ["binstart"] }
|
||||||
|
|
||||||
# --- Optional Embassy Integration ---
|
# --- Optional Embassy Integration ---
|
||||||
# esp-idf-svc = { version = "0.51", features = ["critical-section", "embassy-time-driver", "embassy-sync"] }
|
# esp-idf-svc = { version = "0.51", features = ["critical-section", "embassy-time-driver", "embassy-sync"] }
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,72 @@
|
||||||
|
use bme280::i2c::BME280;
|
||||||
|
use esp_idf_hal::{
|
||||||
|
delay::Delay,
|
||||||
|
i2c::{I2cConfig, I2cDriver},
|
||||||
|
prelude::Peripherals,
|
||||||
|
};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// It is necessary to call this function once. Otherwise some patches to the runtime
|
//set up logger
|
||||||
// implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71
|
esp_idf_sys::link_patches(); // Important!
|
||||||
esp_idf_svc::sys::link_patches();
|
|
||||||
|
|
||||||
// Bind the log crate to the ESP Logging facilities
|
|
||||||
esp_idf_svc::log::EspLogger::initialize_default();
|
esp_idf_svc::log::EspLogger::initialize_default();
|
||||||
|
log::info!("Meow :3");
|
||||||
|
|
||||||
log::info!("Hello, world!");
|
// Initialize peripherals
|
||||||
|
let peripherals = Peripherals::take().unwrap();
|
||||||
|
|
||||||
|
// Define SCL and SDA pins
|
||||||
|
let sda = peripherals.pins.gpio21;
|
||||||
|
let scl = peripherals.pins.gpio22;
|
||||||
|
|
||||||
|
// Create I2C config
|
||||||
|
let config = I2cConfig::new().baudrate(100000.into());
|
||||||
|
|
||||||
|
log::info!("Initializing I2C bus…");
|
||||||
|
|
||||||
|
// Initialize I2C driver
|
||||||
|
let i2c_bus = match I2cDriver::new(
|
||||||
|
peripherals.i2c0, // or i2c1/i2c2 based on board
|
||||||
|
sda,
|
||||||
|
scl,
|
||||||
|
&config,
|
||||||
|
) {
|
||||||
|
Ok(i2c_connection) => i2c_connection,
|
||||||
|
Err(err) => {
|
||||||
|
log::error!("Initializing I2C connection failed with {err}!");
|
||||||
|
panic!()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
log::info!("I2C up!");
|
||||||
|
log::info!("Initializing bme280…");
|
||||||
|
|
||||||
|
let mut bme280 = BME280::new_primary(i2c_bus);
|
||||||
|
|
||||||
|
//initialize Sensor
|
||||||
|
match bme280.init(&mut Delay::new(100000)) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(err) => {
|
||||||
|
log::error!("Error initializing bme280 sensor:");
|
||||||
|
match err {
|
||||||
|
bme280::Error::CompensationFailed => log::error!("Failed to compensate a raw measurement"),
|
||||||
|
bme280::Error::Bus(buserr) => log::error!("Bus error: {}", buserr),
|
||||||
|
bme280::Error::InvalidData => log::error!("Failed to pare sensor data!"),
|
||||||
|
bme280::Error::NoCalibrationData => log::error!("No calibration data is available (probably forgot to call or check BME280::init for failure)"),
|
||||||
|
bme280::Error::UnsupportedChip => log::error!("Chip ID doesn't match expected value"),
|
||||||
|
bme280::Error::Delay => log::error!("Delay error"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log::info!("BME280 up!");
|
||||||
|
|
||||||
|
loop {
|
||||||
|
let measurement = bme280.measure(&mut Delay::new_default()).unwrap();
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"1:temperature:{0}°C, pressure:{1}",
|
||||||
|
measurement.temperature, measurement.pressure
|
||||||
|
);
|
||||||
|
|
||||||
|
Delay::default().delay_ms(1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue