Мазмуну:

ESP32 Thing and Blynk колдонуп өсүмдүк монитору: 5 кадам
ESP32 Thing and Blynk колдонуп өсүмдүк монитору: 5 кадам

Video: ESP32 Thing and Blynk колдонуп өсүмдүк монитору: 5 кадам

Video: ESP32 Thing and Blynk колдонуп өсүмдүк монитору: 5 кадам
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 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
Blynk
Blynk
Blynk

Болуу үчүн, Blynk тиркемесин жүктөп алып, жаңы долбоор түзүңүз. Аутентификация жетонуна көңүл буруңуз-ал коддо колдонулат. Blynk колдонмосунда жаңы дисплей виджеттерин түзүңүз жана коддо аныкталган виртуалдык төөнөгүчтөрдү тандаңыз. Түртүү үчүн жаңыртуу аралыгын коюңуз. Ар бир виджетке өзүнүн виртуалдык пин бекитилиши керек.

3 -кадам: Arduino IDE

Arduino IDE
Arduino IDE

Arduino IDE жүктөп алыңыз. Wifi байланышын камсыз кылуу үчүн ESP32 нерсе драйвери жана демо үчүн жүктөө нускамаларын аткарыңыз. Кодго киргизилген Blynk жана DHT китепканаларын жүктөп алыңыз. Аутентификация токенин, wifi сырсөзүн, wifi колдонуучу атын жана электрондук почтаны акыркы кодго толтуруңуз. Топурактын ным сенсорунун демо кодун колдонуп, топурактын түрү үчүн минималдуу жана максималдуу маанилерди табыңыз. Жазыңыз жана бул коддорду акыркы кодго алмаштырыңыз. Акыркы коддогу өсүмдүк үчүн температуранын, топурактын нымдуулугунун жана нымдуулугунун минималдуу маанилерин алмаштырыңыз. Кодду жүктөңүз.

4 -кадам: Аны куруңуз

Аны куруңуз
Аны куруңуз
Аны куруңуз
Аны куруңуз
Аны куруңуз
Аны куруңуз

Биринчиден, топурактын ным сенсорун 3.3V, жерге жана кирүүчү пинге 34 туташтырыңыз. Эскертүү, бул ажыраткыч Ага коюлган, анткени бул сенсорго аналогдук жөндөө колдонулат. Андан кийин, DHT сенсорун 3.3V, жерге жана киргизүү пинине 27 туташтырыңыз. DHT22 сенсору VCC менен берилүүчү пиндин ортосунда 10K Ohm каршылыгын талап кылат. DHT диаграммасын текшерүүнү унутпаңыз, ал туура зымдалган. ESP32 суу өткөрбөй турган корпустун ичиндеги нымдуулук сенсорун жана DHT сенсорун жердин үстүнөн конфигурациялаңыз. Кубат булагына туташыңыз жана өсүмдүгүңүздүн айлана -чөйрөсү тууралуу маалыматтан ырахат алыңыз.

5 -кадам: Код

// Камтылган китепканалар

#аныктоо BLYNK_PRINT Сериал

#кошуу #кошуу #кошуу #кошуу "DHT.h"

// DHT сенсорунун маалыматы

#Define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #Define DHTPIN 27 // DHT сенсоруна DHT dht (DHTPIN, DHTTYPE) туташкан санариптик пин; // DHT сенсорун баштоо.

// киргизүү казыктарын жана жыйынтыктарын аныктоо

int tuproq_sensor = 34; // ным сенсоруна туташкан аналогдук кирүү пин номерин аныктаңыз

int output_value; // чыгаруу катары аныктоо

int moistlevel; // чыгаруу катары аныктоо

int notified = 0; // билдирилгенди 0 деп аныктаңыз

int timedelay = 60000L; // таймерди иштетүү үчүн, маалыматты мүнөтүнө бир жолу же 60 000 милисекундта алуу

// өсүмдүк үчүн минималдуу маанини коюңуз

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

// Сиз Alyt Токенин Blynk колдонмосунан алышыңыз керек.

char auth = "Auth_Token_Here";

// Сиздин WiFi грамоталары.

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

BlynkTimer таймери;

// Бул функция Ардуинонун иштөө убактысын секунда сайын Virtual Pinге (5) жөнөтөт.

// Колдонмодо Виджеттин окуу жыштыгы PUSH деп коюлушу керек. Бул // Blynk колдонмосуна маалыматтарды канчалык тез -тез жөнөтүү керек экенин аныктайт дегенди билдирет.

void Sensors () // сенсорлорду окуу жана blynkке түрткү берүүчү негизги функция

{output_value = analogRead (tuproq_sensor); // tuproq_sensordan аналогдук сигналды окуп, output_value катары аныктаңыз // output_vlaue картасын мин, максималдуу баалуулуктарды 100, 0го чейин чектеп, 0 менен 100дүн ортосуна чектөө коюңуз. жекече сенсор жана топурактын түрү үчүн максималдуу баалуулуктар нымдуулуктун деңгээли = чектөө (карта (output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Окуу нымдуулук float t = dht.readTemperature (); // Окуу температурасы Цельсий (демейки) float f = dht.readTemperature (true); // Температураны Фаренгейт катары окуу (isFahrenheit = true) // Фаренгейт боюнча жылуулук индексин эсептөө (демейки) hif = dht.computeHeatIndex (f, h); // Окуулар ишке ашпай калганын текшериңиз жана эрте чыгып кетиңиз (кайра аракет кылуу үчүн). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("DHT сенсорунан окулбай калды!")); кайтуу; } // Бул Vlynk Blynk тиркемесиндеги виджеттерде аныкталган виртуалдык казыктарга туташтырат Blynk.virtualWrite (V5, moistlevel); // 5 нымдуулукту виртуалдык пинге Blynk.virtualWrite (V6, f) жөнөтүү; // температураны виртуалдыкка жөнөтүү pin 6 Blynk.virtualWrite (V7, h); // Нымдуулукту виртуалдык 7 пинге жөнөтүү Blynk.virtualWrite (V8, hif); // Жылуулук индексин виртуалдык 8 -пинге жөнөтүү

эгер (кабарланган == 0)

{if (moistlevel <= min_moisture) // Эгерде нымдуулук деңгээли мин мааниге барабар же төмөн болсо {Blynk.email ("Email_Here", "Өсүмдүктөрдүн монитору", "Суу заводу!"); // Суу заводуна кат жөнөтүү} кечигүү (15000); // Blynk каттары 15 секунд аралыкта болушу керек. 15000 миллисеконду кечиктирүү if (f <= min_temperature) // Эгерде температура мин мааниге барабар же андан төмөн болсо {Blynk.email ("Email_Here", "Өсүмдүк Монитору", "Температура Төмөн!"); // Температура төмөн экенин электрондук кат аркылуу жөнөтүңүз

}

кечигүү (15000); // Blynk каттары 15 секунд аралыкта болушу керек. 15000 миллисеконду кечиктирүү эгерде (h <= min_humidity) // Эгерде нымдуулук мин мааниге барабар же төмөн болсо {Blynk.email ("Emial_Here", "Өсүмдүктөрдүн монитору", "Нымдуулугу төмөн!"); // Электрондук почтага нымдуулугу төмөн экенин билдириңиз} notified = 1; timer.setTimeout (timedelay *5, resetNotified); // кайталануучу эскертүү каттарынын ортосунда каалаган убакыттын санын көбөйтүү}}

void resetNotified () // электрондук почта жыштыгын баштапкы абалга келтирүү функциясы

{notified = 0; }

жараксыз орнотуу ()

{Serial.begin (9600); // Мүчүлүштүктөрдү оңдоо Blynk.begin (auth, ssid, pass); // blynk timer.setIntervalга туташуу (timedelay, Sensors); // Ар бир мүнөт сайын чакырыла турган функцияны орнотуңуз же dht.begin () убактысы боюнча эмне коюлганын; // DHT сенсорун иштетүү}

// Void циклинде blynk.run жана таймер гана болушу керек

void loop () {Blynk.run (); // Run blynk timer.run (); // BlynkTimer баштайт}

Сунушталууда: