Obsah:

ESP32 Smart Home Hub: 11 kroků
ESP32 Smart Home Hub: 11 kroků

Video: ESP32 Smart Home Hub: 11 kroků

Video: ESP32 Smart Home Hub: 11 kroků
Video: I built a smarter smart home 2024, Září
Anonim
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32
Inteligentní domácí rozbočovač ESP32

Vytvoření systému, který zvládne velké množství dat ze senzorů, má více výstupů a připojení k internetu nebo místní síti, vyžaduje dlouhou dobu a velké úsilí. Lidé, kteří chtějí vytvořit vlastní chytré domácí sítě, až příliš často bojují s tím, že dokážou najít a sestavit vlastní komponenty do většího systému. Proto jsem chtěl vytvořit modulární a na funkce bohatou platformu, která by usnadnila konstrukci senzorů a výstupů připojených k internetu věcí.

Děkujeme společnostem DFRobot a PCBGOGO.com za sponzorování tohoto projektu!

Podrobnější informace najdete na repo Githubu:

Zásoby

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • Senzor DHT22

    www.dfrobot.com/product-1102.html

  • Senzor světla a gest APDS9960

    www.dfrobot.com/product-1361.html

  • Modul LCD I2C 20x4

    www.dfrobot.com/product-590.html

  • Analogový RGB LED pásek

    www.dfrobot.com/product-1829.html

  • Ovladače krokových motorů DRV8825
  • Čtečka karet SD
  • Krokové motory NEMA17

Krok 1: Funkce

Funkce
Funkce
Funkce
Funkce
Funkce
Funkce

Hlavní vlastností této desky je vývojová deska ESP32 FireBeetle, která zpracovává veškerou komunikaci, čtení senzorů a výstupy. Existují dva ovladače krokových motorů, které ovládají dva bipolární krokové motory.

Sběrnice I2C je také rozdělena pro použití s komponenty, jako je APDS9960 nebo LCD. Pro čtení teploty jsou přerušeny kolíky pro připojení k senzoru DHT22, stejně jako fotorezistor pro čtení úrovní okolního světla.

Na desce je podpora analogového světelného pásu, který má tři MOSFETy pro ovládání LED světel.

Krok 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Proces návrhu DPS jsem zahájil nejprve vytvořením schématu v Eagle. Protože se mi nepodařilo najít knihovnu ESP32 FireBeetle, místo toho jsem použil dvě pinové 1x18 pinové hlavičky. Poté jsem vytvořil obvod řízení napájení, který mohl přijímat 12 V přes DC barel jack a převést jej na 5 V pro napájení senzorů a ESP32.

Po dokončení schématu jsem přešel k návrhu samotné desky plošných spojů.

Věděl jsem, že stejnosměrná hlavní zástrčka bude muset být blízko přední části desky a vyhlazovací kondenzátory napájecího zdroje 100 uF musí být blízko napájecích vstupů ovladače krokového motoru. Poté, co bylo vše rozloženo, jsem začal směrovat stopy.

Zatímco Oshpark vyrábí velmi kvalitní PCB, jejich ceny jsou poměrně vysoké. Naštěstí PCBGOGO.com také vyrábí skvělé PCB za dostupnou cenu. Byl jsem schopen koupit deset desek plošných spojů za pouhých 5 $, místo abych zaplatil 52 $ za pouhé tři desky od Oshpark.com.

Krok 3: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Celkově bylo sestavení desky celkem snadné. Začal jsem pájením povrchově montovaných komponent a poté připojením konektoru a regulátoru barel jack. Dále jsem připájel záhlaví kolíků pro součásti, jako jsou ovladače motorů a FireBeetle.

Po dokončení pájení jsem desku otestoval na zkrat tak, že jsem multimetr přepnul do režimu měření odporu a zjistil, zda odpor přesáhl určité množství. Deska prošla, takže jsem pak mohl zapojit každou součástku.

Krok 4: Přehled programování

Chtěl jsem, aby kód této desky byl modulární a snadno použitelný. To znamenalo mít několik tříd, které zpracovávají konkrétní funkce, spolu s větší třídou wrapperu, která kombinuje ty menší.

Krok 5: Vstupy

Vstupy
Vstupy
Vstupy
Vstupy
Vstupy
Vstupy

Pro zpracování vstupů jsem vytvořil třídu s názvem „Hub_Inputs“, která umožňuje domácímu centru komunikovat s APDS9960 spolu s vytvářením a správou tlačítek a kapacitních dotykových rozhraní. Obsahuje následující funkce:

Tlačítko Vytvořit

Získejte, pokud je stisknuto tlačítko

Získejte počet stisknutí tlačítka

Získejte nejnovější gesto

Získejte kapacitní dotykovou hodnotu

Tlačítka jsou uložena jako struktura se třemi atributy: is_pressed, numberPresses a pin. Každé tlačítko, když je vytvořeno, je připojeno k přerušení. Když je toto přerušení spuštěno, je předán rutina přerušení služby (ISR) ukazateli tohoto tlačítka (udává se jako jeho adresa v poli tlačítek) a zvyšuje počet stisknutí tlačítka spolu s aktualizací booleovské hodnoty is_pressed.

Kapacitní dotykové hodnoty jsou mnohem jednodušší. Načítají se předáním dotykového kolíku funkci touchRead ().

Nejnovější gesto se aktualizuje dotazováním na APDS9960 a kontrolou, zda bylo zjištěno nějaké nové gesto, a pokud bylo zjištěno, nastavte proměnnou soukromých gest na toto gesto.

Krok 6: Výstupy

Výstupy
Výstupy
Výstupy
Výstupy
Výstupy
Výstupy

Rozbočovač chytré domácnosti nabízí několik způsobů, jak odesílat informace a měnit světla. Existují piny, které přerušují sběrnici I2C a umožňují uživatelům připojit LCD. Zatím je podporována pouze jedna velikost LCD: 20 x 4. Pomocí funkce „hub.display_message ()“mohou uživatelé zobrazovat zprávy na LCD předáním řetězcového objektu.

K dispozici je také záhlaví pinů pro připojení řady analogových LED. Voláním funkce „hub.set_led_strip (r, g, b)“se nastaví barva pásu.

Dva krokové motory jsou poháněny dvojicí řídicích desek DRV8825. K ovládání motoru jsem se rozhodl použít knihovnu BasicStepper. Po spuštění desky se vytvoří dva krokové objekty a oba motory se aktivují. Ke krokování každého motoru se používá funkce „hub.step_motor (motor_id, steps)“, kde id motoru je buď 0 nebo 1.

Krok 7: Protokolování

Protokolování
Protokolování
Protokolování
Protokolování
Protokolování
Protokolování

Protože deska má několik senzorů, chtěl jsem možnost lokálně shromažďovat a protokolovat data.

Chcete -li zahájit protokolování, vytvoří se nový soubor „hub.create_log (název_souboru, záhlaví)“, kde záhlaví slouží k vytvoření řádku souboru CSV, který označuje sloupce. První sloupec je vždy časové razítko ve formátu Rok Měsíc Den Hodina: Min: Sek. Chcete -li získat čas, funkce hub.log_to_file () získá čas pomocí funkce basic_functions.get_time (). Časová struktura tm je poté předána odkazem do funkce protokolování spolu s daty a názvem souboru.

Krok 8: Bzučák

Bzučák
Bzučák

K čemu je deska IoT, když nemůžete přehrávat hudbu? Proto jsem přidal bzučák s funkcí přehrávání zvuků. Voláním „hub.play_sounds (melodie, trvání, délka)“se začne přehrávat skladba, přičemž melodie je řada frekvencí not, doba trvání jako pole trvání not a délka jako počet not.

Krok 9: Externí integrace IoT

Externí integrace IoT
Externí integrace IoT
Externí integrace IoT
Externí integrace IoT
Externí integrace IoT
Externí integrace IoT

Rozbočovač aktuálně podporuje webhooky IFTTT. Mohou být spuštěny voláním funkce Hub_IoT.publish_webhook (url, data, událost, klíč) nebo Hub_IoT.publish_webhook (url, data). To odešle požadavek POST na danou adresu URL s připojenými daty a v případě potřeby s názvem události. Chcete -li nastavit příklad integrace IFTTT, nejprve vytvořte nový applet. Poté vyberte službu webhook, která se spustí při přijetí požadavku.

Poté akci pojmenujte „high_temp“a uložte ji. Poté v části „To“vyberte službu Gmail a zvolte možnost „Odeslat e -mail sobě“. V nastavení služby zadejte „Teplota je vysoká!“pro předmět a poté jsem dal „Naměřená teplota {{Value1}} na {{OccurredAt}}“, která ukazuje naměřenou teplotu a čas, kdy byla událost spuštěna.

Po nastavení jednoduše vložte adresu URL webhooku vygenerovanou IFTTT a do části události vložte „high_temp“.

Krok 10: Použití

Používání
Používání
Používání
Používání
Používání
Používání
Používání
Používání

Chcete -li používat Smart Home Hub, jednoduše zavolejte všechny potřebné funkce v nastavení () nebo smyčce (). Už jsem dal příklad volání funkcí, jako je tisk aktuálního času a volání události IFTTT.

Krok 11: Plány do budoucna

Systém Smart Home Hub funguje velmi dobře pro jednoduché úkoly domácí automatizace a shromažďování dat. Lze jej použít téměř ke všemu, jako je nastavení barvy LED pásky, sledování teploty v místnosti, kontrola rozsvícení světla a celá řada dalších potenciálních projektů. Do budoucna bych chtěl funkčnost ještě více rozšířit. To může zahrnovat přidání robustnějšího webového serveru, hostování lokálních souborů a dokonce i Bluetooth nebo mqtt.

Doporučuje: