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

Դռների և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ. 21 քայլ
Դռների և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ. 21 քայլ

Video: Դռների և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ. 21 քայլ

Video: Դռների և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ. 21 քայլ
Video: orer.am 2024, Հուլիսի
Anonim
Դռան և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ
Դռան և ջերմաստիճանի կարգավիճակի անտառահատման նախագիծ

Այս Instructable- ը ձեզ ցույց կտա, թե ինչպես կարելի է դռան և ջերմաստիճանի կարգավիճակի անտառահատիչ պատրաստել $ 10,00 -ից ցածր արժեքով ՝ օգտագործելով ESP8266 NodeMCU, DHT11 ջերմաստիճանի և խոնավության տվիչ, դռան/պատուհանի եղեգի անջատիչ, 10K Օմ ռեզիստոր և միացման մետաղալար:

Այս նախագծի ծագումը բխեց Arduino տախտակի հետ ավելի շատ տան ավտոմատացում կատարելու իմ ցանկությունից, քանի որ ես շատ էի կարդում Arduino- ի հետ համատեղելի EPS8266 NodeMCU- ի մասին, որոշեցի, որ այս տախտակը կատարյալ էժան տախտակ կլինի փորձեր անելու համար: ESP8266 տախտակների միջոցով ինտերնետում տան ավտոմատացման նախագծեր որոնելուց հետո, ես որոշեցի ջերմաստիճանի և դռների կարգավիճակի անտառահատիչը համատեղել իմ առաջին փորձի համար: Ի վերջո, այս նախագիծը կհամադրվի սերվոների, խոնավության տվիչների և այլ էլեկտրոնիկայի հետ `ավտոմատացնելու համար իմ պապիկիս նախագծած և կառուցված փոքր ջերմոցը 50 տարի առաջ: Temperatureերմաստիճանի տվիչը կօգտագործվի `որոշելու, թե արդյոք ջեռուցման համակարգը պետք է միացված կամ անջատված լինի, ինչպես նաև ազդանշան է տալիս սերվերին` անհրաժեշտության դեպքում բացել և փակել օդափոխման համակարգը: Օդափոխման համակարգի վիճակը վերահսկվելու է մագնիսական եղեգի անջատիչների օգտագործմամբ: Ի վերջո, խոնավության տվիչները կօգտագործվեն ջրամատակարարման համակարգը ավտոմատացնելու համար:

Քայլ 1: Հրաժարում

Պարզապես արագ հերքում `նշելու, որ մենք պատասխանատվություն չենք կրում այն ամենի համար, ինչ տեղի է ունենում այս հրահանգին հետևելու արդյունքում: Anythingանկացած բան կառուցելիս միշտ ավելի լավ է հետևել արտադրողի հրահանգներին և անվտանգության թերթիկներին, ուստի խնդրում ենք խորհրդակցել այդ փաստաթղթերի հետ ՝ ձեր սեփականը կառուցելու համար օգտագործվող մասերից և գործիքներից որևէ մեկի համար: Մենք պարզապես տեղեկատվություն ենք տրամադրում այն քայլերի մասին, որոնք մենք օգտագործել ենք մերը ստեղծելու համար: Մենք պրոֆեսիոնալ չենք: Փաստորեն, այս շինարարությանը մասնակցած անհատներից 3 -ից 2 -ը երեխաներ են:

Քայլ 2: Ստեղծեք անվճար IFTTT հաշիվ

Ստեղծեք անվճար IFTTT հաշիվ
Ստեղծեք անվճար IFTTT հաշիվ

Եթե դեռ չունեք, այժմ ժամանակն է անվճար IFTTT հաշիվ ստեղծելու համար ՝ այցելելով նրանց գլխավոր էջ: հնարավորություն կտա նոր եղանակներով օգտվել այդ ծառայություններից: Այս նախագծի համար մենք պատրաստվում ենք օգտագործել IFTTT- ը ՝ ESP8266- ին թույլ տալու համար մուտքագրել դուռի կարգավիճակը եղեգի անջատիչի միջոցով, իսկ ջերմաստիճանը և խոնավությունը ՝ DHT11 սենսորի միջոցով Google Sheets փաստաթղթում:

Քայլ 3: Ստեղծեք IFTTT հավելված

Ստեղծեք IFTTT հավելված
Ստեղծեք IFTTT հավելված

Մինչ դեռ IFTTT- ում եք, անցեք «Իմ ապլետներ» բաժինը և ստեղծեք նոր հավելված ՝ կտտացնելով «Նոր հավելված» կոճակին:

Քայլ 4: Կարգավորեք ձեր հավելվածի «այս» մասը:

Կարգավորեք
Կարգավորեք

Կտտացրեք կապույտ գույնի «այս» բառի վրա, ինչպես նշված է վերևի նկարում:

Քայլ 5: Ավելացրեք WebHooks ծառայությունը ձեր հավելվածին:

Ավելացրեք WebHooks ծառայությունը ձեր հավելվածին
Ավելացրեք WebHooks ծառայությունը ձեր հավելվածին

Որոնման տողում որոնեք «Webhooks» ծառայությունը և ընտրեք Webhooks պատկերակը:

Երբ գտնեք «Webhooks» ծառայությունը, կտտացրեք դրա վրա:

Քայլ 6. Կարգավորեք Receive a Web Request Trigger- ը:

Կարգավորեք Receive a Web Request Trigger- ը
Կարգավորեք Receive a Web Request Trigger- ը

Ընտրեք «Ստացեք վեբ հարցման» ձգան:

Քայլ 7: Տրամադրեք իրադարձության անուն

Տրամադրել իրադարձության անվանումը
Տրամադրել իրադարձության անվանումը

Տեքստային դաշտում նշեք ձեր նոր հավելվածին իրադարձության անուն: Ես ընտրել եմ «Data Logger» - ը, բայց դուք կարող եք ընտրել այն, ինչ ցանկանում եք:

Քայլ 8: Կարգավորեք ձեր հավելվածի «այդ» մասը:

Կարգավորեք
Կարգավորեք

Կտտացրեք կապույտ գույնի «այդ» բառի վրա, ինչպես նշված է վերևի նկարում:

Քայլ 9: Ստեղծեք գործողությունների ծառայություն

Ստեղծեք գործողությունների ծառայություն
Ստեղծեք գործողությունների ծառայություն

Որոնման դաշտում որոնեք «Google Աղյուսակներ» ծառայությունը և կտտացրեք Google Աղյուսակների պատկերակին:

Քայլ 10: Միացեք Google Աղյուսակներին

Միացեք Google Աղյուսակներին
Միացեք Google Աղյուսակներին

Եթե դա դեռ չեք արել, ապա ձեզ հարկավոր կլինի ձեր IFTTT հաշիվը միացնել Google Աղյուսակներին: Սեղմեք վերևում ցուցադրված «Միացում» կոճակը և հետևեք էկրանին տրված հրահանգներին:

Քայլ 11: Ընտրեք գործողություն

Ընտրեք Գործողություն
Ընտրեք Գործողություն

Կտտացրեք «Ավելացնել տող աղյուսակին»:

Քայլ 12: Կարգավորեք գործողությունը

Կարգավորեք գործողությունը
Կարգավորեք գործողությունը

Նշեք անունը «Աղյուսակի անուն» տեքստային դաշտում: Ես ընտրում եմ օգտագործել «Data_Logger» - ը հետևողականության համար: Մնացած պարամետրը հանգիստ թողեք (կարող եք փորձարկել այդ կարգավորումները մեկ այլ ժամանակ) և այնուհետև սեղմեք «Ստեղծել գործողություն» կոճակը էկրանի ներքևում:

Քայլ 13. Վերանայեք և վերջացրեք ձեր ապլետը:

Վերանայեք և վերջացրեք ձեր ապլետը
Վերանայեք և վերջացրեք ձեր ապլետը

Ապլետի կազմաձևումից բավարարվելուց հետո կտտացրեք «Ավարտել» կոճակին:

Քայլ 14: Առբերեք հետագայում անհրաժեշտ կազմաձևման տեղեկատվությունը:

Առբերեք հետագայում անհրաժեշտ կազմաձևման տվյալները
Առբերեք հետագայում անհրաժեշտ կազմաձևման տվյալները

Կտտացրեք «Webhooks» - ին, ինչպես նշված է վերևում:

Քայլ 15. Շարունակեք դեպի API բանալու Webhooks փաստաթղթերը

Անցեք API բանալու Webhooks փաստաթղթերին
Անցեք API բանալու Webhooks փաստաթղթերին

Կարող է տարօրինակ թվալ, բայց կտտացրեք վերևի աջ մասում գտնվող Փաստաթղթերի հղմանը ՝ ձեր եզակի API բանալիով էջ անցնելու համար:

Քայլ 16: Պահեք API բանալին

Պահեք API բանալին
Պահեք API բանալին
Պահեք API բանալին
Պահեք API բանալին

Փաստաթղթավորման էկրանի առաջին տողում ցուցադրվում է ձեր եզակի API բանալին: Պատճենեք և պահեք այս բանալին հետագայում օգտագործելու համար:

Նաև լավ գաղափար է, որ ապլետը փորձարկվի այստեղ: Հիշեք, որ {իրադարձությունը} փոխեք Data_Logger- ի կամ ինչ էլ որ անվանեք ձեր իրադարձությանը և որոշ տվյալներ ավելացրեք 3 դատարկ արժեքներին, այնուհետև կտտացրեք «Փորձարկել այն» կոճակին ՝ էջի ներքևում: Դուք պետք է տեսնեք կանաչ հաղորդագրություն, որն ասում է «Միջոցառումը գործարկվել է»: Եթե այո, անցեք Google Փաստաթղթեր և հաստատեք, որ փորձնական էջում մուտքագրված տվյալները ցուցադրվել են Google Աղյուսակների փաստաթղթում:

Քայլ 17: Հավաքեք բաղադրիչները

Հավաքեք բաղադրիչները
Հավաքեք բաղադրիչները
Հավաքեք բաղադրիչները
Հավաքեք բաղադրիչները
Հավաքեք բաղադրիչները
Հավաքեք բաղադրիչները

Ձեզ հարկավոր է ընդամենը մի քանի մաս:

1) ESP8266 NodeMcu զարգացման խորհուրդ

2) DHT11 ջերմաստիճանի/խոնավության ցուցիչ

3) դռան/պատուհանի եղեգի անջատիչ

4) 10k Օմ դիմադրություն

5) միացման մետաղալար

Քայլ 18: Հավաքեք բաղադրիչները

1) ESP8266- ի 3v3 կապից մեկը միացրեք DHT11- ի vcc կապին:

2) ESP8266- ի գրունտային կապումներից մեկը միացրեք DHT11- ի գետնին:

3) Միացրեք ESP8266- ի D4 կապը (a.k.a. pin 2 IDE- ում) DHT11- ի տվյալների պինին:

4) ESP8266- ի մեկ այլ 3v3 կապը միացրեք դռան/պատուհանի եղեգի անջատիչի մի կողմին:

5) Միացրեք E58266- ի E5866- ի D5 (a.k.a. pin 14) դռան/պատուհանի եղեգի անջատիչի մյուս կողմը և միացրեք այն նաև 10k Օմ դիմադրության մի կողմին:

6) 10k ohm դիմադրության մյուս կողմը միացրեք ESP8266- ի մեկ այլ հիմնային քորոցին:

ESP8266 քորոցների ընտրության համար դիմեք այս օգտակար դիագրամին կամ շատ օգտակար տեսանյութին:

Քայլ 19. Գրեք Arduino ծածկագիրը

Գրեք Arduino ծածկագիրը
Գրեք Arduino ծածկագիրը

Պատճենեք և տեղադրեք ստորև նշված կոդը ձեր Arduino IDE- ում:

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

#սահմանեք DHTPIN 2 // ինչ թվային կապի հետ ենք կապված

#define DOORPIN 14 // դուռի անջատիչն ինչ թվային կապի վրա է:

#սահմանեք DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int հաշվարկ = 1;

const char* ssid = "some_ssid"; // փոխել սա ՝ ձեր ssid const char* գաղտնաբառ = "some_password" օգտագործելու համար; // փոխեք սա, որպեսզի օգտագործեք ձեր գաղտնաբառը int sleepTime = 100;

// Maker Webhooks IFTTT

const char* սերվեր = "maker.ifttt.com";

// IFTTT URL ռեսուրս

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Համոզվեք, որ օգտագործեք ձեր ծառայության անունը և ձեր api բանալին:

Լարային դուռStatus = "Փակ է";

ցնդող bool stateChanged = false;

// Եթե ժամեր եք քնում, ապա միջակայքը սահմանեք ժամ * 60 րոպե * 60 վայրկյան * 1000 միլիվայրկյան

const երկար ընդմիջում = 1.0 * 60 * 60 * 1000; // 1 ժամ անստորագիր երկար նախորդ Միլիս = 0 - (2 * ընդմիջում);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Դռների ցուցիչ dht.begin (); WiFi.begin (ssid, գաղտնաբառ);

Serial.print ("\ n Միացում..");

while (WiFi.status ()! = WL_CONNECTED) {ուշացում (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = ճշմարիտ; Serial.println («Ստուգում է դուռը»); if (digitalRead (DOORPIN) == HIGH) // Ստուգեք, արդյոք դուռը բաց է {Serial.println («Դուռը փակ է»); doorStatus = "Փակ է"; } else {Serial.println («Դուռը բաց է»); doorStatus = "Բացված"; }}

void checkStatus () {

եթե (WiFi.status () == WL_CONNECTED) {// Ստուգեք WiFi կապի կարգավիճակը // Ընթերցման ջերմաստիճանը կամ խոնավությունը տևում է մոտ 250 միլիվայրկյան: // Սենսորների ընթերցումները կարող են լինել նաև մինչև 2 վայրկյան «հին» (դա շատ դանդաղ սենսոր է) float h = dht.readHumidity (); // Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված) float t = dht.readTemperature (); // Կարդացեք ջերմաստիճանը որպես Ֆարենհայտ (isFahrenheit = true) float f = dht.readTemperature (true); // Ստուգեք, եթե որևէ ընթերցում ձախողվեց և շուտ դուրս եկեք (նորից փորձելու համար): if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Չհաջողվեց կարդալ DHT սենսորից!"); //Serial.print ("."); // Չհաջողվեց կարդալ DHT սենսորից: վերադարձ; } // Հաշվել ջերմության ինդեքսը Ֆարենհեյթում (կանխադրված) float hif = dht.computeHeatIndex (f, h); // heatելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temերմաստիճանը."); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print («atերմության ինդեքս.»); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Խոնավություն."); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Ստուգեք, արդյոք դուռը բաց է

{Serial.println («Դուռը փակ է»); doorStatus = "Փակ է"; } else {Serial.println («Դուռը բաց է»); doorStatus = "Բացված"; } String jsonObject = Լար ("{" արժեք 1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; Լարը ամբողջականUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (ամբողջականUrl); // http.begin (սերվեր); http.addHeader («Բովանդակության տեսակ», «ծրագիր/json»); http. POST (jsonObject); http.writeToStream (և սերիական); http.end (); // Փակել կապը

stateChanged = կեղծ;

int sleepTimeInMinutes = ընդմիջում / 1000/60; Serial.print ("\ n / n Գնացեք քնելու համար"); Serial.print (sleepTimeInMinutes); Serial.println («րոպե (ներ) …»); }}

դատարկ շրջան () {

անստորագիր երկար հոսանք Millis = millis (); ուշացում (4000); // Եթե մենք գերազանցեցինք անցած ժամանակը, ապա ստիպեք ստուգել դուռը և ջերմաստիճանը: if (currentMillis - previousMillis> = ընդմիջում) {stateChanged = true; նախորդ Միլիս = ընթացիկ Միլիս; Serial.print (հաշվարկ ++); Serial.println (") Ստուգում անցած ժամանակի պատճառով"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Ստուգում պետական փոփոխության պատճառով"); }

// Եթե վիճակը փոխվել է, ապա ստուգեք դուռը և ջերմաստիճանը:

if (stateChanged) {checkStatus (); }

ուշացում (քնի ժամ);

}

Քայլ 20: Արդյունքներ

Արդյունքները
Արդյունքները

Նախորդ քայլի սկզբնական կոդը վերբեռնելուց հետո դուք պետք է ունենաք արդյունքներ, ինչպես օրինակ վերը նշված օրինակը:

Քայլ 21. Վարկեր

Ես գտա բազմաթիվ օգտակար հուշումներ և խորհուրդներ Random Nerd Tutorials- ից և կցանկանայի շնորհակալություն հայտնել նրանց իրենց բոլոր օգնության համար: Հատկապես նրանց գերազանց ձեռնարկը ESP32 ESP8266- ում Google Sheets- ում հրապարակել սենսորային ընթերցումներ, որոնց վրա հիմնված են այս հրահանգի հիմնական հատվածները:

Բացի այդ, TheCircuit- ի DHT11 Instructable- ն ինձ օգնեց հասկանալ, թե ինչպես օգտագործել այս շատ էժան, բայց հետաքրքիր փոքրիկ սենսորը:

Ավելին, կան բազմաթիվ ձեռնարկներ, որոնք զբաղվում են ձեր դռների մոնիտորինգով, ինչպես Ավտոտնակի դռների մոնիտորը և մեկ ուրիշը ՝ Պատահական ներդաշնակ ձեռնարկներից: Ես օգտագործեցի դրանց պատառիկներն ու կտորները, որոնք կօգնեն ինձ հասկանալ, թե ինչպես պետք է իմ եղեգի անջատիչը ճիշտ աշխատի:

Ի վերջո, այս տեղեկատվության, ինչպես նաև ինտերնետի շուրջ գտած այլ մանրամասների շնորհիվ ես կարողացա ստեղծել մի համակարգ, որը բավարարում էր իմ կարիքները: Հուսով եմ, որ այս Instructable- ը օգտակար կգտնեք և ստեղծեք ձեր սեփականը:

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