Sadržaj:

Projekt zapisničara statusa vrata i temperature: 21 korak
Projekt zapisničara statusa vrata i temperature: 21 korak

Video: Projekt zapisničara statusa vrata i temperature: 21 korak

Video: Projekt zapisničara statusa vrata i temperature: 21 korak
Video: Игромания! Игровые новости, 28 ноября (PS VR, Project Genom, Nintendo Switch, Monster Hunter) 2024, Prosinac
Anonim
Projekt zapisničara statusa vrata i temperature
Projekt zapisničara statusa vrata i temperature

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

Nastanak ovog projekta došao 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 ploča s niskim troškovima za eksperimentiranje. Nakon što sam na Internetu pretraživao projekte kućne automatizacije pomoću ploča ESP8266, odlučio sam se za svoj prvi pokušaj kombinirati zapisnik o temperaturi i stanju vrata. Na kraju će se ovaj projekt kombinirati sa servo motorima, senzorima vlage i drugom elektronikom kako bi se automatizirala mala zelena kuća koju je moj djed projektirao i izgradio prije 50 godina. Senzor temperature će se koristiti za određ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 pomoću magnetskih trska. Konačno, senzori vlage će se koristiti za automatizaciju sustava zalijevanja.

Korak 1: Odricanje od odgovornosti

Samo brzo odricanje od odgovornosti kako bismo izjavili da NE preuzimamo odgovornost za sve što se dogodi kao posljedica pridržavanja 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 jednostavno samo pružamo informacije o koracima koje smo koristili za stvaranje svojih. Nismo profesionalci. Zapravo, 2 od 3 osobe koje su sudjelovale u ovoj izgradnji su djeca.

Korak 2: Postavljanje besplatnog IFTTT računa

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

Ako ga već nemate, vrijeme je 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 od trske, a temperaturu i vlagu putem senzora DHT11 u dokumentu Google tablice.

Korak 3: Izradite 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 appleta

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 applet
Dodajte uslugu WebHooks u svoj applet

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

Nakon što pronađete uslugu "Webhooks", kliknite je.

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 applet s nazivom događaja. Odabrao sam "Data Logger", ali možete odabrati što god želite.

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

Konfigurirajte
Konfigurirajte

Kliknite na “onu” riječ koja je u plavoj boji - 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.

10. korak: 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 prikazani gumb Povezivanje i slijedite upute na ekranu.

Korak 11: Odaberite radnju

Odaberite radnju
Odaberite radnju

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

Korak 12: Postavite radnju

Postavite radnju
Postavite radnju

Navedite naziv 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 radnju" pri dnu zaslona.

Korak 13: Pregledajte i dovršite svoj programčić

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

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

Korak 14: Dohvatite kasnije potrebne informacije o konfiguraciji

Dohvati podatke o konfiguraciji koji su potrebni kasnije
Dohvati podatke o konfiguraciji koji su potrebni kasnije

Kliknite na "Webhooks" kako je gore istaknuto.

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

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

Možda se čini čudnim, ali kliknite vezu Dokumentacija u gornjem desnom kutu da biste nastavili do stranice sa svojim jedinstvenim API ključem.

Korak 16: Spremite API ključ

Spremite API ključ
Spremite API ključ
Spremite API ključ
Spremite API ključ

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

Također je dobra ideja isprobati applet 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 "Događaj je pokrenut". U tom slučaju prijeđite na Google dokumente i potvrdite da su se podaci koje ste unijeli na testnoj stranici 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) Razvojna ploča ESP8266 NodeMcu

2) DHT11 osjetnik temperature/vlažnosti

3) Reed prekidač vrata/prozora

4) 10k ohmski otpornik

5) Priključna žica

Korak 18: Sastavite komponente

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

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

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

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

5) Spojite pin D5 (zvani 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 upotrijebite naziv svoje 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 dugi interval = 1,0 * 60 * 60 * 1000; // 1 sat bez potpisa dugi previousMillis = 0 - (2 * interval);

void setup () {

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

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

while (WiFi.status ()! = WL_CONNECTED) {odgoda (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 neuspjelo čitanje i prijevremeno izađite (za ponovni pokušaj). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Nije uspjelo čitanje s DHT senzora!"); //Serial.print ("."); // Očitavanje s DHT senzora nije uspjelo! povratak; } // Izračunajte toplinski indeks u Fahrenheitu (zadano) 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:"); Serijski.ispis (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Toplinski indeks:"); Serijski.ispis (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Vlažnost:"); Serijski.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; Niz completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (poslužitelj); 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"); Serial.print (sleepTimeInMinutes); Serial.println ("minute (i) …"); }}

void loop () {{100} {101}

bezznačna 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 (count ++); 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 (); }

odgoda (vrijeme spavanja);

}

Korak 20: Rezultati

Rezultati
Rezultati

Nakon što prenesete izvorni kôd u prethodnom koraku, trebali biste imati rezultate poput gornjeg primjera.

Korak 21: Krediti

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

Osim toga, DHT11 Instructable iz TheCircuita pomogao mi je razumjeti 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č od trske.

Konačno, uz ove podatke, kao i druge detalje koje sam pronašao na Internetu, uspio sam stvoriti sustav koji je odgovarao mojim potrebama. Nadam se da će vam ovaj Instructable biti koristan i izgraditi svoj vlastiti.

Preporučeni: