#sensor #dht11 #gpio #raspberry-pi #humidity-sensor #temperature-humidity

dht11_gpio

Простое реализация для интерфейса с датчиком dht11 для получения температуры и влажности

1 нестабильное发布

0.1.0 9 янв. 2024

#1041 в Встроенная разработка

25 скачивания в месяц

Лицензия MIT

13KB
171 строки

dht11_gpio

Библиотека Rust для интерфейса с датчиком температуры и влажности DHT11.

crates.io

Подключение

Благодарность за это руководство о том, как правильно подключить датчик - circuitbasics.com

ВАЖНО!

Подключите Vcc (+) к 3.3v Power, НЕ к разъёму питания 5v, потому что сигнал превысит стандартное 3.3v питания входных контактов, используя резистор_PULL_UP.

Pinout DHT11

3 пина

4 пина

note: The resistor is a 10K Ohm pull up resistor` connected between the Vcc and signal lines.

Использование

Установка

Добавьте контейнер в ваш проект

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 правильных данных датчика, если

  1. Несоответствие счёта бит (DHT11Error::MissingData)

    • Описание: Эта ошибка возникает, когда количество полученных бит от датчика DHT11 не соответствует ожидаемым 40 битам (4 байта данных + 1 байт контрольной суммы).
    • Возможные причины: Это может произойти из-за проблем с коммуникацией или неправильного получения данных от датчика.
  2. Неправильная контрольная сумма (DHT11Error::InvalidChecksum)

    • 描述:当计算出的校验和(前4个字节的和)与从DHT11传感器接收到的校验和(最后一个字节)不匹配时,会出现此错误。
    • 可能原因:这表明接收到的数据可能存在损坏或错误。传感器使用校验和来验证传输信息的完整性。

read_sensor_data()的实现并不完美,因为它使用固定的200ms超时来接收传感器的数据,这有时会导致出现MissingData错误。

参考资料

依赖项

约375KB