Turinys:

Durų ir temperatūros būsenos registravimo projektas: 21 žingsnis
Durų ir temperatūros būsenos registravimo projektas: 21 žingsnis

Video: Durų ir temperatūros būsenos registravimo projektas: 21 žingsnis

Video: Durų ir temperatūros būsenos registravimo projektas: 21 žingsnis
Video: Skaitmeniniai įrankiai ir šiltinimo sprendimai A+ klasės pastatams. Techninis vadovas A. Buska 2024, Liepa
Anonim
Durų ir temperatūros būsenos registravimo projektas
Durų ir temperatūros būsenos registravimo projektas

Ši instrukcija parodys, kaip padaryti paprastą durų ir temperatūros būsenos registratorių už mažiau nei 10,00 USD, naudojant ESP8266 „NodeMCU“, DHT11 temperatūros ir drėgmės jutiklį, durų/langų nendrių jungiklį, 10 K omų rezistorių ir tam tikrą prijungimo laidą.

Šio projekto pradžia kilo iš mano noro daugiau namų automatizuoti naudojant „Arduino“plokštę. Kadangi aš daug skaičiau apie „Arduino“suderinamą „EPS8266 NodeMCU“, nusprendžiau, kad ši plokštė bus tobula mažų kaštų plokštė, su kuria galima eksperimentuoti. Internete ieškodama namų automatizavimo projektų, naudodama ESP8266 plokštes, pirmam bandymui nusprendžiau derinti temperatūros ir durų būsenos registratorių. Galų gale šis projektas bus sujungtas su servo, drėgmės jutikliais ir kita elektronika, kad būtų automatizuotas mažas žalias namas, kurį mano senelis suprojektavo ir pastatė prieš 50 metų. Temperatūros jutiklis bus naudojamas nustatant, ar šildymo sistema turi būti įjungta ar išjungta, taip pat signalizuos servo sistemoms, kad prireikus atidarytų ir uždarytų ventiliacijos sistemą. Ventiliacijos sistemos būklė bus stebima naudojant magnetinius nendrinius jungiklius. Galiausiai drėgmės jutikliai bus naudojami laistymo sistemai automatizuoti.

1 žingsnis: atsisakymas

Tiesiog greitas atsisakymas pareikšti, kad mes neprisiimame jokios atsakomybės už viską, kas atsitinka laikantis šios instrukcijos. Kuriant bet ką visada geriausia vadovautis gamintojo instrukcijomis ir saugos lapais, todėl perskaitykite tuos dokumentus, kad sužinotumėte apie visas dalis ir įrankius, kuriuos naudojate kurdami savo. Mes tiesiog pateikiame informaciją apie veiksmus, kuriuos atlikome kurdami savo. Mes nesame profesionalai. Tiesą sakant, 2 iš 3 asmenų, dalyvavusių šioje statyboje, yra vaikai.

2 veiksmas: nustatykite nemokamą IFTTT paskyrą

Nustatykite nemokamą IFTTT paskyrą
Nustatykite nemokamą IFTTT paskyrą

Jei dar neturite, dabar pats laikas susikurti nemokamą IFTTT paskyrą, einant į jų pagrindinį puslapį. IFTTT reiškia „If This Then That“ir yra nemokama platforma, leidžianti naujomis priemonėmis prijungti interneto paslaugas kad galėtumėte pasinaudoti šiomis paslaugomis naujais būdais. Šiam projektui mes naudosime IFTTT, kad ESP8266 galėtų užregistruoti durų būseną per nendrinį jungiklį ir temperatūrą bei drėgmę per DHT11 jutiklį „Google“lakštų dokumente.

3 žingsnis: sukurkite IFTTT programėlę

Sukurkite IFTTT programėlę
Sukurkite IFTTT programėlę

Dar dirbdami IFTTT, eikite į skyrių „Mano programėlės“ir sukurkite naują programėlę spustelėdami mygtuką „Nauja programėlė“.

4 žingsnis: sukonfigūruokite „šią“savo programėlės dalį

Konfigūruokite
Konfigūruokite

Spustelėkite „šį“mėlyną žodį - kaip parodyta aukščiau esančiame paveikslėlyje.

5 veiksmas: pridėkite „WebHooks“paslaugą prie savo programėlės

Pridėkite „WebHooks“paslaugą prie savo programėlės
Pridėkite „WebHooks“paslaugą prie savo programėlės

Paieškos juostoje ieškokite paslaugos „Webhooks“ir pasirinkite „Webhooks“piktogramą.

Suradę „Webhooks“paslaugą, spustelėkite ją.

6 veiksmas: nustatykite gavimo žiniatinklio užklausos aktyviklį

Nustatykite gavimo žiniatinklyje užklausos aktyviklį
Nustatykite gavimo žiniatinklyje užklausos aktyviklį

Pasirinkite aktyviklį „Gauti žiniatinklio užklausą“.

7 veiksmas: pateikite įvykio pavadinimą

Pateikite įvykio pavadinimą
Pateikite įvykio pavadinimą

Teksto laukelyje nurodykite naują programėlę su įvykio pavadinimu. Aš pasirinkau „Duomenų kaupiklį“, bet jūs galite pasirinkti viską, kas jums patinka.

8 veiksmas: sukonfigūruokite „tą“savo programėlės dalį

Konfigūruokite
Konfigūruokite

Spustelėkite „tą“žodį, kuris yra mėlynos spalvos - kaip parodyta aukščiau esančiame paveikslėlyje.

9 veiksmas: nustatykite veiksmų paslaugą

Nustatykite veiksmų paslaugą
Nustatykite veiksmų paslaugą

Paieškos laukelyje ieškokite paslaugos „Google“skaičiuoklės “ir spustelėkite„ Google “skaičiuoklių piktogramą.

10 veiksmas: prisijunkite prie „Google“skaičiuoklių

Prisijunkite prie „Google“skaičiuoklių
Prisijunkite prie „Google“skaičiuoklių

Jei to dar nepadarėte, turėsite neprisijungti prie IFTTT paskyros prie „Google“skaičiuoklių. Paspauskite aukščiau parodytą mygtuką „Prisijungti“ir vykdykite ekrane pateikiamas instrukcijas.

11 veiksmas: pasirinkite veiksmą

Pasirinkite veiksmą
Pasirinkite veiksmą

Spustelėkite „Pridėti eilutę prie skaičiuoklės“.

12 veiksmas: nustatykite veiksmą

Nustatykite veiksmą
Nustatykite veiksmą

Teksto laukelyje „Skaičiuoklės pavadinimas“nurodykite pavadinimą. Siekdamas nuoseklumo, pasirenku naudoti „Data_Logger“. Palikite likusius nustatymus ramybėje (galite eksperimentuoti su kitais nustatymais kitu metu) ir paspauskite mygtuką „Sukurti veiksmą“ekrano apačioje.

13 veiksmas: peržiūrėkite ir užbaikite savo programėlę

Peržiūrėkite ir užbaikite savo programėlę
Peržiūrėkite ir užbaikite savo programėlę

Kai būsite patenkinti savo programėlės konfigūracija, paspauskite mygtuką „Baigti“.

14 veiksmas: gaukite vėliau reikalingą konfigūracijos informaciją

Gaukite reikiamą konfigūracijos informaciją vėliau
Gaukite reikiamą konfigūracijos informaciją vėliau

Spustelėkite „Webhooks“, kaip parodyta aukščiau.

15 veiksmas: pereikite prie API rakto „Webhooks“dokumentacijos

Pereikite prie API rakto „Webhooks“dokumentacijos
Pereikite prie API rakto „Webhooks“dokumentacijos

Tai gali atrodyti keista, bet spustelėkite nuorodą Dokumentacija viršutiniame dešiniajame kampe, kad pereitumėte į puslapį su savo unikaliu API raktu.

16 veiksmas: išsaugokite API raktą

Išsaugokite API raktą
Išsaugokite API raktą
Išsaugokite API raktą
Išsaugokite API raktą

Pirmoje dokumentacijos ekrano eilutėje rodomas jūsų unikalus API raktas. Nukopijuokite ir išsaugokite šį raktą, kad galėtumėte naudoti vėliau.

Taip pat gera idėja išbandyti programėlę čia. Nepamirškite pakeisti {event} į Data_Logger arba kaip pavadinote savo įvykį ir pridėti kai kuriuos duomenis prie 3 tuščių verčių, tada spustelėkite mygtuką „Išbandyti“puslapio apačioje. Turėtumėte pamatyti žalią pranešimą, kuriame sakoma: „Įvykis suaktyvintas“. Jei taip, eikite į „Google“dokumentus ir patvirtinkite, kad bandymo puslapyje įvesti duomenys buvo rodomi „Google“skaičiuoklių dokumente.

17 žingsnis: Surinkite komponentus

Surinkite komponentus
Surinkite komponentus
Surinkite komponentus
Surinkite komponentus
Surinkite komponentus
Surinkite komponentus

Jums reikės tik kelių dalių.

1) ESP8266 „NodeMcu“plėtros valdyba

2) DHT11 temperatūros/drėgmės jutiklis

3) Durų/langų jungiklis

4) 10k omų rezistorius

5) Prijungimo viela

18 žingsnis: Surinkite komponentus

1) Prijunkite vieną iš 3v3 kaiščio ESP8266 prie vcc kaiščio DHT11.

2) Prijunkite vieną iš ESP8266 įžeminimo kaiščių prie DHT11 įžeminimo kaiščio.

3) Prijunkite ESP8266 kaištį D4 (dar vadinamą IDE 2 kaiščiu) prie DHT11 duomenų kaiščio.

4) Prijunkite kitą 3v3 kaištį ant ESP8266 prie durų/langų nendrių jungiklio vienos pusės.

5) Prijunkite ESP8266 kaištį D5 (dar vadinamą 14 kaiščiu IDE) prie kitos durų/langų nendrių jungiklio pusės, taip pat prijunkite jį prie vienos 10k omų rezistoriaus pusės.

6) Kitą 10 kΩ rezistoriaus pusę prijunkite prie kito ESP8266 įžeminimo kaiščio.

Norėdami pasirinkti ESP8266 kaiščius, žiūrėkite šią naudingą diagramą arba labai naudingą vaizdo įrašą.

19 veiksmas: parašykite „Arduino“kodą

Parašykite „Arduino“kodą
Parašykite „Arduino“kodą

Nukopijuokite ir įklijuokite žemiau esantį kodą į „Arduino IDE“.

#įtraukti #įtraukti #įtraukti „DHT.h“

#define DHTPIN 2 // prie kokio skaitmeninio kaiščio esame prisijungę

#define DOORPIN 14 // koks skaitmeninis kaištis yra įjungtas durų jungiklis.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int skaičius = 1;

const char* ssid = "some_ssid"; // pakeisk tai ir naudok savo ssid const char* password = "some_password"; // pakeiskite tai, kad naudotumėte savo slaptažodį int sleepTime = 100;

// „Webhooks IFaker“kūrėjas

const char* serveris = "maker.ifttt.com";

// IFTTT URL šaltinis

const char* resource = "/trigger/SOME_SERVICE_NAME/su/key/SOME_API_KEY"; // Būtinai naudokite savo paslaugos pavadinimą ir API raktą.

String doorStatus = "Uždarytas";

nepastovi bool stateChanged = false;

// Jei miegate valandas, nustatykite intervalą valandomis * 60 minučių * 60 sekundžių * 1000 milisekundžių

const ilgas intervalas = 1,0 * 60 * 60 * 1000; // 1 valanda nepasirašytas senas ankstesnisMillis = 0 - (2 * intervalas);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); „pinMode“(„DOORPIN“, „INPUT“); // Durų jutiklis dht.begin (); WiFi.begin (ssid, slaptažodis);

Serial.print ("\ nJungiamasi..");

while (WiFi.status ()! = WL_CONNECTED) {delay (1000); Serijinis atspaudas ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = tiesa; Serial.println ("Tikrina duris!"); if (digitalRead (DOORPIN) == HIGH) // Patikrinkite, ar durys atidarytos {Serial.println ("Durys uždarytos!"); doorStatus = "Uždaryta"; } else {Serial.println ("Durys atidarytos!"); doorStatus = "Atidaryta"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Patikrinkite „WiFi“ryšio būseną // Temperatūros ar drėgmės skaitymas trunka apie 250 milisekundžių! // Jutiklio rodmenys taip pat gali būti iki 2 sekundžių seno (jo labai lėtas jutiklis) float h = dht.readHumidity (); // Skaityti temperatūrą kaip Celsijų (numatytoji) float t = dht.readTemperature (); // Skaityti temperatūrą kaip Farenheitą (isFahrenheit = true) float f = dht.readTemperature (true); // Patikrinkite, ar nepavyko nuskaityti, ir išeikite anksčiau (bandykite dar kartą). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Nepavyko nuskaityti iš DHT jutiklio!"); // Serijos.spaudas ("."); // Nepavyko nuskaityti iš DHT jutiklio! grįžti; } // Apskaičiuoti šilumos indeksą Farenheitu (numatytasis) float hif = dht.computeHeatIndex (f, h); // Apskaičiuoti šilumos indeksą Celsijaus (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temperatūra:"); Serijinis atspaudas (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print („Šilumos indeksas:“); Serijinis atspaudas (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print („Drėgmė:“); Serijinis.println (h);

if (digitalRead (DOORPIN) == HIGH) // Patikrinkite, ar durys atidarytos

{Serial.println („Durys uždarytos!“); doorStatus = "Uždaryta"; } else {Serial.println ("Durys atidarytos!"); doorStatus = "Atidaryta"; } Styga jsonObject = Styga ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTP klientas http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (serveris); http.addHeader („Content-Type“, „application/json“); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Uždaryti ryšį

stateChanged = false;

int sleepTimeInMinutes = intervalas / 1000 /60; Serial.print ("\ n / nEik miegoti"); Serial.print (sleepTimeInMinutes); Serial.println ("minutė (s) …"); }}

void loop () {

nepasirašyta ilga srovėMillis = milis (); vėlavimas (4000); // Jei peržengėme prabėgusį laiką, tada priverskite patikrinti duris ir temp. if (currentMillis - previousMillis> = intervalas) {stateChanged = true; previousMillis = dabartinisMillis; Serial.print (skaičius ++); Serial.println (") Tikrinama dėl praleisto laiko!"); } else if (stateChanged) {Serial.print (skaičius ++); Serial.println (") Tikrinama dėl būsenos pasikeitimo!"); }

// Jei būsena pasikeitė, patikrinkite duris ir temp.

if (stateChanged) {checkStatus (); }

vėlavimas (miego laikas);

}

20 žingsnis: Rezultatai

Rezultatai
Rezultatai

Įkėlę šaltinio kodą atlikdami ankstesnį veiksmą, turėtumėte gauti tokius rezultatus, kaip parodyta aukščiau.

21 žingsnis: kreditai

„Random Nerd Tutorials“radau daug naudingų patarimų ir norėčiau jiems padėkoti už visą pagalbą. Ypač jų puiki pamoka apie ESP32 ESP8266 paskelbti jutiklių rodmenis „Google“skaičiuoklėse, kuriomis pagrįstos pagrindinės šios instrukcijos dalys.

Be to, „TheCircuit“DHT11 Instructable padėjo man suprasti, kaip naudoti šį labai nebrangų, bet įdomų mažą jutiklį.

Be to, yra daug vadovėlių, skirtų jūsų durų stebėjimui, pvz., „Garage Door Monitor“ir dar vienas iš „Random Nerd Tutorials“. Aš panaudojau jų gabalėlius, kad padėčiau suprasti, kaip tinkamai įjungti nendrių jungiklį.

Galiausiai, turėdamas šią informaciją ir kitą informaciją, kurią radau internete, galėjau sukurti mano poreikius atitinkančią sistemą. Tikiuosi, kad ši instrukcija jums bus naudinga ir sukursite vieną.

Rekomenduojamas: