Բովանդակություն:

Plant Monitor օգտագործելով ESP32 Thing և Blynk: 5 քայլ
Plant Monitor օգտագործելով ESP32 Thing և Blynk: 5 քայլ

Video: Plant Monitor օգտագործելով ESP32 Thing և Blynk: 5 քայլ

Video: Plant Monitor օգտագործելով ESP32 Thing և Blynk: 5 քայլ
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 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 տվիչ և Էլեկտրոնային աղյուսի հողերի խոնավության տվիչ: Բացի այդ, անհրաժեշտ է wifi ցանց և Blynk հավելված: Preանկալի է, որ անջրանցիկ պարիսպ ստեղծվի `ESP32 բանը պարունակելու համար: Մինչ այս օրինակը օգտագործում է էներգիայի աղբյուրի ստանդարտ վարդակ, վերալիցքավորվող մարտկոցի, արևային վահանակի և լիցքավորման վերահսկիչի ավելացումը հնարավորություն կտա սարքին սնվել վերականգնվող էներգիայի միջոցով:

Քայլ 2: Բլինք

Բլինկ
Բլինկ
Բլինկ
Բլինկ
Բլինկ
Բլինկ

Լինելու համար ներբեռնեք Blynk ծրագիրը և ստեղծեք նոր նախագիծ: Նկատի ունեցեք նույնականացման նշանը. Այն կօգտագործվի ծածկագրում: Ստեղծեք ցուցադրման նոր վիջեթներ Blynk հավելվածում և ընտրեք ծածկագրում սահմանված համապատասխան վիրտուալ կապերը: Սահմանեք թարմացման միջակայքը `սեղմելու համար: Յուրաքանչյուր վիջեթին պետք է տրվի իր վիրտուալ քորոցը:

Քայլ 3: Arduino IDE

Arduino IDE
Arduino IDE

Ներբեռնեք Arduino IDE- ն: Հետևեք ESP32 բանի վարորդի և ցուցադրման ներբեռնման հրահանգներին ՝ WiFi կապը ապահովելու համար: Ներբեռնեք ծածկագրում ներառված Blynk և DHT գրադարանները: Վերջնական ծածկագրում լրացրեք նույնականացման նշանը, wifi գաղտնաբառը, wifi օգտվողի անունը և էլ. Օգտագործեք հողի խոնավության տվիչի դեմո կոդը `հողի տեսակի նվազագույն և առավելագույն արժեքները գտնելու համար: Գրանցեք և փոխարինեք այս արժեքները վերջնական ծածկագրում: Վերջնական ծածկագրում փոխարինեք գործարանի ջերմաստիճանի, հողի խոնավության և խոնավության նվազագույն արժեքները: Վերբեռնեք ծածկագիրը:

Քայլ 4: Կառուցեք այն

Կառուցեք այն
Կառուցեք այն
Կառուցեք այն
Կառուցեք այն
Կառուցեք այն
Կառուցեք այն

Նախ, հողի խոնավության տվիչը միացրեք 3.3 Վ, գրունտին և մուտքի 34 -ին: Նկատի ունեցեք, որ դա անջատիչ է, որը անջատված է A- ով, քանի որ այս սենսորի անալոգային կարգավորումը կօգտագործվի: Հաջորդը, DHT սենսորը միացրեք 3.3V, գետնին և մուտքի քորոցին 27: DHT22 սենսորը պահանջում է 10K Օմ դիմադրություն VCC- ի և տվյալների ելքային քորոցի միջև: Համոզվեք, որ ստուգեք DHT դիագրամը `ապահովելու համար, որ այն պատշաճ կերպով լարված է: ESP32- ը կազմաձևեք անջրանցիկ պարիսպի ներսում `հողի խոնավության տվիչով և DHT սենսորով` մակերևույթից վերև: Միացեք էներգիայի աղբյուրին և վայելեք ձեր գործարանի միջավայրի տվյալները:

Քայլ 5: Կոդ

// Ներառված գրադարաններ

#սահմանել BLYNK_PRINT Սերիա

#ներառել #ներառել #ներառել #ներառել «DHT.h»

// DHT սենսորային տեղեկատվություն

#սահմանել DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #սահմանել DHTPIN 27 // DHT dht dht (DHTPIN, DHTTYPE) DHT տվիչին միացված թվային քորոց; // Նախնականացնել DHT սենսորը:

// սահմանել մուտքային կապումներն ու ելքերը

int հողի_սենսոր = 34; // սահմանել խոնավության տվիչին միացված անալոգային մուտքի քորոց համարը

int output_value; // սահմանել որպես ելք

int խոնավության մակարդակ; // սահմանել որպես ելք

int ծանուցված = 0; // notifed որպես 0 սահմանել

int timedelay = 60000L; // սահմանել ժամաչափ, որը կաշխատի ստանալ տվյալները րոպեում մեկ անգամ կամ 60, 000 միլիվայրկյան

// գործարանի համար սահմանել նվազագույն արժեքներ

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

// Դուք պետք է ստանաք Auth Token- ը Blynk հավելվածում:

char auth = "Հեղինակ_Թոկան_Այստեղ";

// Ձեր WiFi հավատարմագրերը:

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

BlynkTimer ժմչփ;

// Այս գործառույթը Arduino- ի բարձրացման ժամանակը ուղարկում է ամեն վայրկյան Վիրտուալ կապին (5):

// Հավելվածում Widget- ի ընթերցման հաճախականությունը պետք է սահմանվի PUSH: Սա նշանակում է //, որ դուք սահմանում եք, թե որքան հաճախ է տվյալները ուղարկվել Blynk հավելվածին:

void Սենսորներ () // սենսորներ կարդալու և blynk հրելու հիմնական գործառույթը

{output_value = analogRead (հող_սենսոր); // Կարդալ հողի սենսորից անալոգային ազդանշան և սահմանել որպես ելքային_արժեք // քարտեզ output_vlaue min- ից, առավելագույն արժեքները `100, 0 և սահմանափակել 0, 100 // Օգտագործեք ընտրանքային ծածկագիր և սերիական մոնիտոր` min և առավելագույն արժեքներ առանձին սենսորների և հողի տիպի համար `ավելի լավ ճշգրտման խոնավության մակարդակ = սահմանափակում (քարտեզ (ելքային_արժեք, 1000, 4095, 100, 0), 0, 100); բոց h = dht.readHumidity (); // Կարդացեք խոնավության բոց t = dht.readTemperature (); // Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված) float f = dht.readTemperature (true); // Readերմաստիճանը կարդալ որպես Ֆարենհայտ (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); // ջերմաստիճանը ուղարկել վիրտուալ կապ 6 Blynk.virtualWrite (V7, ժ); // Խոնավություն ուղարկեք վիրտուալ կապին 7 Blynk.virtualWrite (V8, hif); // Ուղարկեք ջերմության ինդեքս վիրտուալ փին 8 -ին

եթե (ծանուցված է == 0)

{եթե (խոնավության մակարդակ <= min_moisture) // Եթե խոնավության մակարդակը հավասար է կամ նվազագույն արժեքին {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Էլեկտրոնային նամակ ուղարկել ջրային գործարան} ուշացում (15000); // Blynk- ի նամակները պետք է ունենան 15 վայրկյան տարբերություն: Հետաձգեք 15000 միլիվայրկյան եթե (f <= min_temperature) // Եթե ջերմաստիճանը հավասար է կամ նվազագույն արժեքին {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Էլփոստ ուղարկեք, որ ջերմաստիճանը ցածր է

}

ուշացում (15000); // Blynk- ի նամակները պետք է ունենան 15 վայրկյան տարբերություն: Հետաձգեք 15000 միլիվայրկյան, եթե (h <= min_h խոնավություն) // Եթե խոնավությունը հավասար է կամ նվազագույն արժեքին {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Էլփոստ ուղարկեք, որ խոնավությունը ցածր է} ծանուցված = 1; timer.setTimeout (timedelay *5, resetNotified); // բազմապատկել ժամանակային հետաձգումը կրկնվող նախազգուշական նամակների միջև պահանջվող րոպեների քանակով}}

void resetNotified () // գործառույթը, որը կոչված է վերականգնելու էլփոստի հաճախականությունը

{ծանուցված = 0; }

դատարկ կարգավորում ()

{Serial.begin (9600); // Վրիպազերծման վահանակ Blynk.begin (author, ssid, pass); // միանալ blynk timer.setInterval- ին (ժամանակացույց, սենսորներ); // Ստեղծեք մի գործառույթ, որը պետք է կանչվի ամեն րոպե կամ ինչ ժամանակացույց է սահմանվում dht.begin (); // գործարկել DHT սենսորը}

// Void loop- ը պետք է պարունակի միայն blynk.run և ժամանակաչափ

void loop () {Blynk.run (); // Գործարկել blynk timer.run (); // նախաձեռնում է BlynkTimer}

Խորհուրդ ենք տալիս: