preliminary UART setup for CO2 sensor

This commit is contained in:
Clara Dautermann 2025-07-20 10:55:49 +02:00
parent 48d8ef95d6
commit fab4ac1af7
Signed by: clara
GPG key ID: 223391B52FAD4463
3 changed files with 32 additions and 0 deletions

7
firmware/Cargo.lock generated
View file

@ -637,6 +637,7 @@ dependencies = [
"esp-idf-svc", "esp-idf-svc",
"esp-idf-sys", "esp-idf-sys",
"log", "log",
"mh-z19",
] ]
[[package]] [[package]]
@ -946,6 +947,12 @@ version = "2.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
[[package]]
name = "mh-z19"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08e20228a4dda61bd521e7316780ba2ec8d88170e4999fbd641c1da98e2eea28"
[[package]] [[package]]
name = "minimal-lexical" name = "minimal-lexical"
version = "0.2.1" version = "0.2.1"

View file

@ -28,6 +28,7 @@ esp-idf-svc = "0.51"
bme280 = "0.5.1" bme280 = "0.5.1"
esp-idf-hal = "0.45.2" esp-idf-hal = "0.45.2"
esp-idf-sys = { version = "0.36.1", features = ["binstart"] } esp-idf-sys = { version = "0.36.1", features = ["binstart"] }
mh-z19 = "0.3.3"
# --- 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"] }

View file

@ -6,8 +6,11 @@ use esp_idf_hal::{
ADC2, ADC2,
}, },
delay::Delay, delay::Delay,
gpio,
i2c::{I2cConfig, I2cDriver, I2cError}, i2c::{I2cConfig, I2cDriver, I2cError},
prelude::Peripherals, prelude::Peripherals,
uart::{config, UartDriver},
units::Hertz,
}; };
struct InitResult<'s, I2C> { struct InitResult<'s, I2C> {
@ -113,6 +116,27 @@ fn init<'a>() -> InitResult<'a, I2cDriver<'a>> {
log::info!("ADC2 channel driver@GPIO4 initialized!"); log::info!("ADC2 channel driver@GPIO4 initialized!");
//set up mh-Z19B CO2 sensor
let tx_pin = peripherals.pins.gpio5;
let rx_pin = peripherals.pins.gpio6;
//obtain UART connection
let uart_config = config::Config::new().baudrate(Hertz(115_200));
let uart = match UartDriver::new(
peripherals.uart1,
tx_pin,
rx_pin,
Option::<gpio::AnyIOPin>::None,
Option::<gpio::AnyIOPin>::None,
&uart_config,
) {
Ok(uart_drv) => uart_drv,
Err(error) => {
log::error!("Error initializing UART connection: {error}.");
panic!();
}
};
InitResult { InitResult {
bme280: bme280, bme280: bme280,
no2_adc: adc_channel_driver, no2_adc: adc_channel_driver,