1 нестабильное发布
0.1.0 | 9 янв. 2024 |
---|
#1041 в Встроенная разработка
25 скачивания в месяц
13KB
171 строки
dht11_gpio
Библиотека Rust для интерфейса с датчиком температуры и влажности DHT11.
Подключение
Благодарность за это руководство о том, как правильно подключить датчик - circuitbasics.com
ВАЖНО!
Подключите Vcc (+)
к 3.3v Power
, НЕ к разъёму питания 5v, потому что сигнал превысит стандартное 3.3v питания входных контактов, используя резистор_PULL_UP.
Pinout DHT11

3 пина

4 пина

Использование
Установка
Добавьте контейнер в ваш проект
cargo add dht11_gpio
или добавьте в Cargo.toml вручную
[dependencies]
dht11_gpio = "0.1.0"
проверьте последнюю версию на crates.io/dht11_gpio
Основное использование
use dht11_gpio::{DHT11Controller, Sensor};
fn main() {
const DHT11_PIN: u8 = 4;
let mut sensor = DHT11Controller::new(DHT11_PIN).unwrap();
let result = sensor.read_sensor_data();
match result {
Ok(data) => {
println!("temperature: {} °C", data.temperature);
println!("humidity: {} %", data.humidity);
}
Err(err) => {
println!("error: {}", err);
}
}
}
note: the sensor returns the temperature in celcius
Возможные ошибки
Метод DHT11Controller::read_sensor_data()
может не успешно retrieving правильных данных датчика, если
-
Несоответствие счёта бит (
DHT11Error::MissingData
)- Описание: Эта ошибка возникает, когда количество полученных бит от датчика DHT11 не соответствует ожидаемым 40 битам (4 байта данных + 1 байт контрольной суммы).
- Возможные причины: Это может произойти из-за проблем с коммуникацией или неправильного получения данных от датчика.
-
Неправильная контрольная сумма (
DHT11Error::InvalidChecksum
)- 描述:当计算出的校验和(前4个字节的和)与从DHT11传感器接收到的校验和(最后一个字节)不匹配时,会出现此错误。
- 可能原因:这表明接收到的数据可能存在损坏或错误。传感器使用校验和来验证传输信息的完整性。
read_sensor_data()
的实现并不完美,因为它使用固定的200ms超时来接收传感器的数据,这有时会导致出现MissingData
错误。
参考资料
- 接线指南 - circuitbasics.com
- DHT11数据手册
- GPIO引脚图
- rppal - 通过Rust与树莓派的GPIO引脚接口的crate
依赖项
约375KB