Inhoudsopgave:

Deur- en temperatuurstatusloggerproject - Ajarnpa
Deur- en temperatuurstatusloggerproject - Ajarnpa

Video: Deur- en temperatuurstatusloggerproject - Ajarnpa

Video: Deur- en temperatuurstatusloggerproject - Ajarnpa
Video: Opmeten van stompe deur en opdekdeur - DeurenGigant 2024, December
Anonim
Deur en Temperatuur Status Logger Project
Deur en Temperatuur Status Logger Project

Deze Instructable laat je zien hoe je een eenvoudige deur- en temperatuurstatuslogger kunt maken voor minder dan $ 10,00 met behulp van een ESP8266 NodeMCU, een DHT11 temperatuur- en vochtigheidssensor, een deur-/raamreedschakelaar, een 10K ohm-weerstand en wat aansluitdraad.

Het ontstaan van dit project kwam voort uit mijn wens om meer domotica te doen met het Arduino-bord. Omdat ik veel had gelezen over de Arduino-compatibele EPS8266 NodeMCU, besloot ik dat dit bord het perfecte goedkope bord zou zijn om mee te experimenteren. Na op internet te hebben gezocht naar domotica-projecten met behulp van de ESP8266-kaarten, besloot ik voor mijn eerste poging een temperatuur- en deurstatuslogger te combineren. Uiteindelijk zal dit project worden gecombineerd met servo's, vochtsensoren en andere elektronica om een kleine kas te automatiseren die mijn grootvader 50 jaar geleden heeft ontworpen en gebouwd. De temperatuursensor wordt gebruikt om te bepalen of het verwarmingssysteem moet worden in- of uitgeschakeld en om de servo's te signaleren om het ventilatiesysteem te openen en te sluiten wanneer dat nodig is. De staat van het ontluchtingssysteem wordt bewaakt door het gebruik van magnetische reed-schakelaars. Ten slotte zullen de vochtsensoren worden gebruikt om een bewateringssysteem te automatiseren.

Stap 1: Disclaimer

Gewoon een korte disclaimer om te verklaren dat we GEEN verantwoordelijkheid nemen voor alles wat er gebeurt als gevolg van het volgen van deze instructable. Het is altijd het beste om de instructies en veiligheidsbladen van de fabrikant te volgen wanneer u iets bouwt, dus raadpleeg die documenten voor alle onderdelen en gereedschappen die u gebruikt om uw eigen onderdelen te bouwen. We geven alleen informatie over de stappen die we hebben gebruikt om de onze te maken. Wij zijn geen professionals. In feite zijn 2 van de 3 van de personen die hebben deelgenomen aan deze build kinderen.

Stap 2: Stel een gratis IFTTT-account in

Gratis IFTTT-account instellen
Gratis IFTTT-account instellen

Als je er nog geen hebt, is het nu het moment om een gratis IFTTT-account in te stellen door naar hun startpagina te gaan. IFTTT staat voor If This Then That en is een gratis platform waarmee je op nieuwe manieren verbinding kunt maken met internetdiensten. stelt u in staat om deze diensten op nieuwe manieren te benutten. Voor dit project gaan we IFTTT gebruiken om een ESP8266 de status van een deur te laten loggen via een reed-schakelaar en temperatuur en vochtigheid via de DHT11-sensor in een Google Spreadsheets-document.

Stap 3: Maak een IFTTT-applet

Een IFTTT-applet maken
Een IFTTT-applet maken

Terwijl je nog steeds in IFTTT bent, ga je naar het gedeelte "Mijn applets" en maak je een nieuwe applet door op de knop "Nieuwe applet" te klikken.

Stap 4: Configureer het "dit" gedeelte van uw applet

Configureer de
Configureer de

Klik op het woord "dit" in een blauwe kleur - zoals gemarkeerd in de bovenstaande afbeelding.

Stap 5: Voeg de WebHooks-service toe aan uw applet

Voeg de WebHooks-service toe aan uw applet
Voeg de WebHooks-service toe aan uw applet

Zoek in de zoekbalk naar de service "Webhooks" en selecteer het pictogram Webhooks.

Zodra u de "Webhooks"-service hebt gevonden, klikt u erop.

Stap 6: Stel de trigger voor het ontvangen van een webverzoek in

Stel de trigger voor het ontvangen van een webverzoek in
Stel de trigger voor het ontvangen van een webverzoek in

Kies de trigger "Ontvang een webverzoek".

Stap 7: Geef een gebeurtenisnaam op

Geef een gebeurtenisnaam op
Geef een gebeurtenisnaam op

Geef in het tekstvak uw nieuwe applet een gebeurtenisnaam op. Ik heb "Data Logger" geselecteerd, maar je kunt kiezen wat je wilt.

Stap 8: Configureer het "dat" gedeelte van uw applet

Configureer de
Configureer de

Klik op het "dat" woord in een blauwe kleur - zoals gemarkeerd in de bovenstaande afbeelding.

