
Интернет-магазин «Неглупый Дом»
AM2320 выводит текущую влажность на LCD1602 в реальном времени и включает зуммер, если она выходит за безопасный диапазон — полезно для винного погреба, теплицы или архива с документами.
AM2320 — комбинированный цифровой датчик температуры и влажности с ёмкостным сенсором: чувствительный элемент меняет электрическую ёмкость в зависимости от количества водяного пара в воздухе, которую встроенный контроллер датчика оцифровывает и отдаёт по шине I2C уже готовыми значениями, без необходимости калибровать переводные формулы самостоятельно.
Особенность AM2320 (в отличие от более дешёвого DHT11/DHT22 с однопроводным протоколом) — именно цифровая шина I2C, что удобно, если на той же шине уже висит LCD-дисплей: не нужен отдельный пин под датчик, строки/столбцы можно экономить для других задач.
В проекте задан допустимый диапазон влажности (`minHumidity`/`maxHumidity`), выход за который включает зуммер. Для винного погреба обычно держат 60-70%, для хранения документов и электроники — наоборот, пониженную влажность 30-45%, для теплицы с рассадой — 50-70% в зависимости от культуры.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <AM2320.h>
#include <LiquidCrystal_I2C.h>
AM2320 th;
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес 0x27 — самый частый, у некоторых плат 0x3F
const int buzzerPin = 8; // сигнальный пин активного зуммера
const float minHumidity = 40.0; // нижняя граница нормы, % — подберите под свою задачу
const float maxHumidity = 70.0; // верхняя граница нормы, %
void setup() {
Serial.begin(9600);
Wire.begin();
lcd.init();
lcd.backlight();
pinMode(buzzerPin, OUTPUT);
}
void loop() {
int result = th.measure(); // обновляет и температуру, и влажность за один вызов
if (result != 1) {
// ненулевой код — ошибка чтения (шум на шине, нет контакта); пропускаем цикл
Serial.println("Ошибка чтения AM2320");
delay(2000);
return;
}
float h = th.Humidity;
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(h);
lcd.print("% ");
Serial.print("Влажность: ");
Serial.print(h);
Serial.println(" %");
digitalWrite(buzzerPin, (h < minHumidity || h > maxHumidity) ? HIGH : LOW);
delay(2000); // AM2320 рекомендуется опрашивать не чаще раза в 2 секунды
}
Библиотека AM2320 ставится через Менеджер библиотек. Диапазон `minHumidity`/`maxHumidity` подбирается под задачу — для винного погреба это одни цифры, для теплицы совсем другие.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 491 ₽ 442 ₽ (экономия 49 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.