1_Rudiron_DHT11.md
Библиотека Rudiron_DHT11
Библиотека Rudiron_DHT11
предназначена для работы с датчиком температуры и влажности DHT11 на платах Rudiron. Она обеспечивает простой интерфейс для чтения данных, обрабатывая сложный однопроводной протокол связи и проверку контрольной суммы.
Содержание
- Описание библиотеки
- Установка
- Зависимости
- Содержимое библиотеки
- Конструктор
- Методы
- Примеры использования
- ReadHumidity.ino
- ReadTemperature.ino
- ReadTemperatureAndHumidity.ino
- Проблемы и решения
Описание библиотеки
Rudiron_DHT11
позволяет легко считывать температуру (в °C) и влажность (в %) с датчика DHT11. Библиотека управляет низкоуровневой связью, включая отправку стартового сигнала, чтение 40-битных данных и проверку их целостности. Она подходит для проектов, требующих мониторинга окружающей среды, таких как метеостанции, системы управления климатом или умный дом.
Особенности:
- Простота использования - настройка пина и чтение данных в несколько строк кода.
- Надёжность - проверка контрольной суммы исключает некорректные данные.
- Совместимость - работает на всех платформах, поддерживаемых Arduino.
- Лёгкость - минимальное потребление памяти.
Версия: 1.0.0
Установка
- Скачайте библиотеку:
- Клонируйте репозиторий Rudiron Libraries или скачайте ZIP-файл из раздела релизов.
- Установите в Arduino IDE:
- Откройте Arduino IDE.
- Перейдите в Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку и выберите ZIP-файл.
- Библиотека появится в меню Скет -> Подключить библиотеку -> Rudiron_DHT11.
- Проверьте установку:
- Убедитесь, что примеры библиотеки доступны в Файл -> Примеры -> Rudiron_DHT11.
Зависимости
- Arduino Framework: Библиотека использует стандартные функции Arduino (
pinMode
,digitalWrite
,micros
и т.д.). - Аппаратные требования: Датчик DHT11, подключённый к цифровому пину. Может потребоваться подтягивающий резистор 4.7–10 кОм между пином данных и VCC.
Содержимое библиотеки
Библиотека предоставляет класс Rudiron_DHT11
с конструктором и четырьмя публичными методами для работы с датчиком.
Конструктор
Rudiron_DHT11()
-
Описание: Создаёт объект для работы с датчиком DHT11.
-
Особенности:
- Инициализирует внутренний массив данных нулями, чтобы избежать неопределённых значений.
- Не требует параметров; пин настраивается позже через
attach()
.
-
Пример:
Rudiron_DHT11 dht;
Методы
-
void attach(uint8_t pin)
-
Описание: Задаёт цифровой пин для связи с датчиком.
-
Параметры:
pin
- номер цифрового пина (например,2
). -
Особенности:
- Пин должен поддерживать вход и выход (большинство цифровых пинов).
- Не выполняет проверку на корректность пина, так как это зависит от аппаратной платформы.
-
Пример:
dht.attach(2); // Подключение к пину 2
-
-
bool read()
-
Описание: Считывает данные с датчика DHT11, выполняя полный цикл протокола связи.
-
Возвращает:
true
при успешном чтении и проверке данных,false
при ошибке (таймаут, сбой контрольной суммы). -
Особенности:
- Отправляет стартовый сигнал (18 мс низкий, 20–40 мкс высокий).
- Считывает 40 бит (5 байт): влажность (2 байта), температура (2 байта), контрольная сумма (1 байт).
- Проверяет контрольную сумму для обеспечения целостности данных.
- Таймауты (100 мкс) предотвращают зависание при отсутствии ответа датчика.
-
Пример:
if (dht.read()) { // Данные успешно считаны }
-
-
float getHumidity() const
-
Описание: Возвращает значение влажности из последнего успешного чтения.
-
Возвращает: Влажность в процентах как число с плавающей точкой (например,
45.0
). -
Особенности:
- Объединяет целую (
_data[0]
) и дробную (_data[1]
) части влажности. - Для DHT11 дробная часть всегда 0, но метод возвращает
float
для совместимости с другими датчиками. - Не вызывает чтение датчика; используйте
read()
перед вызовом.
- Объединяет целую (
-
Пример:
float humidity = dht.getHumidity(); // Например, 45.0
-
-
float getTemperature() const
-
Описание: Возвращает значение температуры из последнего успешного чтения.
-
Возвращает: Температура в градусах Цельсия как число с плавающей точкой (например,
23.0
). -
Особенности:
- Объединяет целую (
_data[2]
) и дробную (_data[3]
) части температуры. - Как и в
getHumidity()
, дробная часть для DHT11 равна 0. - Требует предварительного вызова
read()
.
- Объединяет целую (
-
Пример:
float temperature = dht.getTemperature(); // Например, 23.0
-
Примеры использования
Библиотека включает три примера скетчей в папке examples
, демонстрирующих базовое использование. Все примеры используют пин 2 для подключения DHT11 и выводят данные в Serial Monitor (9600 бод).
ReadHumidity.ino
-
Описание: Считывает влажность с датчика каждые 2 секунды и выводит её в Serial Monitor.
-
Код:
#include "Rudiron_DHT11.h" Rudiron_DHT11 dht; void setup() { Serial.begin(9600); while (!Serial); dht.attach(2); Serial.println("Чтение влажности с DHT11..."); } void loop() { if (dht.read()) { Serial.print("Влажность: "); Serial.print(dht.getHumidity(), 1); Serial.println(" %"); } else { Serial.println("Ошибка чтения данных с DHT11!"); } delay(2000); }
-
Особенности:
- Показывает, как использовать
read()
иgetHumidity()
. - Выводит влажность с одним знаком после запятой для компактности.
- Интервал 2 секунды соответствует минимальной частоте опроса DHT11.
- Показывает, как использовать
-
Применение: Мониторинг влажности в теплицах, складах или жилых помещениях.
ReadTemperature.ino
- Описание: Считывает температуру каждые 2 секунды и выводит её в Serial Monitor.
- Код: Аналогичен
ReadHumidity.ino
, но используетgetTemperature()
и выводит температуру в °C. - Особенности:
- Демонстрирует работу с температурой.
- Формат вывода удобен для чтения (например, “Температура: 23.0 °C”).
- Простая структура, подходящая для начинающих.
- Применение: Температурный контроль в метеостанциях или системах умного дома.
ReadTemperatureAndHumidity.ino
-
Описание: Считывает и отображает одновременно температуру и влажность каждые 2 секунды.
-
Код:
#include "Rudiron_DHT11.h" Rudiron_DHT11 dht; void setup() { Serial.begin(9600); while (!Serial); dht.attach(2); Serial.println("Чтение температуры и влажности с DHT11..."); } void loop() { if (dht.read()) { Serial.print("Влажность: "); Serial.print(dht.getHumidity(), 1); Serial.print(" %\t"); Serial.print("Температура: "); Serial.print(dht.getTemperature(), 1); Serial.println(" °C"); } else { Serial.println("Ошибка чтения данных с DHT11!"); } delay(2000); }
-
Особенности:
- Комбинирует вызовы
getHumidity()
иgetTemperature()
в одном цикле. - Выводит данные в одной строке с табуляцией для удобства чтения.
- Полезен для приложений, требующих оба параметра.
- Комбинирует вызовы
-
Применение: Комплексный мониторинг окружающей среды (например, в климат-контроле).
Инструкции для примеров:
- Подключите пин данных DHT11 к пину 2.
- Загрузите скетч через Arduino IDE.
- Откройте Serial Monitor (Ctrl+Shift+M, 9600 бод).
- Наблюдайте за показаниями или сообщениями об ошибках.
Проблемы и решения
Проблемы и решения: GitFlic Проблемы.
Последнее обновление: 1 апреля 2025
- Страницы
- 1_Rudiron_DHT11
- 2_Rudiron_DS1302
- home