Stap 9: een actieservice instellen

Een actieservice instellen
Een actieservice instellen

Zoek in het zoekvak naar de service 'Google Spreadsheets' en klik op het Google Spreadsheets-pictogram.

Stap 10: verbinding maken met Google Spreadsheets

Verbinding maken met Google Spreadsheets
Verbinding maken met Google Spreadsheets

Als u dit nog niet heeft gedaan, hoeft u uw IFTTT-account niet aan Google Spreadsheets te koppelen. Druk op de hierboven weergegeven Connect-knop en volg de instructies op het scherm.

Stap 11: Kies een actie

Kies een actie
Kies een actie

Klik op "Voeg rij toe aan spreadsheet".

Stap 12: Stel de actie in

Stel de actie in
Stel de actie in

Geef een naam op in het tekstvak "Spreadsheetnaam". Ik kies ervoor om "Data_Logger" te gebruiken voor consistentie. Laat de rest van de instelling met rust (u kunt op een ander moment met die instelling experimenteren) en druk vervolgens op de knop "Actie maken" onder aan het scherm.

Stap 13: Controleer en voltooi uw applet

Controleer en voltooi uw applet
Controleer en voltooi uw applet

Als u tevreden bent met uw appletconfiguratie, drukt u op de knop "Voltooien".

Stap 14: Configuratie-informatie ophalen die later nodig is

Configuratie-informatie ophalen die later nodig is
Configuratie-informatie ophalen die later nodig is

Klik op "Webhooks" zoals hierboven aangegeven.

Stap 15: Ga verder naar de Webhooks-documentatie voor de API-sleutel

Ga verder naar de Webhooks-documentatie voor de API-sleutel
Ga verder naar de Webhooks-documentatie voor de API-sleutel

Het lijkt misschien vreemd, maar klik op de Documentatie-link in de rechterbovenhoek om door te gaan naar de pagina met uw unieke API-sleutel.

Stap 16: Bewaar de API-sleutel

Bewaar de API-sleutel
Bewaar de API-sleutel
Bewaar de API-sleutel
Bewaar de API-sleutel

De eerste regel van het documentatiescherm toont uw unieke API-sleutel. Kopieer en bewaar deze sleutel voor later gebruik.

Het is ook een goed idee om de applet hier te testen. Vergeet niet om {event} te wijzigen in Data_Logger of hoe je je evenement ook noemt en voeg wat gegevens toe aan de 3 lege waarden en klik vervolgens op de knop "Test het" onderaan de pagina. U zou een groen bericht moeten zien met de tekst "Gebeurtenis is geactiveerd". Als dit het geval is, gaat u verder naar Google Documenten en bevestigt u dat de gegevens die u op de testpagina hebt ingevoerd, zijn weergegeven in het Google Spreadsheets-document.

Stap 17: Verzamel de componenten

Verzamel de componenten
Verzamel de componenten
Verzamel de componenten
Verzamel de componenten
Verzamel de componenten
Verzamel de componenten

Je hebt maar een paar onderdelen nodig.

1) ESP8266 NodeMcu-ontwikkelbord

2) DHT11 temperatuur-/vochtigheidssensor

3) Deur/raam reed-schakelaar

4) 10k Ohm Weerstand

5) Aansluitdraad

Stap 18: Monteer de componenten

1) Sluit een van de 3v3-pins op de ESP8266 aan op de vcc-pin op de DHT11.

2) Sluit een van de aardingspennen op de ESP8266 aan op de aardingspen op de DHT11.

3) Sluit pin D4 (ook bekend als pin 2 in de IDE) op de ESP8266 aan op de datapin op de DHT11.

4) Sluit een andere 3v3-pin op de ESP8266 aan op de ene kant van de deur-/raamreedschakelaar.

5) Sluit pin D5 (ook bekend als pin 14 in de IDE) op de ESP8266 aan op de andere kant van de deur-/raamreedschakelaar en sluit deze ook aan op één kant van de 10k ohm-weerstand.

6) Sluit de andere kant van de 10k ohm weerstand aan op een andere aardpen op de ESP8266.

Raadpleeg dit handige diagram of de zeer nuttige video voor ESP8266-pinselecties.

Stap 19: Schrijf de Arduino-code

Schrijf de Arduino-code
Schrijf de Arduino-code

Kopieer en plak de onderstaande code in je Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // met welke digitale pin we zijn verbonden

#define DOORPIN 14 // op welke digitale pin de deurschakelaar staat.

#definieer DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

aantal int = 1;

const char* ssid = "some_ssid"; // verander dit om je ssid const char* wachtwoord = "some_password" te gebruiken; // verander dit om je wachtwoord te gebruiken int sleepTime = 100;

// Maker Webhooks IFTTT

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

// IFTTT URL-bron

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; //Zorg ervoor dat u uw servicenaam en uw api-sleutel gebruikt.

String doorStatus = "Gesloten";

vluchtige bool stateChanged = false;

// Als je uren slaapt, stel dan het interval in per uur * 60 minuten * 60 seconden * 1000 milliseconden

const lang interval = 1,0 * 60 * 60 * 1000; // 1 uur ongetekende lange vorigeMillis = 0 - (2 * interval);

ongeldige instelling () {

Serieel.begin(115200); attachInterrupt(digitalPinToInterrupt(DOORPIN), eventTriggered, CHANGE); pinMode (DEURPIN, INGANG); // Deursensor dht.begin (); WiFi.begin(ssid, wachtwoord);

Serial.print("\nVerbinding maken..");

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

void eventTriggered(){

stateChanged = waar; Serial.println("De deur controleren!"); if (digitalRead(DOORPIN)==HIGH) // Controleer of de deur open is {Serial.println("Deur is gesloten!"); doorStatus = "Gesloten"; } else { Serial.println("Deur staat open!"); doorStatus = "Geopend"; } }

ongeldige checkStatus(){

if (WiFi.status() == WL_CONNECTED) { // Controleer de status van de wifi-verbinding // Het lezen van de temperatuur of vochtigheid duurt ongeveer 250 milliseconden! // Sensormetingen kunnen ook tot 2 seconden 'oud' zijn (het is een zeer trage sensor) float h = dht.readHumidity(); // Lees temperatuur als Celsius (de standaard) float t = dht.readTemperature (); // Lees temperatuur als Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Controleer of het lezen is mislukt en sluit vroeg af (om het opnieuw te proberen). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Kan niet lezen van DHT-sensor!"); //Serial.print("."); // Kan niet lezen van DHT-sensor! opbrengst; } // Bereken warmte-index in Fahrenheit (de standaard) float hif = dht.computeHeatIndex (f, h); // Bereken warmte-index in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serieel.print("\n");

Serial.print("Temperatuur: "); Serieafdruk(f); Serial.print(" *F ("); Serial.print(t); Serial.print(" *C)"); Serieel.print("\t"); Serial.print("Warmte-index: "); Serial.print(hif); Serial.print(" *F ("); Serial.print(hic); Serial.print(" *C)%"); Serieel.print("\t"); Serial.print("Vochtigheid: "); Serieel.println(h);

if (digitalRead(DOORPIN)==HIGH) // Controleer of de deur open is

{ Serial.println("Deur is gesloten!"); doorStatus = "Gesloten"; } else { Serial.println("Deur staat open!"); doorStatus = "Geopend"; } String jsonObject = String("{"value1\":\"") + f +"*F (" + t + "*C) / "+ hif +"*F (" + hic + "*C) " + "\", \"waarde2\":\"" + h + "\", \"waarde3\":\"" + doorStatus + " \"}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin(completeUrl); // http.begin(server); http.addHeader("Inhoudstype", "toepassing/json"); http. POST(jsonObject); http.writeToStream(&Serial); http.end(); //Hechte band

stateChanged = onwaar;

int sleepTimeInMinutes = interval / 1000 / 60; Serial.print("\n\nGa slapen voor "); Serial.print(sleepTimeInMinutes); Serial.println(" minuut(en) …"); } }

lege lus() {

unsigned long currentMillis = millis(); vertraging (4000); //Als we de verstreken tijd hebben overschreden, forceer dan een controle van de deur en temp. if (currentMillis - previousMillis >= interval){ stateChanged = true; vorigeMillis = huidigeMillis; Serial.print(count++); Serial.println(") Controle vanwege verstreken tijd!"); }else if(stateChanged){ Serial.print(count++); Serial.println(") Controle vanwege statuswijziging!"); }

// Als de status is gewijzigd, controleer dan de deur en de temperatuur.

if(stateChanged){ checkStatus(); }

vertraging (slaaptijd);

}

Stap 20: Resultaten

Resultaten
Resultaten

Nadat u de broncode in de vorige stap heeft geüpload, zou u resultaten moeten hebben zoals in het bovenstaande voorbeeld.

Stap 21: Tegoeden

Ik heb veel nuttige hints en tips gevonden van Random Nerd Tutorials en wil ze graag bedanken voor al hun hulp. Vooral hun uitstekende tutorial over ESP32 ESP8266 Publiceer sensormetingen naar Google Spreadsheets waarop grote delen van deze Instructable zijn gebaseerd.

Bovendien heeft de DHT11 Instructable van TheCircuit me geholpen te begrijpen hoe deze zeer goedkope maar interessante kleine sensor te gebruiken.

Verder zijn er veel tutorials over het bewaken van je deuren, zoals de Garage Door Monitor en een andere van Random Nerd Tutorials. Ik heb stukjes en beetjes hiervan gebruikt om me te helpen begrijpen hoe ik mijn reed-schakelaar goed kan laten werken.

Ten slotte kon ik met deze informatie en andere details die ik op internet vond, een systeem maken dat aan mijn behoeften voldeed. Ik hoop dat je dit Instructable nuttig vindt en er zelf een bouwt.

Aanbevolen: