Talaan ng mga Nilalaman:

Plant Monitor Gamit ang ESP32 Thing at Blynk: 5 Hakbang
Plant Monitor Gamit ang ESP32 Thing at Blynk: 5 Hakbang

Video: Plant Monitor Gamit ang ESP32 Thing at Blynk: 5 Hakbang

Video: Plant Monitor Gamit ang ESP32 Thing at Blynk: 5 Hakbang
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Nobyembre
Anonim
Plant Monitor Gamit ang ESP32 Thing at Blynk
Plant Monitor Gamit ang ESP32 Thing at Blynk
Plant Monitor Gamit ang ESP32 Thing at Blynk
Plant Monitor Gamit ang ESP32 Thing at Blynk

Pangkalahatang-ideya

Ang layunin ng proyektong ito ay upang lumikha ng isang compact na aparato na magagawang subaybayan ang mga kondisyon ng isang houseplant. Pinapayagan ng aparato ang gumagamit na suriin ang antas ng kahalumigmigan sa lupa, antas ng kahalumigmigan, temperatura, at ang "pakiramdam na" tulad ng temperatura mula sa isang smartphone gamit ang Blynk App. Bilang karagdagan, makakatanggap ang gumagamit ng isang alerto sa email kapag ang mga kundisyon ay hindi angkop para sa halaman. Halimbawa, ang gumagamit ay makakatanggap ng isang paalala sa tubig ang halaman kapag ang mga antas ng kahalumigmigan ng lupa ay bumaba sa ibaba isang naaangkop na antas.

Hakbang 1: Mga Kinakailangan

Mga Kinakailangan
Mga Kinakailangan
Mga Kinakailangan
Mga Kinakailangan
Mga Kinakailangan
Mga Kinakailangan

Gumagamit ang proyektong ito ng isang bagay na Sparkfun ESP32, isang sensor ng DHT22, at isang Electronic Brick Soil Moisture Sensor. Bilang karagdagan, kinakailangan ang isang wifi network at ang Blynk app. Mas mabuti, ang isang enclosure na hindi tinatablan ng tubig ay dapat nilikha upang maglaman ng bagay na ESP32. Habang ang halimbawang ito ay gumagamit ng isang karaniwang outlet para sa isang mapagkukunan ng kuryente, ang pagdaragdag ng isang rechargeable na baterya, panel ng solar, at tagakontrol ng singil ay magpapagana ng aparato upang mapatakbo sa pamamagitan ng nababagong enerhiya.

Hakbang 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Upang maging, i-download ang Blynk app at lumikha ng isang bagong proyekto. Itala ang token ng pagpapatotoo - gagamitin ito sa code. Lumikha ng mga bagong display widget sa Blynk app at piliin ang kaukulang virtual pin na tinukoy sa code. Itakda ang agwat ng pag-refresh upang itulak. Ang bawat widget ay dapat na italaga ng sarili nitong virtual pin.

Hakbang 3: Arduino IDE

Arduino IDE
Arduino IDE

I-download ang Arduino IDE. Sundin ang mga tagubilin sa pag-download para sa driver ng bagay na ESP32 at ang demo upang matiyak ang pagkakakonekta ng wifi. I-download ang mga aklatan ng Blynk at DHT na kasama sa code. Punan ang panghuling code ng token ng pagpapatotoo, password ng wifi, username ng wifi, at email. Gamitin ang demo code para sa sensor ng kahalumigmigan ng lupa upang mahanap ang minimum at maximum na mga halaga para sa uri ng lupa. Itala at palitan ang mga halagang ito sa pangwakas na code. Palitan ang huling halaga ng mga minimum na halaga para sa temperatura, kahalumigmigan sa lupa, at halumigmig para sa halaman. I-upload ang code.

Hakbang 4: Buuin Ito

Gumawa nito
Gumawa nito
Gumawa nito
Gumawa nito
Gumawa nito
Gumawa nito

Una, ikonekta ang sensor ng kahalumigmigan ng lupa sa 3.3V, ground, at input pin 34. Tandaan, hindi isinasama ang switch ay nakatakda sa A dahil gagamitin ang setting ng analog para sa sensor na ito. Susunod, ikonekta ang sensor ng DHT sa 3.3V, ground, at input pin 27. Ang sensor ng DHT22 ay nangangailangan ng isang resistor na 10K Ohm sa pagitan ng VCC at ng data out pin. Tiyaking suriin ang diagram ng DHT upang matiyak na maayos itong nai-wire. I-configure ang ESP32 sa loob ng isang hindi tinatagusan ng tubig enclosure gamit ang sensor ng kahalumigmigan sa lupa at ang sensor ng DHT sa itaas ng ibabaw. Kumonekta sa isang mapagkukunan ng kuryente at masiyahan sa data sa kapaligiran ng iyong halaman.

Hakbang 5: Code

// Kasamang mga aklatan

# tukuyin ang BLYNK_PRINT Serial

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

// Impormasyon ng sensor ng DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Digital pin na konektado sa DHT sensor DHT dht (DHTPIN, DHTTYPE); // Initialize DHT sensor.

// tukuyin ang mga input pin at output

int ground_sensor = 34; // tukuyin ang analog input pin number na konektado sa sensor ng kahalumigmigan

int output_value; // tukuyin bilang output

int moisturelevel; // tukuyin bilang output

int abiso = 0; // tukuyin ang notifed bilang 0

int timedelay = 60000L; // set timer upang patakbuhin makakuha ng data minsan bawat minuto o 60, 000 miliseconds

// magtakda ng mga minimum na halaga para sa halaman

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

// Dapat kang makakuha ng Auth Token sa Blynk App.

char auth = "Auth_Token_Here";

// Ang iyong mga kredensyal sa WiFi.

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

BlynkTimer timer;

// Ang pagpapaandar na ito ay nagpapadala ng oras ng pag-up ng Arduino bawat segundo sa Virtual Pin (5).

// Sa app, ang dalas ng pagbabasa ng Widget ay dapat itakda sa PUSH. Nangangahulugan ito // na tinukoy mo kung gaano kadalas magpadala ng data sa Blynk App.

void Sensors () // pangunahing pagpapaandar upang mabasa ang mga sensor at itulak sa blynk

{output_value = analogRead (ground_sensor); // Basahin ang analog signal mula sa ground_sensor at tukuyin bilang output_value // Map output_vlaue mula sa min, max na halaga sa 100, 0 at pigilan ang pagitan ng 0, 100 // Gumamit ng sample code at serial monitor upang makahanap ng min at max na halaga para sa indibidwal na sensor at uri ng lupa para sa mas mahusay na moisturelevel ng pagkakalibrate = pumipigil (mapa (output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Basahin ang kahalumigmigan float t = dht.readTemperature (); // Basahin ang temperatura bilang Celsius (ang default) float f = dht.readTemperature (totoo); // Basahin ang temperatura bilang Fahrenheit (isFahrenheit = totoo) // Compute heat index sa Fahrenheit (ang default) float hif = dht.computeHeatIndex (f, h); // Suriin kung may nabasa na nabigo at lumabas nang maaga (upang subukang muli). kung (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Nabigong basahin mula sa sensor ng DHT!")); bumalik; } // Nag-uugnay ito sa mga vale sa mga virtual na pin na tinukoy sa mga widget sa Blynk app Blynk.virtualWrite (V5, moisturelevel); // Magpadala ng antas ng kahalumigmigan sa virtual pin 5 Blynk.virtualWrite (V6, f); // Magpadala ng temperatura sa virtual pin 6 Blynk.virtualWrite (V7, h); // Magpadala ng kahalumigmigan sa virtual pin 7 Blynk.virtualWrite (V8, hif); // Magpadala ng heat index sa virtual pin 8

kung (aabisuhan == 0)

{if (moisturelevel <= min_moisture) // Kung ang moisturelevel ay katumbas o mas mababa sa min na halaga {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Send email to water plant} pagkaantala (15000); // Blynk emails ay dapat na 15 segundo ang agwat. Ipa-antala ang 15000 millisecons kung (f <= min_temperature) // Kung ang temperatura ay katumbas o mas mababa sa min na halagang {Blynk.email ("Email_Here", "Plant Monitor", "Temperatura Mababa!"); // Magpadala ng email na mababa ang temperatura

}

pagkaantala (15000); // Blynk emails ay dapat na 15 segundo ang agwat. Ipa-antala ang 15000 millisecons kung (h <= min_humidity) // Kung ang halumigmig ay katumbas o mas mababa sa halagang min {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Magpadala ng email na mababa ang kahalumigmigan} inabisuhan = 1; timer.setTimeout (timedelay * 5, resetNotified); // multipy timedelay ayon sa bilang ng mga minuto na nais sa pagitan ng paulit-ulit na mga email ng babala}}

void resetNotified () // function na tinawag upang i-reset ang dalas ng email

{aabisuhan = 0; }

walang bisa ang pag-setup ()

{Serial.begin (9600); // Debug console Blynk.begin (auth, ssid, pass); // connect to blynk timer.setInterval (timedelay, Sensors); // Pag-set up ng isang pagpapaandar na tatawagan bawat minuto o kung anong oras ang itinakda sa dht.begin (); // run DHT sensor}

// Void loop dapat maglaman lamang ng blynk.run at timer

void loop () {Blynk.run (); // Run blynk timer.run (); // Initiates BlynkTimer}

Inirerekumendang: