Sadržaj:

Projekt zapisivanja statusa vrata i temperature: 21 korak
Projekt zapisivanja statusa vrata i temperature: 21 korak

Video: Projekt zapisivanja statusa vrata i temperature: 21 korak

Video: Projekt zapisivanja statusa vrata i temperature: 21 korak
Video: «Феномен исцеления» — Документальный фильм — Часть 1 2024, Novembar
Anonim
Projekt zapisničara statusa vrata i temperature
Projekt zapisničara statusa vrata i temperature

Ovaj Instructable će vam pokazati kako napraviti jednostavan zapisnik stanja vrata i temperature za manje od 10,00 USD pomoću ESP8266 NodeMCU, DHT11 senzora temperature i vlažnosti, prekidača za vrata/prozore, otpornika od 10K ohma i neke žice za spajanje.

Geneza ovog projekta proizašla je iz moje želje da napravim više kućne automatizacije s Arduino pločom. Budući da sam puno čitao o Arduino kompatibilnom EPS8266 NodeMCU -u, odlučio sam da bi ova ploča bila savršena niskobudžetna ploča za eksperimentiranje. Nakon pretraživanja Interneta za projekte kućne automatizacije koristeći ploče ESP8266, odlučio sam se za svoj prvi pokušaj kombiniranja zapisnika o temperaturi i stanju vrata. Na kraju će se ovaj projekt kombinirati sa servo motorima, senzorima vlage i drugom elektronikom za automatizaciju male zelene kuće koju je moj djed projektirao i izgradio prije 50 godina. Senzor temperature će se koristiti za utvrđivanje treba li uključiti ili isključiti sustav grijanja, kao i signalizirati servo pogonima da otvore i zatvore ventilacijski sustav po potrebi. Stanje ventilacijskog sustava nadzirat će se upotrebom magnetnih trska. Konačno, senzori vlage će se koristiti za automatizaciju sistema zalijevanja.

Korak 1: Odricanje odgovornosti

Samo brzo odricanje od odgovornosti kako bismo izjavili da ne preuzimamo nikakvu odgovornost za sve što se dogodi kao rezultat slijeđenja ovih uputa. Uvijek je najbolje slijediti upute proizvođača i sigurnosne listove pri izgradnji bilo čega, pa se u tim dokumentima obratite za bilo koji dio i alat koji koristite za izradu vlastitih. Mi samo pružamo informacije o koracima koje smo koristili za stvaranje naših. Mi nismo profesionalci. Zapravo, 2 od 3 osobe koje su učestvovale u ovoj izgradnji su djeca.

Korak 2: Postavite besplatni IFTTT račun

Postavljanje besplatnog IFTTT računa
Postavljanje besplatnog IFTTT računa

Ako ga već nemate, sada je vrijeme za postavljanje besplatnog IFTTT računa odlaskom na njihovu početnu stranicu. IFTTT označava If This Then That i besplatna je platforma koja vam omogućuje povezivanje internetskih usluga na nove načine omogućuju vam da te usluge iskoristite na nove načine. Za ovaj projekt koristit ćemo IFTTT kako bismo omogućili ESP8266 da evidentira status vrata preko sklopke sa trstikom, a temperaturu i vlagu putem senzora DHT11 u dokumentu Google tablice.

Korak 3: Kreirajte IFTTT Applet

Napravite IFTTT Applet
Napravite IFTTT Applet

Dok ste još u IFTTT -u, prijeđite na odjeljak „Moji apleti“i kreirajte novi aplet klikom na gumb „Novi aplet“.

Korak 4: Konfigurirajte "ovaj" dio vašeg apleta

Konfigurirajte
Konfigurirajte

Kliknite na riječ „ova“koja je plave boje - kako je istaknuto na gornjoj slici.

Korak 5: Dodajte uslugu WebHooks u svoj applet

Dodajte uslugu WebHooks u svoj aplet
Dodajte uslugu WebHooks u svoj aplet

Na traci za pretraživanje potražite uslugu “Webhooks” i odaberite ikonu Webhooks.

Kada pronađete uslugu "Webhooks", kliknite na nju.

Korak 6: Postavite okidač za primanje web zahtjeva

Postavite okidač za primanje web zahtjeva
Postavite okidač za primanje web zahtjeva

Odaberite okidač "Primanje web zahtjeva".

Korak 7: Navedite naziv događaja

Navedite naziv događaja
Navedite naziv događaja

U okvir za tekst unesite svoj novi aplet s nazivom događaja. Odabrao sam "Data Logger", ali možete odabrati šta god želite.

Korak 8: Konfigurirajte "taj" dio vašeg apleta

Konfigurirajte
Konfigurirajte

Kliknite na riječ „ta“koja je plave boje - kako je istaknuto na gornjoj slici.

Korak 9: Postavite akcijsku uslugu

Postavite akcijsku uslugu
Postavite akcijsku uslugu

U okviru za pretraživanje potražite uslugu „Google tablice“i kliknite ikonu Google tablice.

Korak 10: Povežite se s Google tablicama

Povežite se s Google tablicama
Povežite se s Google tablicama

Ako to već niste učinili, morat ćete povezati svoj IFTTT račun s Google tablicama. Pritisnite gore prikazano dugme Povezivanje i slijedite upute na ekranu.

Korak 11: Odaberite radnju

Odaberite radnju
Odaberite radnju

Kliknite na "Dodaj red u proračunsku tablicu".

Korak 12: Postavite akciju

Postavite radnju
Postavite radnju

Navedite ime u tekstualnom okviru "Naziv proračunske tablice". Odlučio sam koristiti "Data_Logger" za dosljednost. Ostavite ostatak postavke na miru (možete eksperimentirati s postavkama u neko drugo vrijeme), a zatim pritisnite gumb "Kreiraj akciju" pri dnu ekrana.

Korak 13: Pregledajte i dovršite svoj aplet

Pregledajte i dovršite svoj programčić
Pregledajte i dovršite svoj programčić

Nakon što ste zadovoljni konfiguracijom apleta, pritisnite dugme "Završi".

Korak 14: Dohvatite kasnije potrebne informacije o konfiguraciji

Dohvatite informacije o konfiguraciji potrebne kasnije
Dohvatite informacije o konfiguraciji potrebne kasnije

Kliknite na "Webhooks" kako je gore istaknuto.

Korak 15: Pređite na dokumentaciju Webhooks za API ključ

Pređite na dokumentaciju Webhooks za API ključ
Pređite na dokumentaciju Webhooks za API ključ

Možda zvuči čudno, ali kliknite na vezu Dokumentacija u gornjem desnom kutu da biste prešli na stranicu sa svojim jedinstvenim API ključem.

Korak 16: Sačuvajte API ključ

Sačuvajte API ključ
Sačuvajte API ključ
Sačuvajte API ključ
Sačuvajte API ključ

Prvi red ekrana Dokumentacija prikazuje vaš jedinstveni API ključ. Kopirajte i spremite ovaj ključ za kasniju upotrebu.

Također je dobra ideja isprobati aplet ovdje. Ne zaboravite promijeniti {event} u Data_Logger ili kako god ste nazvali svoj događaj i dodajte neke podatke u 3 prazne vrijednosti, a zatim kliknite gumb "Testiraj" pri dnu stranice. Trebali biste vidjeti zelenu poruku koja kaže "Događaj je pokrenut". U tom slučaju prijeđite na Google dokumente i potvrdite da su se podaci koje ste unijeli na testnu stranicu prikazali u dokumentu Google tablice.

Korak 17: Skupite komponente

Skupite komponente
Skupite komponente
Skupite komponente
Skupite komponente
Skupite komponente
Skupite komponente

Trebat će vam samo nekoliko dijelova.

1) ESP8266 NodeMcu razvojna ploča

2) DHT11 Senzor temperature/vlažnosti

3) Reed prekidač za vrata/prozore

4) 10k ohmski otpornik

5) Priključna žica

Korak 18: Sastavite komponente

1) Spojite jedan od 3v3 pina na ESP8266 sa vcc pinom na DHT11.

2) Spojite jedan od igle za uzemljenje na ESP8266 sa iglom za uzemljenje na DHT11.

3) Spojite pin D4 (zvani pin 2 u IDE -u) na ESP8266 na pin za podatke na DHT11.

4) Spojite još jedan 3v3 pin na ESP8266 s jedne strane prekidača vrata/prozora.

5) Spojite pin D5 (poznat i kao pin 14 u IDE -u) na ESP8266 na drugu stranu trstičnog prekidača vrata/prozora i također ga spojite na jednu stranu 10k ohmskog otpornika.

6) Spojite drugu stranu 10k ohmskog otpornika na drugi pin za uzemljenje na ESP8266.

Za odabir pinova ESP8266 pogledajte ovaj korisni dijagram ili vrlo koristan video zapis.

Korak 19: Napišite Arduino kod

Napišite Arduino kod
Napišite Arduino kod

Kopirajte i zalijepite donji kod u svoj Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // na koji smo digitalni pin povezani

#define DOORPIN 14 // koji digitalni pin je na prekidaču vrata.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int broj = 1;

const char* ssid = "some_ssid"; // promijenite ovo kako biste koristili svoj ssid const char* password = "some_password"; // promijenite ovo kako biste koristili lozinku int sleepTime = 100;

// Maker Webhooks IFTTT

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

// IFTTT URL resurs

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Obavezno koristite naziv usluge i svoj api ključ.

String doorStatus = "Zatvoreno";

volatile bool stateChanged = false;

// Ako spavate satima, postavite interval za hr * 60 minuta * 60 sekundi * 1000 milisekundi

const long interval = 1,0 * 60 * 60 * 1000; // 1 sat bez potpisa dugački previousMillis = 0 - (2 * interval);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Senzor vrata dht.begin (); WiFi.begin (ssid, lozinka);

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

while (WiFi.status ()! = WL_CONNECTED) {kašnjenje (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println ("Provjera vrata!"); if (digitalRead (DOORPIN) == HIGH) // Provjerite jesu li vrata otvorena {Serial.println ("Vrata su zatvorena!"); doorStatus = "Zatvoreno"; } else {Serial.println ("Vrata su otvorena!"); doorStatus = "Otvoreno"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Provjerite status WiFi veze // Očitavanje temperature ili vlažnosti traje oko 250 milisekundi! // Očitavanja senzora mogu biti i do 2 sekunde "stara" (to je vrlo spor senzor) plovak h = dht.readHumidity (); // Očitavanje temperature kao Celsius (zadano) float t = dht.readTemperature (); // Očitajte temperaturu kao Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Provjerite da li neko čitanje nije uspjelo i izađite ranije (da pokušate ponovo). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Nije uspjelo čitanje sa DHT senzora!"); //Serial.print ("."); // Očitavanje sa DHT senzora nije uspjelo! return; } // Izračunajte toplinski indeks u Fahrenheitu (zadani) float hif = dht.computeHeatIndex (f, h); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temperatura:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Indeks topline:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Vlažnost:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Provjerite jesu li vrata otvorena

{Serial.println ("Vrata su zatvorena!"); doorStatus = "Zatvoreno"; } else {Serial.println ("Vrata su otvorena!"); doorStatus = "Otvoreno"; } String jsonObject = String ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (server); http.addHeader ("Vrsta sadržaja", "aplikacija/json"); http. POST (jsonObject); http.writeToStream (& serijski); http.end (); // Zatvorite vezu

stateChanged = false;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / nIdi na spavanje za"); Serial.print (sleepTimeInMinutes); Serial.println ("minute (i) …"); }}

void loop () {{100} {101}

bez potpisa duga strujaMillis = millis (); kašnjenje (4000); // Ako smo premašili proteklo vrijeme, prisilno provjerite vrata i temp. if (currentMillis - previousMillis> = interval) {stateChanged = true; previousMillis = trenutniMillis; Serial.print (broj ++); Serial.println (") Provjera zbog proteklog vremena!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Provjera zbog promjene stanja!"); }

// Ako se stanje promijenilo, provjerite vrata i temp.

if (stateChanged) {checkStatus (); }

kašnjenje (vrijeme spavanja);

}

Korak 20: Rezultati

Rezultati
Rezultati

Nakon što učitate izvorni kod u prethodnom koraku, trebali biste imati rezultate poput gore prikazanog primjera.

Korak 21: Krediti

Našao sam mnogo korisnih savjeta i savjeta iz udžbenika Random Nerd Tutorials i želio bih im zahvaliti na svoj pomoći. Posebno njihov odličan vodič o ESP32 ESP8266 Objavljivanje očitanja senzora u Google tablicama na kojima se temelje glavni dijelovi ovog uputstva.

Osim toga, DHT11 Instructable iz TheCircuita pomogao mi je da shvatim kako koristiti ovaj vrlo jeftin, ali zanimljiv mali senzor.

Nadalje, postoje mnogi vodiči koji se bave nadzorom vaših vrata, poput monitora garažnih vrata i još jedan iz udžbenika Random Nerd Tutorials. Koristio sam ove komadiće kako bih razumio kako ispravno raditi prekidač trske.

Konačno, pomoću ovih podataka, kao i drugih detalja koje sam pronašao na internetu, uspio sam stvoriti sistem koji je odgovarao mojim potrebama. Nadam se da vam je ovaj Instructable koristan i da ćete izgraditi svoj vlastiti.

Preporučuje se: