Obsah:

Záznamník stavu dveří a teploty: 21 kroků
Záznamník stavu dveří a teploty: 21 kroků

Video: Záznamník stavu dveří a teploty: 21 kroků

Video: Záznamník stavu dveří a teploty: 21 kroků
Video: Záhady tajemného statku Pohádka (dokumentární film o Christlhofu, 2021) HD 2024, Červenec
Anonim
Projekt záznamníku stavu dveří a teploty
Projekt záznamníku stavu dveří a teploty

Tento instruktážní program vám ukáže, jak vytvořit jednoduchý záznamník stavu dveří a teploty za méně než 10,00 $ pomocí ESP8266 NodeMCU, snímače teploty a vlhkosti DHT11, spínače dveří/oken, odporu 10 K ohmů a nějakého připojovacího drátu.

Geneze tohoto projektu vzešla z mé touhy udělat více domácí automatizace s deskou Arduino. Protože jsem hodně četl o Arduino kompatibilním EPS8266 NodeMCU, rozhodl jsem se, že tato deska bude perfektní nízkonákladovou deskou, se kterou se dá experimentovat. Poté, co jsem na internetu vyhledal projekty domácí automatizace pomocí desek ESP8266, rozhodl jsem se pro svůj první pokus zkombinovat záznamník teploty a stavu dveří. Nakonec bude tento projekt kombinován se servy, senzory vlhkosti a další elektronikou k automatizaci malého zeleného domu, který můj dědeček navrhl a postavil před 50 lety. Teplotní čidlo bude použito k určení, zda by měl být topný systém zapnut nebo vypnut, a také signalizovat servům, aby v případě potřeby otevřely a zavřely odvzdušňovací systém. Stav ventilačního systému bude monitorován pomocí magnetických jazýčkových spínačů. Nakonec budou senzory vlhkosti použity k automatizaci zavlažovacího systému.

Krok 1: Prohlášení

Jen rychlé odmítnutí odpovědnosti za to, že nepřebíráme ŽÁDNOU odpovědnost za nic, co se stane v důsledku dodržování tohoto pokynu. Při stavbě čehokoli je vždy nejlepší dodržovat pokyny výrobce a bezpečnostní listy, a proto se v těchto dokumentech podívejte na všechny součásti a nástroje, které používáte při stavbě vlastních. Jednoduše poskytujeme informace o krocích, které jsme použili při vytváření našich. Nejsme profesionálové. Ve skutečnosti 2 ze 3 osob, které se účastnily této stavby, jsou děti.

Krok 2: Založte si bezplatný účet IFTTT

Založte si zdarma účet IFTTT
Založte si zdarma účet IFTTT

Pokud ho ještě nemáte, nyní je načase založit si bezplatný účet IFTTT na jejich domovské stránce.. IFTTT znamená If This Then That a je bezplatná platforma, která vám umožňuje připojit internetové služby novými způsoby vám umožní využívat tyto služby novými způsoby. Pro tento projekt použijeme IFTTT k povolení ESP8266 zaznamenávat stav dveří pomocí jazýčkového spínače a teplotu a vlhkost pomocí senzoru DHT11 v dokumentu Tabulek Google.

Krok 3: Vytvořte aplet IFTTT

Vytvořte aplet IFTTT
Vytvořte aplet IFTTT

Když jste stále v IFTTT, přejděte do části „Moje aplety“a vytvořte nový applet kliknutím na tlačítko „Nový aplet“.

Krok 4: Konfigurujte „tuto“část svého apletu

Konfigurujte
Konfigurujte

Klikněte na „toto“slovo v modré barvě - jak je zvýrazněno na obrázku výše.

Krok 5: Přidejte službu WebHooks do svého apletu

Přidejte do svého apletu službu WebHooks
Přidejte do svého apletu službu WebHooks

Na panelu hledání vyhledejte službu „Webhooks“a vyberte ikonu Webhooks.

Jakmile najdete službu „Webhooks“, klikněte na ni.

Krok 6: Nastavte přijímač spouštění webových požadavků

Nastavte spouštěč pro příjem webových požadavků
Nastavte spouštěč pro příjem webových požadavků

Vyberte spouštěč „Přijmout webový požadavek“.

Krok 7: Zadejte název události

Zadejte název události
Zadejte název události

Do textového pole zadejte nový applet s názvem události. Vybral jsem „Data Logger“, ale můžete si vybrat, co chcete.

Krok 8: Konfigurujte „tu“část svého apletu

Konfigurujte
Konfigurujte

Klikněte na slovo „to“, které je modré barvy - jak je zvýrazněno na obrázku výše.

Krok 9: Nastavení akční služby

Nastavte si akční službu
Nastavte si akční službu

Ve vyhledávacím poli vyhledejte službu „Tabulky Google“a klikněte na ikonu Tabulky Google.

Krok 10: Připojte se k Tabulkám Google

Připojte se k Tabulkám Google
Připojte se k Tabulkám Google

Pokud jste tak ještě neučinili, budete muset svůj účet IFTTT propojit s Tabulkami Google. Stiskněte výše uvedené tlačítko Připojit a postupujte podle pokynů na obrazovce.

Krok 11: Vyberte akci

Vyberte akci
Vyberte akci

Klikněte na „Přidat řádek do tabulky“.

Krok 12: Nastavení akce

Nastavte akci
Nastavte akci

Do textového pole „Název tabulky“zadejte název. Kvůli konzistenci jsem se rozhodl použít „Data_Logger“. Zbytek nastavení nechte na pokoji (s těmito nastaveními můžete experimentovat někdy jindy) a poté stiskněte tlačítko „Vytvořit akci“ve spodní části obrazovky.

Krok 13: Zkontrolujte a dokončete svůj aplet

Zkontrolujte a dokončete svůj aplet
Zkontrolujte a dokončete svůj aplet

Až budete s konfigurací appletu spokojeni, stiskněte tlačítko „Dokončit“.

Krok 14: Načíst informace o konfiguraci potřebné později

Načíst informace o konfiguraci potřebné později
Načíst informace o konfiguraci potřebné později

Klikněte na „Webhooky“, jak je uvedeno výše.

Krok 15: Přejděte k dokumentaci Webhooks pro klíč API

Přejděte k dokumentaci Webhooks pro klíč API
Přejděte k dokumentaci Webhooks pro klíč API

Může to vypadat divně, ale kliknutím na odkaz Dokumentace v pravém horním rohu přejděte na stránku s vaším jedinečným klíčem API.

Krok 16: Uložte klíč API

Uložte klíč API
Uložte klíč API
Uložte klíč API
Uložte klíč API

První řádek obrazovky dokumentace zobrazuje váš jedinečný klíč API. Zkopírujte a uložte tento klíč pro pozdější použití.

Je také dobré applet otestovat zde. Nezapomeňte změnit {event} na Data_Logger nebo cokoli, co jste pojmenovali svou událost, a přidat data ke 3 prázdným hodnotám, poté klikněte na tlačítko „Vyzkoušet“v dolní části stránky. Měli byste vidět zelenou zprávu „Událost byla spuštěna“. Pokud ano, přejděte do Dokumentů Google a potvrďte, že data, která jste zadali na testovací stránce, se zobrazila v dokumentu Tabulek Google.

Krok 17: Shromážděte součásti

Shromážděte součásti
Shromážděte součásti
Shromážděte součásti
Shromážděte součásti
Shromážděte součásti
Shromážděte součásti

Budete potřebovat jen pár dílů.

1) Vývojová deska ESP8266 NodeMcu

2) Snímač teploty/vlhkosti DHT11

3) Reed spínač dveří/oken

4) Rezistor 10 kOhm

5) Zapojovací drát

Krok 18: Sestavte součásti

1) Připojte jeden z pinů 3v3 na ESP8266 ke kolíku vcc na DHT11.

2) Připojte jeden ze zemnicích kolíků na ESP8266 k uzemňovacímu kolíku na DHT11.

3) Připojte pin D4 (aka pin 2 v IDE) na ESP8266 k datovému pinu na DHT11.

4) Připojte další pin 3v3 na ESP8266 k jedné straně spínače dveří/oken.

5) Připojte kolík D5 (aka pin 14 v IDE) na ESP8266 k druhé straně spínače dveří/oken a také jej připojte k jedné straně 10k ohmového rezistoru.

6) Připojte druhou stranu 10k ohmového rezistoru k jinému zemnicímu kolíku na ESP8266.

Výběr pinů ESP8266 naleznete v tomto užitečném diagramu nebo ve velmi užitečném videu.

Krok 19: Napište kód Arduino

Napište kód Arduino
Napište kód Arduino

Zkopírujte a vložte níže uvedený kód do svého Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // ke kterému digitálnímu pinu jsme připojeni

#define DOORPIN 14 // jaký digitální pin je spínač dveří zapnutý.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "some_ssid"; // změňte toto, aby používalo váš ssid const char* heslo = "some_password"; // změňte toto, aby používalo vaše heslo int sleepTime = 100;

// Maker Webhooks IFTTT

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

// Zdroj URL IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/s/key/SOME_API_KEY"; // Ujistěte se, že používáte název své služby a klíč API.

String doorStatus = "Zavřeno";

volatile bool stateChanged = false;

// Pokud spíte hodiny, pak nastavte interval po hodinách * 60 minut * 60 sekund * 1000 milisekund

konst dlouhý interval = 1,0 * 60 * 60 * 1000; // 1 hodina bez znaménka dlouhá předchozíMillis = 0 - (2 * interval);

neplatné nastavení () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Senzor dveří dht.begin (); WiFi.begin (ssid, heslo);

Serial.print ("\ nPřipojování..");

while (WiFi.status ()! = WL_CONNECTED) {zpoždění (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println („Kontrola dveří!“); if (digitalRead (DOORPIN) == HIGH) // Zkontrolujte, zda jsou dveře otevřené {Serial.println ("Dveře jsou zavřené!"); doorStatus = "Zavřeno"; } else {Serial.println ("Dveře jsou otevřené!"); doorStatus = "Otevřeno"; }}

neplatný checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Zkontrolujte stav připojení WiFi // Čtení teploty nebo vlhkosti trvá přibližně 250 milisekund! // Odečty senzorů mohou být také až 2 sekundy staré (je to velmi pomalý senzor) float h = dht.readHumidity (); // Čtení teploty jako Celsia (výchozí) float t = dht.readTemperature (); // Odečtěte teplotu jako Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Zkontrolujte, zda některá čtení selhala, a ukončete předčasné (zkuste to znovu). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Failed to reading from DHT sensor!"); //Serial.print ("."); // Čtení ze snímače DHT se nezdařilo! vrátit se; } // Výpočet tepelného indexu ve Fahrenheitech (výchozí) float hif = dht.computeHeatIndex (f, h); // Výpočet tepelného indexu ve stupních Celsia (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Teplota:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Heat index:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Vlhkost:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Zkontrolujte, zda jsou dveře otevřené

{Serial.println ("Dveře jsou zavřené!"); doorStatus = "Zavřeno"; } else {Serial.println ("Dveře jsou otevřené!"); doorStatus = "Otevřeno"; } Řetězec jsonObject = Řetězec ("{" hodnota1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" hodnota2 / ": \" " + h +" / ", \" hodnota3 / ": \" " + stav dveří +" / "}"; HTTPClient http; Řetězec CompleteUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (server); http.addHeader („Content-Type“, „application/json“); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Uzavření spojení

stateChanged = false;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / nPřejít ke spánku"); Serial.print (sleepTimeInMinutes); Serial.println ("minuty (s) …"); }}

prázdná smyčka () {

unsigned long currentMillis = millis (); zpoždění (4000); // Pokud jsme překročili uplynulý čas, vynutí kontrolu dveří a teploty. if (currentMillis - previousMillis> = interval) {stateChanged = true; previousMillis = aktuálníMillis; Serial.print (počet ++); Serial.println (") Kontrola z důvodu uplynulého času!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Kontrola kvůli změně stavu!"); }

// Pokud se stav změnil, zkontrolujte dveře a teplotu.

if (stateChanged) {checkStatus (); }

zpoždění (sleepTime);

}

Krok 20: Výsledky

Výsledek
Výsledek

Jakmile v předchozím kroku nahrajete zdrojový kód, měli byste mít výsledky podobné výše uvedenému příkladu.

Krok 21: Kredity

Našel jsem spoustu užitečných rad a tipů z Random Nerd Tutorials a chtěl bych jim poděkovat za veškerou jejich pomoc. Zvláště jejich vynikající tutoriál o ESP32 ESP8266 Publikovat čtení senzorů do Tabulek Google, na kterých jsou založeny hlavní části tohoto Instructable.

Kromě toho mi DHT11 Instructable od TheCircuit pomohl pochopit, jak používat tento velmi levný, ale zajímavý malý snímač.

Kromě toho existuje mnoho tutoriálů, které se zabývají monitorováním vašich dveří, jako je Garážová vrata a další z výukových programů Random Nerd. Použil jsem jejich kousky, abych mi pomohl pochopit, jak správně fungovat můj jazýčkový spínač.

Nakonec jsem s těmito informacemi a dalšími podrobnostmi, které jsem našel na internetu, dokázal vytvořit systém, který vyhovoval mým potřebám. Doufám, že vám tento Instructable bude užitečný a vytvoříte si vlastní.

Doporučuje: