Indholdsfortegnelse:

Dør- og temperaturstatusloggerprojekt: 21 trin
Dør- og temperaturstatusloggerprojekt: 21 trin

Video: Dør- og temperaturstatusloggerprojekt: 21 trin

Video: Dør- og temperaturstatusloggerprojekt: 21 trin
Video: Dør og Vindue indefra 2024, December
Anonim
Dør- og temperaturstatusloggerprojekt
Dør- og temperaturstatusloggerprojekt

Denne instruktør viser dig, hvordan du laver en simpel dør- og temperaturstatuslogger til under $ 10,00 ved hjælp af en ESP8266 NodeMCU, en DHT11 temperatur- og fugtighedsføler, en dør-/vinduesrørkontakt, en 10K ohm modstand og noget tilslutningstråd.

Oprettelsen af dette projekt kom fra mit ønske om at lave mere hjemmeautomatisering med Arduino -kortet, da jeg havde læst meget om det Arduino -kompatible EPS8266 NodeMCU, besluttede jeg, at dette board ville være det perfekte billige bord til at eksperimentere med. Efter at have søgt på internettet efter hjemmeautomatiseringsprojekter ved hjælp af ESP8266 -kortene, besluttede jeg mig for at kombinere en temperatur- og dørstatuslogger til mit første forsøg. Til sidst vil dette projekt blive kombineret med servoer, fugtfølere og anden elektronik til at automatisere et lille drivhus, min bedstefar designede og byggede for 50 år siden. Temperatursensoren bruges til at bestemme, om varmesystemet skal kobles til eller fra, samt signalere servoer til at åbne og lukke ventilationssystemet, når det er nødvendigt. Udluftningssystemets tilstand vil blive overvåget ved brug af de magnetiske rørkontakter. Endelig vil fugtsensorerne blive brugt til at automatisere et vandingssystem.

Trin 1: Ansvarsfraskrivelse

Bare en hurtig ansvarsfraskrivelse for at oplyse, at vi ikke tager noget ansvar for noget, der sker som følge af at følge dette instruerbare. Det er altid bedst at følge producentens instruktioner og sikkerhedsark, når du bygger noget, så konsulter disse dokumenter for alle de dele og værktøjer, du bruger til at bygge dine egne. Vi giver simpelthen bare oplysninger om de trin, vi brugte til at oprette vores. Vi er ikke professionelle. Faktisk er 2 ud af 3 af de personer, der deltog i dette byggeri, børn.

Trin 2: Konfigurer gratis IFTTT -konto

Opret gratis IFTTT -konto
Opret gratis IFTTT -konto

Hvis du ikke allerede har en, er det nu tid til at oprette en gratis IFTTT -konto ved at gå til deres hjemmeside. IFTTT står for If This Then That og er en gratis platform, der giver dig mulighed for at forbinde internetbaserede tjenester på nye måder til giver dig mulighed for at udnytte disse tjenester på nye måder. Til dette projekt vil vi bruge IFTTT til at tillade en ESP8266 at logge status for en dør via en rørkontakt og temperatur og fugtighed via DHT11 -sensoren i et Google Sheets -dokument.

Trin 3: Opret en IFTTT -applet

Opret en IFTTT -applet
Opret en IFTTT -applet

Mens du stadig er i IFTTT, skal du gå videre til afsnittet "Mine appletter" og oprette en ny applet ved at klikke på knappen "Ny applet".

Trin 4: Konfigurer "denne" del af din applet

Konfigurer
Konfigurer

Klik på "dette" ord, der er i en blå farve - som fremhævet i figuren ovenfor.

Trin 5: Føj WebHooks -tjenesten til din applet

Føj WebHooks -tjenesten til din applet
Føj WebHooks -tjenesten til din applet

I søgelinjen skal du søge efter "Webhooks" -tjenesten og vælge Webhooks -ikonet.

Når du har fundet "Webhooks" -tjenesten, skal du klikke på den.

Trin 6: Konfigurer modtageren af en webanmodning

Konfigurer modtageren af en webanmodning
Konfigurer modtageren af en webanmodning

Vælg udløseren "Modtag en webanmodning".

Trin 7: Angiv et begivenhedsnavn

Angiv et begivenhedsnavn
Angiv et begivenhedsnavn

I tekstboksen skal du give din nye applet et hændelsesnavn. Jeg valgte "Data Logger", men du kan vælge, hvad du vil.

Trin 8: Konfigurer "den" del af din applet

Konfigurer
Konfigurer

Klik på "det" ord, der er i en blå farve - som fremhævet i figuren ovenfor.

Trin 9: Konfigurer en handlingstjeneste

Opret en handlingstjeneste
Opret en handlingstjeneste

Søg efter "Google Sheets" -tjenesten i søgefeltet, og klik på ikonet Google Sheets.

Trin 10: Opret forbindelse til Google Sheets

Opret forbindelse til Google Sheets
Opret forbindelse til Google Sheets

Hvis du ikke allerede har gjort det, skal du ikke forbinde din IFTTT -konto til Google Sheets. Tryk på knappen Tilslut som vist ovenfor, og følg vejledningen på skærmen.

Trin 11: Vælg en handling

Vælg en handling
Vælg en handling

Klik på "Tilføj række til regneark".

Trin 12: Konfigurer handlingen

Opsæt handlingen
Opsæt handlingen

Angiv et navn i tekstfeltet "Regnearksnavn". Jeg vælger at bruge "Data_Logger" til konsistens. Lad resten af indstillingen være i fred (du kan eksperimentere med disse indstillinger på et andet tidspunkt), og tryk derefter på knappen "Opret handling" nederst på skærmen.

Trin 13: Gennemgå og færdiggør din applet

Gennemgå og færdiggør din applet
Gennemgå og færdiggør din applet

Når du er tilfreds med din applet -konfiguration, skal du trykke på knappen "Afslut".

Trin 14: Hent konfigurationsoplysninger, der er nødvendige senere

Hent konfigurationsoplysninger, der er nødvendige senere
Hent konfigurationsoplysninger, der er nødvendige senere

Klik på "Webhooks" som fremhævet ovenfor.

Trin 15: Fortsæt til Webhooks -dokumentationen for API -nøglen

Fortsæt til Webhooks -dokumentationen for API -nøglen
Fortsæt til Webhooks -dokumentationen for API -nøglen

Det kan virke underligt, men klik på linket Dokumentation øverst til højre for at fortsætte til siden med din unikke API -nøgle.

Trin 16: Gem API -nøglen

Gem API -nøglen
Gem API -nøglen
Gem API -nøglen
Gem API -nøglen

Den første linje på dokumentationsskærmen viser din unikke API -nøgle. Kopier og gem denne nøgle til senere brug.

Det er også en god idé at teste appleten her. Husk at ændre {event} til Data_Logger eller hvad du end har navngivet din begivenhed, og tilføj nogle data til de 3 tomme værdier, og klik derefter på knappen "Test det" nederst på siden. Du bør se en grøn meddelelse, der siger "Begivenhed er udløst". Hvis det er tilfældet, skal du gå videre til Google Docs og bekræfte, at de data, du har indtastet på testsiden, blev vist i Google Sheets -dokumentet.

Trin 17: Saml komponenterne

Saml komponenterne
Saml komponenterne
Saml komponenterne
Saml komponenterne
Saml komponenterne
Saml komponenterne

Du skal kun bruge et par dele.

1) ESP8266 NodeMcu Development Board

2) DHT11 temperatur/luftfugtighedssensor

3) Dør-/vinduesrørkontakt

4) 10k Ohm modstand

5) Tilslutningstråd

Trin 18: Saml komponenterne

1) Tilslut en af 3v3 -stiften på ESP8266 til vcc -stiften på DHT11.

2) Tilslut en af jordstifterne på ESP8266 til jordstiften på DHT11.

3) Tilslut pin D4 (alias pin 2 i IDE) på ESP8266 til data pin på DHT11.

4) Tilslut en anden 3v3 -pin på ESP8266 til den ene side af dør-/vinduesrørkontakten.

5) Tilslut pin D5 (alias pin 14 i IDE) på ESP8266 til den anden side af dør-/vinduesrørkontakten, og slut den også til den ene side af 10k ohm -modstanden.

6) Tilslut den anden side af 10k ohm modstanden til en anden jordstift på ESP8266.

For ESP8266 pin valg, se dette nyttige diagram eller den meget nyttige video.

Trin 19: Skriv Arduino -koden

Skriv Arduino -koden
Skriv Arduino -koden

Kopier og indsæt koden herunder i din Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // hvilken digital pin vi er forbundet til

#define DOORPIN 14 // hvilken digital pin dørkontakten er tændt.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int tæller = 1;

const char* ssid = "some_ssid"; // ændre dette for at bruge dit ssid const char* password = "some_password"; // ændre dette for at bruge din adgangskode int sleepTime = 100;

// Maker Webhooks IFTTT

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

// IFTTT URL -ressource

const char* resource = "/trigger/SOME_SERVICE_NAME/med/key/SOME_API_KEY"; // Sørg for at bruge dit servicenavn og din api -nøgle.

String doorStatus = "Lukket";

flygtig bool stateChanged = false;

// Hvis du sover i timevis, skal du indstille interval med timer * 60 minutter * 60 sekunder * 1000 millisekunder

konstant langt interval = 1,0 * 60 * 60 * 1000; // 1 time usigneret lang previousMillis = 0 - (2 * interval);

ugyldig opsætning () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Dørsensor dht.begin (); WiFi.begin (ssid, adgangskode);

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

mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println ("Kontrol af døren!"); if (digitalRead (DOORPIN) == HIGH) // Kontroller om døren er åben {Serial.println ("Døren er lukket!"); doorStatus = "Lukket"; } else {Serial.println ("Døren er åben!"); doorStatus = "Åbnet"; }}

void checkStatus () {

hvis (WiFi.status () == WL_CONNECTED) {// Kontroller WiFi -forbindelsesstatus // Læsningstemperatur eller fugtighed tager cirka 250 millisekunder! // Sensoraflæsninger kan også være op til 2 sekunder 'gamle' (det er en meget langsom sensor) float h = dht.readHumidity (); // Læs temperaturen som Celsius (standard) float t = dht.readTemperature (); // Læs temperaturen som Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Kontroller, om nogen læsning mislykkedes, og afslut tidligt (for at prøve igen). hvis (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Kunne ikke læse fra DHT -sensor!"); //Serial.print ("."); // Kunne ikke læse fra DHT -sensor! Vend tilbage; } // Beregn varmeindeks i Fahrenheit (standard) float hif = dht.computeHeatIndex (f, h); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temperatur:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Varmeindeks:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Fugtighed:"); Serial.println (h);

hvis (digitalRead (DOORPIN) == HIGH) // Kontroller om døren er åben

{Serial.println ("Døren er lukket!"); doorStatus = "Lukket"; } else {Serial.println ("Døren er åben!"); doorStatus = "Åbnet"; } String jsonObject = String ("{" værdi1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" værdi2 / ": \" " + h +" / ", \" værdi3 / ": \" " + dørStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (server); http.addHeader ("Indholdstype", "applikation/json"); http. POST (jsonObject); http.writeToStream (& seriel); http.end (); // Luk forbindelse

stateChanged = falsk;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / nGå i dvale for"); Serial.print (sleepTimeInMinutes); Serial.println ("minut (er) …"); }}

void loop () {

usigneret lang strømMillis = millis (); forsinkelse (4000); // Hvis vi overskred den forløbne tid, så tving en kontrol af døren og temp. hvis (currentMillis - previousMillis> = interval) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") Kontrol på grund af forløbet tid!"); } ellers hvis (stateChanged) {Serial.print (count ++); Serial.println (") Kontrol på grund af tilstandsændring!"); }

// Hvis tilstanden ændres, skal du kontrollere døren og temp.

hvis (stateChanged) {checkStatus (); }

forsinkelse (sleepTime);

}

Trin 20: Resultater

Resultater
Resultater

Når du har uploadet kildekoden i det foregående trin, skal du have resultater som eksemplet vist ovenfor.

Trin 21: Kreditter

Jeg fandt en masse nyttige tip og tips fra Random Nerd Tutorials og vil gerne takke dem for al deres hjælp. Især deres fremragende vejledning om ESP32 ESP8266 Udgiv sensorlæsninger til Google Sheets, som store dele af denne instruktionsbog er baseret på.

Derudover hjalp DHT11 Instructable fra TheCircuit mig med at forstå, hvordan jeg bruger denne meget billige, men interessante lille sensor.

Desuden er der mange selvstudier om overvågning af dine døre som Garage Door Monitor og en anden fra Random Nerd Tutorials. Jeg brugte bits og stykker af disse til at hjælpe mig med at forstå, hvordan jeg får min reed switch til at fungere korrekt.

Endelig kunne jeg med disse oplysninger såvel som andre detaljer, jeg fandt på Internettet, oprette et system, der opfyldte mine behov. Jeg håber, at du finder denne Instructable nyttig og bygger en af dine egne.

Anbefalede: