Оглавление:

Plant Monitor с использованием ESP32 Thing и Blynk: 5 шагов
Plant Monitor с использованием ESP32 Thing и Blynk: 5 шагов

Видео: Plant Monitor с использованием ESP32 Thing и Blynk: 5 шагов

Видео: Plant Monitor с использованием ESP32 Thing и Blynk: 5 шагов
Видео: Plant watering system with new Blynk update 2024, Июнь
Anonim
Plant Monitor с использованием ESP32 Thing и Blynk
Plant Monitor с использованием ESP32 Thing и Blynk
Plant Monitor с использованием ESP32 Thing и Blynk
Plant Monitor с использованием ESP32 Thing и Blynk

Обзор

Цель этого проекта - создать компактное устройство, способное контролировать состояние комнатного растения. Устройство позволяет пользователю проверять уровень влажности почвы, уровень влажности, температуру и комфортную температуру со смартфона с помощью приложения Blynk. Кроме того, пользователь получит уведомление по электронной почте, когда условия станут неподходящими для установки. Например, пользователь получит напоминание о необходимости полить растение, когда уровень влажности почвы упадет ниже подходящего уровня.

Шаг 1. Требования

Требования
Требования
Требования
Требования
Требования
Требования

В этом проекте используется Sparkfun ESP32, датчик DHT22 и электронный датчик влажности почвы для кирпича. Кроме того, требуется сеть Wi-Fi и приложение Blynk. Желательно создать водонепроницаемый корпус, в котором будет находиться ESP32. Хотя в этом примере для источника питания используется стандартная розетка, добавление перезаряжаемой батареи, солнечной панели и контроллера заряда позволило бы устройству получать питание от возобновляемых источников энергии.

Шаг 2: Блинк

Блинк
Блинк
Блинк
Блинк
Блинк
Блинк

Чтобы быть, скачайте приложение Blynk и создайте новый проект. Обратите внимание на токен аутентификации - он будет использован в коде. Создайте новые виджеты отображения в приложении Blynk и выберите соответствующие виртуальные контакты, определенные в коде. Установите интервал обновления для нажатия. Каждому виджету должен быть назначен собственный виртуальный пин.

Шаг 3: IDE Arduino

IDE Arduino
IDE Arduino

Загрузите Arduino IDE. Следуйте инструкциям по загрузке драйвера ESP32 thing и демонстрации, чтобы обеспечить подключение к Wi-Fi. Загрузите библиотеки Blynk и DHT, включенные в код. Введите токен аутентификации, пароль Wi-Fi, имя пользователя Wi-Fi и адрес электронной почты в окончательный код. Используйте демонстрационный код для датчика влажности почвы, чтобы найти минимальные и максимальные значения для типа почвы. Запишите и замените эти значения в окончательном коде. Замените минимальные значения температуры, влажности почвы и влажности для растения в окончательном коде. Загрузите код.

Шаг 4: Создайте это

Построить это
Построить это
Построить это
Построить это
Построить это
Построить это

Сначала подключите датчик влажности почвы к 3,3 В, заземлению и входному контакту 34. Обратите внимание, что встроенный переключатель установлен в положение A, поскольку будет использоваться аналоговая настройка для этого датчика. Затем подключите датчик DHT к 3,3 В, заземлению и входному выводу 27. Датчик DHT22 требует резистора 10 кОм между VCC и выводом вывода данных. Обязательно проверьте схему DHT, чтобы убедиться, что она подключена правильно. Сконфигурируйте ESP32 внутри водонепроницаемого корпуса с датчиком влажности в почве и датчиком DHT над поверхностью. Подключитесь к источнику питания и наслаждайтесь данными об окружающей среде вашего предприятия.

Шаг 5: Код

// Включенные библиотеки

#define BLYNK_PRINT Serial

#include #include #include #include "DHT.h"

// Информация датчика DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Цифровой вывод, подключенный к датчику DHT DHT dht (DHTPIN, DHTTYPE); // Инициализируем датчик DHT.

// определяем входные контакты и выходы

int plot_sensor = 34; // определяем номер пина аналогового входа, подключенного к датчику влажности

int output_value; // определяем как вывод

int Voltagelevel; // определяем как вывод

int уведомлен = 0; // определяем как 0

int timedelay = 60000L; // установить таймер на запуск получения данных раз в минуту или 60 000 миллисекунд

// устанавливаем минимальные значения для растений

int min_moisture = 20; int min_temperature = 75; int min_humidity = 60;

// Вы должны получить токен аутентификации в приложении Blynk.

char auth = "Auth_Token_Here";

// Ваши учетные данные WiFi.

char ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

BlynkTimer timer;

// Эта функция каждую секунду отправляет время работы Arduino на Virtual Pin (5).

// В приложении частота чтения виджета должна быть установлена на PUSH. Это означает, // что вы определяете, как часто отправлять данные в приложение Blynk.

void Sensors () // основная функция для чтения датчиков и нажатия на blynk

{output_value = analogRead (грунт_сенсор); // Считываем аналоговый сигнал от почвы_сенсора и определяем как output_value // Сопоставляем output_vlaue от минимальных, максимальных значений до 100, 0 и ограничиваем между 0, 100 // Используйте образец кода и последовательный монитор, чтобы найти минимальное и максимальные значения для отдельного датчика и типа почвы для лучшей калибровки. Уровень влажности = ограничение (map (output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Считываем влажность float t = dht.readTemperature (); // Считываем температуру в градусах Цельсия (по умолчанию) float f = dht.readTemperature (true); // Считать температуру в градусах Фаренгейта (isFahrenheit = true) // Вычислить тепловой индекс в градусах Фаренгейта (по умолчанию) float hif = dht.computeHeatIndex (f, h); // Проверяем, нет ли сбоев при чтении, и завершаем работу раньше (чтобы повторить попытку). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F («Не удалось прочитать с датчика DHT!»)); возвращение; } // Это подключает значения к виртуальным контактам, определенным в виджетах в приложении Blynk Blynk.virtualWrite (V5, влагалищ); // Отправляет уровень влажности на виртуальный контакт 5 Blynk.virtualWrite (V6, f); // Отправляет температуру в виртуальный pin 6 Blynk.virtualWrite (V7, h); // Отправляем влажность на виртуальный контакт 7 Blynk.virtualWrite (V8, hif); // Отправляем индекс тепла на виртуальный контакт 8

если (уведомление == 0)

{if (влажность <= min_moisture) // Если уровень влажности равен или ниже минимального значения {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Отправить письмо на завод по производству воды} delay (15000); // Электронные письма Blynk должны быть разделены на 15 секунд. Задержка 15000 миллисекунд if (f <= min_temperature) // Если температура равна или ниже минимального значения {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Отправляем электронное письмо о низкой температуре

}

задержка (15000); // Электронные письма Blynk должны быть разделены на 15 секунд. Задержка 15000 миллисекунд if (h <= min_humidity) // Если влажность равна или ниже минимального значения {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Отправляем электронное письмо с уведомлением о низкой влажности} notification = 1; timer.setTimeout (задержка * 5, resetNotified); // умножаем задержку на количество минут между повторением предупреждений по электронной почте}}

void resetNotified () // функция вызывается для сброса частоты рассылки

{уведомление = 0; }

установка void ()

{Serial.begin (9600); // Консоль отладки Blynk.begin (auth, ssid, pass); // подключаемся к blynk timer.setInterval (timedelay, Sensors); // Настраиваем функцию, которая будет вызываться каждую минуту или для которой установлено значение задержки dht.begin (); // запускаем датчик DHT}

// Цикл Void должен содержать только blynk.run и timer

void loop () {Blynk.run (); // Запускаем blynk timer.run (); // Инициирует BlynkTimer}

Рекомендуемые: