Съдържание:

Монитор на растенията, използващ ESP32 Thing and Blynk: 5 стъпки
Монитор на растенията, използващ ESP32 Thing and Blynk: 5 стъпки

Видео: Монитор на растенията, използващ ESP32 Thing and Blynk: 5 стъпки

Видео: Монитор на растенията, използващ ESP32 Thing and Blynk: 5 стъпки
Видео: System that Notifies You When To Water Plants DIY ESP8266 Blynk 2024, Юни
Anonim
Монитор на растенията, използващ ESP32 Thing и Blynk
Монитор на растенията, използващ ESP32 Thing и Blynk
Монитор на растенията, използващ ESP32 Thing и Blynk
Монитор на растенията, използващ ESP32 Thing и Blynk

Общ преглед

Целта на този проект е да се създаде компактно устройство, способно да следи условията на стайно растение. Устройството дава възможност на потребителя да проверява нивото на влажност на почвата, нивото на влажност, температурата и температурата на „усещане“от смартфон с помощта на приложението Blynk. Освен това потребителят ще получи предупреждение по имейл, когато условията станат неподходящи за централата. Например, потребителят ще получи напомняне да полива растението, когато нивата на влажност в почвата спаднат под подходящо ниво.

Стъпка 1: Изисквания

Изисквания
Изисквания
Изисквания
Изисквания
Изисквания
Изисквания

Този проект използва нещо Sparkfun ESP32, сензор DHT22 и сензор за влажност на електронна тухлена почва. Освен това са необходими wifi мрежа и приложението Blynk. За предпочитане е да се създаде водоустойчив корпус, който да съдържа ESP32. Въпреки че този пример използва стандартен контакт за източник на захранване, добавянето на акумулаторна батерия, слънчев панел и контролер за зареждане би позволило устройството да се захранва чрез възобновяема енергия.

Стъпка 2: Blynk

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

Изтеглете приложението Blynk и създайте нов проект. Обърнете внимание на маркера за удостоверяване-той ще се използва в кода. Създайте нови визуални приспособления в приложението Blynk и изберете съответните виртуални щифтове, определени в кода. Задайте интервала на опресняване за натискане. Всяка джаджа трябва да получи свой собствен виртуален щифт.

Стъпка 3: Arduino IDE

Arduino IDE
Arduino IDE

Изтеглете Arduino IDE. Следвайте инструкциите за изтегляне на драйвера за ESP32 и демото, за да осигурите wifi връзка. Изтеглете библиотеките Blynk и DHT, включени в кода. Попълнете маркера за удостоверяване, паролата за wifi, потребителското име за wifi и имейла в крайния код. Използвайте демонстрационния код за сензора за влажност на почвата, за да намерите минималните и максималните стойности за типа на почвата. Запишете и заменете тези стойности в крайния код. Заменете минималните стойности за температурата, влажността на почвата и влажността на растението в крайния код. Качете кода.

Стъпка 4: Изградете го

Изградете го
Изградете го
Изградете го
Изградете го
Изградете го
Изградете го

Първо, свържете сензора за влажност на почвата към 3.3V, земята и входния щифт 34. Обърнете внимание, че интегралът на превключвателя е настроен на A, защото ще се използва аналоговата настройка за този сензор. След това свържете DHT сензора към 3.3V, заземяване и входен щифт 27. Сензорът DHT22 изисква 10K Ohm резистор между VCC и изхода за извеждане на данни. Не забравяйте да проверите диаграмата на DHT, за да се уверите, че е свързана правилно. Конфигурирайте ESP32 във водоустойчив корпус със сензор за влага в почвата и DHT сензор над повърхността. Свържете се към източник на захранване и се насладете на данни за околната среда на вашето предприятие.

Стъпка 5: Код

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

#define BLYNK_PRINT Сериен

#включи #включи #включи #включи "DHT.h"

// Информация за DHT сензора

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

// дефинираме входните щифтове и изходи

int почвен_сензор = 34; // дефинираме номера на пина на аналоговия вход, свързан към сензора за влага

int output_value; // дефинира като изход

int ниво на влага; // дефинира като изход

int нотифициран = 0; // дефинираме нотифицирано като 0

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

// задайте минимални стойности за растението

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

// Трябва да получите Auth Token в приложението Blynk.

char auth = "Auth_Token_Here";

// Вашите идентификационни данни за WiFi.

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

Таймер BlynkTimer;

// Тази функция изпраща времето за работа на Arduino всяка секунда до Virtual Pin (5).

// В приложението честотата на четене на Widget трябва да бъде зададена на PUSH. Това означава, че // вие определяте колко често да се изпращат данни към приложението Blynk.

void Sensors () // основна функция за четене на сензори и натискане към blynk

{output_value = analogRead (ground_sensor); // Чете аналогов сигнал от почвен_сензор и дефинира като output_value // Карта на output_vlaue от min, max стойности до 100, 0 и ограничаване между 0, 100 // Използвайте примерен код и сериен монитор, за да намерите min и макс. стойности за отделен сензор и тип почва за по -добро калибриране на нивото на влажност = ограничение (карта (изходна стойност, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Четене на поплавък за влажност t = dht.readTemperature (); // Четене на температурата като Celsius (по подразбиране) float f = dht.readTemperature (true); // Четене на температурата като Фаренхайт (isFahrenheit = true) // Изчисляване на топлинния индекс във Фаренхайт (по подразбиране) float hif = dht.computeHeatIndex (f, h); // Проверете дали четенето е неуспешно и излезте рано (за да опитате отново). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Неуспешно четене от DHT сензор!")); връщане; } // Това свързва vales към виртуални щифтове, дефинирани в приспособленията в приложението Blynk. Blynk.virtualWrite (V5, ниво на влажност); // Изпращане на нивото на влага към виртуален щифт 5 Blynk.virtualWrite (V6, f); // Изпращане на температурата към виртуалния пин 6 Blynk.virtualWrite (V7, h); // Изпращане на влажност на виртуален пин 7 Blynk.virtualWrite (V8, hif); // Изпращане на топлинен индекс на виртуален щифт 8

ако (уведомен == 0)

{if (ниво на влага <= min_moisture) // Ако нивото на влажност е равно или под минималната стойност {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Изпращане на имейл до инсталация за вода} забавяне (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!"); // Изпращане на имейл, че влажността е ниска} известие = 1; timer.setTimeout (timedelay *5, resetNotified); // многократно закъснение по време на желаните минути между повтарящи се предупредителни имейли}}

void resetNotified () // функция, извикана за нулиране на честотата на имейлите

{notified = 0; }

void setup ()

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

// Празният цикъл трябва да съдържа само blynk.run и таймер

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

Препоръчано: