Innholdsfortegnelse:

Dør- og temperaturstatusloggerprosjekt: 21 trinn
Dør- og temperaturstatusloggerprosjekt: 21 trinn

Video: Dør- og temperaturstatusloggerprosjekt: 21 trinn

Video: Dør- og temperaturstatusloggerprosjekt: 21 trinn
Video: Dør- og vindustyper - Garden 2024, November
Anonim
Dør- og temperaturstatusloggerprosjekt
Dør- og temperaturstatusloggerprosjekt

Denne instruksen viser deg hvordan du lager en enkel dør- og temperaturstatuslogger for under $ 10,00 ved hjelp av en ESP8266 NodeMCU, en DHT11 temperatur- og fuktighetssensor, en dør-/vindusrørbryter, en 10K ohm motstand og litt tilkoblingstråd.

Opprinnelsen til dette prosjektet kom fra mitt ønske om å gjøre mer hjemmeautomatisering med Arduino -brettet, siden jeg hadde lest mye om Arduino -kompatible EPS8266 NodeMCU, bestemte jeg meg for at dette brettet ville være det perfekte lavprisbrettet å eksperimentere med. Etter å ha søkt på internett etter hjemmeautomatiseringsprosjekter ved bruk av ESP8266 -kortene, bestemte jeg meg for å kombinere en temperatur- og dørstatuslogger for mitt første forsøk. Etter hvert vil dette prosjektet bli kombinert med servoer, fuktighetssensorer og annen elektronikk for å automatisere et lite grønt hus som bestefaren min designet og bygde for 50 år siden. Temperaturføleren vil bli brukt til å avgjøre om varmesystemet skal kobles inn eller ut, samt signalisere servoene om å åpne og lukke ventilasjonssystemet når det er nødvendig. Tilstanden til ventilasjonssystemet vil bli overvåket ved bruk av magnetiske sivbrytere. Til slutt vil fuktsensorene brukes til å automatisere et vanningssystem.

Trinn 1: Ansvarsfraskrivelse

Bare en rask ansvarsfraskrivelse for å si at vi ikke tar noe ansvar for noe som skjer som følge av å følge dette instruerbare. Det er alltid best å følge produsentens instruksjoner og sikkerhetsark når du bygger noe, så ta kontakt med dokumentene for alle delene og verktøyene du bruker til å bygge dine egne. Vi gir ganske enkelt informasjon om trinnene vi brukte for å lage vår. Vi er ikke profesjonelle. Faktisk er 2 av 3 av personene som deltok i dette bygget barn.

Trinn 2: Opprett gratis IFTTT -konto

Opprett gratis IFTTT -konto
Opprett gratis IFTTT -konto

Hvis du ikke allerede har en, er det nå på tide å sette opp en gratis IFTTT -konto ved å gå til hjemmesiden deres. IFTTT står for If This Then That og er en gratis plattform som lar deg koble til internettbaserte tjenester på nye måter å lar deg dra nytte av disse tjenestene på nye måter. For dette prosjektet skal vi bruke IFTTT for å la en ESP8266 logge status for en dør via en sivbryter og temperatur og fuktighet via DHT11 -sensoren i et Google Sheets -dokument.

Trinn 3: Lag en IFTTT -applet

Lag en IFTTT -applet
Lag en IFTTT -applet

Mens du fortsatt er i IFTTT, går du til delen "Mine appletter" og oppretter en ny applet ved å klikke på "Ny applett" -knappen.

Trinn 4: Konfigurer "denne" delen av appen din

Konfigurer
Konfigurer

Klikk på "dette" ordet som er i en blå farge - som markert i figuren ovenfor.

Trinn 5: Legg til WebHooks -tjenesten i appen din

Legg til WebHooks -tjenesten i appen din
Legg til WebHooks -tjenesten i appen din

I søkefeltet, søk etter "Webhooks" -tjenesten og velg Webhooks -ikonet.

Når du finner "Webhooks" -tjenesten, klikker du på den.

Trinn 6: Konfigurer mottakeren av en webforespørsel

Konfigurer mottakeren av en webforespørsel
Konfigurer mottakeren av en webforespørsel

Velg utløseren "Motta en nettforespørsel".

Trinn 7: Oppgi et hendelsesnavn

Oppgi et hendelsesnavn
Oppgi et hendelsesnavn

I tekstboksen gir du den nye appleten et hendelsesnavn. Jeg valgte "Data Logger", men du kan velge hva du vil.

Trinn 8: Konfigurer "den" delen av appen din

Konfigurer
Konfigurer

Klikk på "det" ordet som er i en blå farge - som markert i figuren ovenfor.

Trinn 9: Sett opp en handlingstjeneste

Sett opp en handlingstjeneste
Sett opp en handlingstjeneste

Søk etter "Google Regneark" -tjenesten i søkefeltet, og klikk på Google Regn -ikonet.

Trinn 10: Koble til Google Regneark

Koble til Google Regneark
Koble til Google Regneark

Hvis du ikke allerede har gjort det, må du ikke koble IFTTT -kontoen din til Google Regneark. Trykk på Koble-knappen som vises ovenfor, og følg instruksjonene på skjermen.

Trinn 11: Velg en handling

Velg en handling
Velg en handling

Klikk på "Legg rad til regneark".

Trinn 12: Konfigurer handlingen

Sett opp handlingen
Sett opp handlingen

Oppgi et navn i tekstboksen "Regnearknavn". Jeg velger å bruke "Data_Logger" for konsistens. La resten av innstillingen være i fred (du kan eksperimentere med innstillingen på et annet tidspunkt), og trykk deretter på "Opprett handling" -knappen nederst på skjermen.

Trinn 13: Gjennomgå og avslutt appen din

Gjennomgå og fullfør appletten din
Gjennomgå og fullfør appletten din

Når du er fornøyd med appletkonfigurasjonen, trykker du på "Fullfør" -knappen.

Trinn 14: Hent konfigurasjonsinformasjon som trengs senere

Hent konfigurasjonsinformasjon som trengs senere
Hent konfigurasjonsinformasjon som trengs senere

Klikk på "Webhooks" som markert ovenfor.

Trinn 15: Fortsett til Webhooks -dokumentasjonen for API -nøkkelen

Fortsett til Webhooks -dokumentasjonen for API -nøkkelen
Fortsett til Webhooks -dokumentasjonen for API -nøkkelen

Det kan virke rart, men klikk på koblingen Dokumentasjon øverst til høyre for å gå videre til siden med din unike API -nøkkel.

Trinn 16: Lagre API -nøkkelen

Lagre API -nøkkelen
Lagre API -nøkkelen
Lagre API -nøkkelen
Lagre API -nøkkelen

Den første linjen i dokumentasjonsskjermen viser din unike API -nøkkel. Kopier og lagre denne nøkkelen for bruk senere.

Det er også en god idé å teste appleten her. Husk å endre {event} til Data_Logger eller hva du kalte hendelsen, og legg til noen data i de tre tomme verdiene, og klikk deretter på "Test den" -knappen nederst på siden. Du bør se en grønn melding som sier "Hendelse er utløst". Fortsett i så fall til Google Dokumenter og bekreft at dataene du skrev inn på testsiden, ble vist i Google Regneark -dokumentet.

Trinn 17: Samle komponentene

Samle komponentene
Samle komponentene
Samle komponentene
Samle komponentene
Samle komponentene
Samle komponentene

Du trenger bare noen få deler.

1) ESP8266 NodeMcu Development Board

2) DHT11 temperatur/fuktighetssensor

3) Dør/vindus siv bryter

4) 10k Ohm motstand

5) Tilkoblingstråd

Trinn 18: Monter komponentene

1) Koble en av 3v3 -pinnen på ESP8266 til vcc -pinnen på DHT11.

2) Koble en av jordpinnene på ESP8266 til jordpinnen på DHT11.

3) Koble pin D4 (aka pin 2 i IDE) på ESP8266 til datapinnen på DHT11.

4) Koble en annen 3v3 -pinne på ESP8266 til den ene siden av dør-/vindusrørbryteren.

5) Koble pin D5 (aka pin 14 i IDE) på ESP8266 til den andre siden av dør-/vindusrørbryteren og koble den også til den ene siden av 10k ohm -motstanden.

6) Koble den andre siden av 10k ohm motstanden til en annen jordet pinne på ESP8266.

For valg av ESP8266 -pinner, se dette nyttige diagrammet eller den veldig hjelpsomme videoen.

Trinn 19: Skriv Arduino -koden

Skriv Arduino -koden
Skriv Arduino -koden

Kopier og lim inn koden nedenfor i Arduino IDE.

#include #include #include "DHT.h"

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

#define DOORPIN 14 // hvilken digital pinne dørbryteren er på.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "some_ssid"; // endre dette for å bruke ssid const char* password = "some_password"; // endre dette for å bruke passordet int sleepTime = 100;

// Maker Webhooks IFTTT

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

// IFTTT URL -ressurs

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Sørg for å bruke tjenestenavnet og api -nøkkelen.

String doorStatus = "Stengt";

flyktig bool stateChanged = false;

// Hvis du sover i flere timer, angir du intervallet med timer * 60 minutter * 60 sekunder * 1000 millisekunder

const langt intervall = 1,0 * 60 * 60 * 1000; // 1 time usignert lang previousMillis = 0 - (2 * intervall);

ugyldig oppsett () {

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

Serial.print ("\ nKobler til..");

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

void eventTriggered () {

stateChanged = true; Serial.println ("Kontrollerer døren!"); if (digitalRead (DOORPIN) == HIGH) // Sjekk om døren er åpen {Serial.println ("Døren er lukket!"); doorStatus = "Stengt"; } else {Serial.println ("Døren er åpen!"); doorStatus = "Åpnet"; }}

void checkStatus () {

hvis (WiFi.status () == WL_CONNECTED) {// Kontroller WiFi -tilkoblingsstatus // Lesingstemperatur eller fuktighet tar omtrent 250 millisekunder! // Sensoravlesninger kan også være opptil 2 sekunder 'gamle' (det er en veldig treg sensor) float h = dht.readHumidity (); // Les temperaturen som Celsius (standard) float t = dht.readTemperature (); // Les temperaturen som Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Kontroller om noen av lesningene mislyktes, og avslutt tidlig (for å prøve igjen). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Kunne ikke lese fra DHT -sensor!"); //Serial.print ("."); // Kunne ikke lese fra DHT -sensor! komme tilbake; } // 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 ("Fuktighet:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Kontroller om døren er åpen

{Serial.println ("Døren er lukket!"); doorStatus = "Stengt"; } else {Serial.println ("Døren er åpen!"); doorStatus = "Åpnet"; } String jsonObject = String ("{" verdi1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" verdi2 / ": \" " + h +" / ", \" verdi3 / ": \" " + 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 ("Innholdstype", "applikasjon/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Lukk tilkoblingen

stateChanged = false;

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

void loop () {

usignert langstrømMillis = millis (); forsinkelse (4000); // Hvis vi overgikk den forløpte tiden, tving deretter en sjekk av døren og temperaturen. hvis (currentMillis - previousMillis> = intervall) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") Kontrollerer på grunn av forløpt tid!"); } annet hvis (stateChanged) {Serial.print (count ++); Serial.println (") Kontrollerer på grunn av endringer i staten!"); }

// Hvis tilstanden endres, sjekk døren og temperaturen.

hvis (stateChanged) {checkStatus (); }

forsinkelse (sleepTime);

}

Trinn 20: Resultater

Resultater
Resultater

Når du laster opp kildekoden i forrige trinn, bør du ha resultater som eksempelet vist ovenfor.

Trinn 21: studiepoeng

Jeg fant mange nyttige tips og tips fra Random Nerd Tutorials og vil takke dem for all hjelp. Spesielt den utmerkede opplæringen om ESP32 ESP8266 Publiser sensoravlesninger til Google Sheets som store deler av denne instruksjonsboken er basert på.

I tillegg hjalp DHT11 Instructable fra TheCircuit meg med å forstå hvordan jeg bruker denne veldig rimelige, men interessante lille sensoren.

Videre er det mange opplæringsprogrammer som omhandler overvåking av dørene dine, som garasjeportmonitoren og en annen fra Random Nerd Tutorials. Jeg brukte biter av disse for å hjelpe meg å forstå hvordan jeg får sivbryteren til å fungere skikkelig.

Til slutt, med denne informasjonen og andre detaljer jeg fant rundt Internett, var jeg i stand til å lage et system som dekket mine behov. Jeg håper du finner denne Instructable nyttig og bygger en av dine egne.

Anbefalt: