Obsah:

Google Home Controlled LEDs: 8 Steps
Google Home Controlled LEDs: 8 Steps

Video: Google Home Controlled LEDs: 8 Steps

Video: Google Home Controlled LEDs: 8 Steps
Video: I Tried Building the PERFECT Smart Home: What I Learned (Mistakes Included) 2024, Listopad
Anonim
Google Home Controlled LEDs
Google Home Controlled LEDs
Google Home Controlled LEDs
Google Home Controlled LEDs

V poslední době mám na ruce spoustu volného času, takže jsem pracoval na hromadě projektů.

Tento projekt vám umožní ovládat RGB LED pomocí Google Home pomocí Raspberry Pi. Nyní existují 3 části projektu, nastavení Raspberry Pi, nastavení Google Home pomocí vlastního příkazu pomocí IFTTT a poté vytvoření obvodu pro světla. Okruh jsem udělal sám, ale vsadím se, že byste mohli získat něco od Adafruit, které dělá, co je potřeba.

Materiály pro část Raspberry Pi

  • Raspberry Pi - jakýkoli bude fungovat, ale já používám nulu
  • Bezdrátový dongle - pokud Pi nemá vestavěnou Wifi
  • Domovská stránka Google - Volitelné, pokud máte v telefonu Asistenta Google

Materiály pro obvodovou část- Nenechte se tím odradit … Je to docela jednoduché

  • Protoboard
  • Drát
  • LED pásek
  • Napájení 12 V - cokoli nad 2 A by mělo být v pořádku
  • DC Barrel Jack - stejná velikost jako napájecí zdroje
  • Výkonové tranzistory NPN BJT (x3) - používám TIP31C
  • Záhlaví pinů pro muže a ženy - volitelné, ale velmi doporučeno

Krok 1: Stažení Express pro Pi

Stahování Express pro Pi
Stahování Express pro Pi

Nebudu se příliš rozepisovat o nastavení Pi, protože existuje tolik návodů, jak je nastavit.

Co budete potřebovat, abych nepokryl…

  • Blikající Raspberry Pi s nejnovějším Raspbianem
  • Nastavte síťovou kartu, abyste měli přístup k internetu z počítače Pi
  • Nastavte na Raspberry Pi statickou IP

Tady začíná zábava! Musíme nainstalovat nodeJS, npm, express a express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Jakmile jsou nainstalovány, spusťte následující

npm install express express-generator

Express vám umožňuje vytvořit velmi základní webový server, který bude váš Raspberry Pi používat. Express-generator jen automaticky generuje soubory pro expresní server.

Vytvořte adresář a vložte do něj cd. Pojmenoval jsem svůj piWebpage. Nyní spusťte následující (viz také na obrázku)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Tím se vygeneruje složka s názvem webApp se všemi expresními soubory. Pokud plánujete s touto webovou stránkou udělat později více a máte rádi PUG, nahraďte --view = ejs --view = pug. Nebudeme se dotýkat webové stránky, takže pro tuto aplikaci nezáleží na tom, co používáme.

Krok 2: Nastavení Pi serveru

Přesuňte se do nového adresáře webApp.

cd webApp

npm instalace

instalace npm bude nějakou dobu trvat, protože instaluje všechny závislosti pro expres.

Vložte soubor setColor.py do složky webApp. Tento soubor obsahuje několik předvoleb pro základní barvy. Neváhejte přidat další, jak chcete. Rozsah je 0 až 255, kde 255 je plnobarevný. V určitém okamžiku pravděpodobně přidám možnost ztlumit světla, ale prozatím jsou plné jasu.

Přejít na trasy

cd trasy

Nyní nahraďte soubor index.js přiloženým souborem. Tím se přidají některé řádky pro příjem příkazu POST, který odešle domovská stránka Google. Z toho POST získáme vybranou barvu a řekneme Pi, aby spustila skript python setColor a upravila světla.

Ještě jedna věc… Vraťte se do složky webApp.

cd ~/piWebpage/webApp

Pomocí oblíbeného editoru vložte a uložte níže uvedený kód do souboru webApp.js. Kdekoli je v pořádku, pokud je to před "module.exports = app;"

// Nastavení LED hardwaru driverconst {exec} = require ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Error loading LED Driver'); return;} else console.log ('LED Driver Successfully Loaded'); });

Jak říká komentář, pigpiod je hardwarový ovladač pro signály PWM, které použijeme k úpravě barev LED. Věřím, že je již nainstalován v Raspbian, ale pokud ne …

sudo apt-get install pigpiod

Nyní skutečný test! Spouštění serveru!

DEBUG = webapp:* npm start

Krok 3: Nastavení IFTTT (spoušť)

Nastavení IFTTT (spoušť)
Nastavení IFTTT (spoušť)
Nastavení IFTTT (spoušť)
Nastavení IFTTT (spoušť)

IFTTT dokáže hodně a já bych velmi doporučil se porozhlédnout po některých aplikacích.

Nejprve si musíte založit účet. Použijte stejný účet Google přidružený k vaší domovské stránce Google, jinak se nebudou synchronizovat. Po dokončení a přihlášení klikněte vpravo nahoře na stránku IFTTT, kde se zobrazí vaše jméno a avatar. Poté v rozevíracím seznamu klikněte na Nový aplet.

Pokud jste zvědaví, IFTTT znamená IF This Then That, pokud jste si toho nevšimli na obrazovce, která se objeví. Takže co chceme, je -li Google Assistant, pak Webhook jako naše možnosti.

Pokračujte kliknutím na +toto, čímž se načte vyhledávací lišta. Do vyhledávání napište Google Assistant a klikněte na ikonu pod vyhledáváním.

V části Vyberte spouště vyberte 3. možnost s názvem Vyslovte frázi s textovou přísadou. Nyní vám to umožní mít 3 příkazy, které provedou stejnou akci. Přidáte $ do fráze, kde byste zmínili barvu. Pokud bych například přirozeně řekl „Hey Google, Set LEDs Blue“(tak přirozené, jako může křičet na zařízení), zadal bych do pole Set LEDs $. Udělejte to pro všechna 3 pole s různými verzemi příkazu.

Byly to 3, které jsem použil

LED diody $

Nastavte LED diody $

Nastavit barvu LED $

Poslední pole je to, na co chcete, aby váš domov Google odpověděl po vyslovení vašeho příkazu. Může to být cokoli chcete, ale použil jsem nastavení barvy na $. $ Znamená, že bude barvu opakovat.

Klikněte na Vytvořit spoušť

Krok 4: Nastavení IFTTT (akce)

Nastavení IFTTT (akce)
Nastavení IFTTT (akce)
Nastavení IFTTT (akce)
Nastavení IFTTT (akce)

Po kliknutí na Vytvořit spoušť se načte zpět do tohoto zobrazení, ale toto bylo nahrazeno logem Google Assistant. Pokračujte kliknutím na +to

Totéž jako dříve, kde vás přivede na vyhledávací lištu. Zadejte Webhooks a klikněte na ikonu webhooku pod vyhledávacím panelem. V části Vybrat akci pro Webhooky je pouze jedna možnost, takže klikněte na Vytvořit webový požadavek.

Tady je to trochu složité. Protože Google není jiný počítač ve vaší domácnosti, budete potřebovat svoji externí IP adresu. To bude vyžadovat určité přesměrování portů, ale toho se dotkneme později. Chcete -li získat svou externí IP adresu, přejděte na

Do pole URL zadejte https://xxx.xxx.xxx.xxx:3000/{{TextField}} (x je vaše externí IP adresa). V případě, že jste zvědaví, bude mít TextField barvu, kterou jste vybrali při provádění příkazu. Používáme 3000, protože to je port, na kterém běží server Raspberry Pi Express. (Můžete změnit port v kódu, ale používáme pouze výchozí nastavení pro Express)

Jako metodu vyberte POST.

Jako Typ obsahu vyberte text/prostý.

Jako text zadejte {{TextField}}

Ti z vás, kteří vědí, jak funguje příkaz POST, by si mysleli, že pokud analyzujete vlastnost těla požadavku, získáte barvu. Z nějakého důvodu není do pole těla požadavku nikdy nic vloženo, takže ve skutečnosti analyzuji adresu URL barvy. Doufám, že se to brzy napraví, protože by to zjednodušilo můj kód na trase index.js. Ale odbočil jsem.

Nakonec na další stránce klikněte na Vytvořit akci a poté na Dokončit. (Vypnul jsem oznámení, ale to je preference)

Krok 5: Přesměrování portů

Předávání portů
Předávání portů
Předávání portů
Předávání portů

Zde je obtížné to vysvětlit, protože všechny směrovače jsou jiné …

Nyní máme Google, který do našeho domu odeslal příkaz pomocí portu 3000, ale neví, na jaké zařízení v síti LAN musí jít. Abychom to napravili, musíme přesměrovat port 3000 na místní IP adresu vašeho Raspberry Pi.

Přejděte do routeru pomocí 10.0.0.1 nebo 192.168.1.1 (také jsem to viděl, kde je poslední číslice 254) a najděte přesměrování portů. V přesměrování portů, podobně jako na obrázku, pojmenujete nové zařízení (IFTTT) a přepošlete port (3000) na IP adresu Pi (v mém případě 10.0.0.11).

Uložte nové nastavení, restartujte router a zkontrolujte, zda váš server Raspberry Pi stále běží. Pokud neběží, spusťte jej znovu.

Vraťte se na tento šikovný web https://canyouseeme.org/. Pod vaší IP adresou je kontrola portu. Za předpokladu, že je předávání portů správné, zadejte 3000 a zkontrolujte port. Mělo by se to vrátit s úspěchem.

Krok 6: Kontrola vaší dosavadní práce

Kontrola vaší dosavadní práce
Kontrola vaší dosavadní práce
Kontrola vaší dosavadní práce
Kontrola vaší dosavadní práce

Nyní … okamžik, na který jste čekali … Řekněte Googlu příkaz, jako jsou modré LED diody (pokud jste následovali můj příklad).

Za předpokladu, že vše proběhlo správně, získáte výstup viditelný na obrázku. Obvod zatím nemáme, takže uvidíte pouze text na obrazovce. Zpracování z Googlu a zobrazení na Pi obvykle trvá sekundu nebo 2.

(Přejít na další krok, pokud to vyšlo podobně jako na obrázku)

Pokud by to nefungovalo, je třeba se podívat na několik věcí…

Na obrázku je čára, která říká

POST /barva /modrá 200 250,458 ms - 2

Důležitou součástí je dvoustovka. Pokud nevidíte 200, pak byl špatný POST, což znamená, že váš server nevěděl, co má s daty dělat. Vraťte se ke kroku 2 a zkontrolujte soubor index.js.

Také na obrázku

stdout: modrá

stderr:

Toto je výstup ze souboru python, který spouští diody LED. Pokud tam vidíte chybu, je možné, že v kroku 2 nemáte nainstalovaný ovladač.

A konečně, pokud se vůbec nic nezobrazí … váš IFTTT možná nebyl správně nastaven nebo se mu nepodařilo připojit k serveru. Vraťte se na stránku IFTTT a v horní navigační liště klikněte na Aktivita. Tam můžete vidět pokaždé, když se vaše aplikace spustí, a pokud došlo k chybě, můžete vidět, co to bylo. Udělal jsem příkaz Google s vypnutým serverem Pi a zobrazila se chyba na obrázku.

Krok 7: Budování obvodu

Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu

Důvod, proč to musíme udělat, je ten, že Raspberry Pi nemají dostatek energie … Takže řešením je … VÍCE SÍLY (Tim, nástrojář Taylor zavrčí v dálce). Alternativní napájecí zdroj (12V 2A)

Materiály pro obvodovou část

  • Protoboard
  • Drát
  • RGB LED pásek
  • Napájení 12 V - cokoli nad 2 A by mělo být v pořádku
  • DC Barrel Jack - stejná velikost jako napájecí zdroje
  • Výkonové tranzistory NPN BJT (x3) - používám TIP31C
  • Záhlaví pinů pro muže a ženy

Pomocí šikovného obrázku, který jsem ukradl z interwebů s GPIO Pi Zero, můžete vidět, že GPIO17, GPIO18 a GPIO 27 jsou s GND hned vedle sebe. Použijeme čtverec se 4 piny (piny 11, 12, 13, 14).

Nejprve bych doporučil pájení mužských hlaviček na váš LED pás, jak je vidět na obrázku (není to moje nejlepší práce). To umožňuje snadné odpojení v případě potřeby. Použil jsem samičí záhlaví pro připojení LED pásku k mému protoboardu a mužské záhlaví od protoboardu k Raspberry Pi. (Jako zdroj napájení/signálu vždy používejte zásuvkové konektory). Nemusíte přesouvat všechny piny Pi vedle sebe jako já … Jen jsem chtěl, aby to vypadalo čistě, ale bylo to hodně práce.

Vysvětlení obvodu

Pro ty z vás, kteří neznají tranzistory, jsou tranzistory v podstatě digitální přepínač. Piny GPIO z Pi spouštějí tři přepínače (červený, zelený a modrý). Když se podíváme konkrétně na ČERVENOU ve schématu zapojení, když je GPIO_17 zapnutý, spínač „sepne“spojením ČERVENÉHO s GND a způsobí rozsvícení červených světel. Když se GPIO_17 vypne, spínač je otevřený a světla jsou vypnutá.

Základna - GPIO

Sběratel - barvy (ČERVENÁ, ZELENÁ, MODRÁ)

Vysílač - uzemnění (jak napájecího zdroje, tak Pi)

Nezapomeňte připojit uzemnění Pi k uzemnění napájecího zdroje. Světla budou stále fungovat, ale budou vypadat velmi tlumeně, dokud nebude uzemněna zem.

Mám na protoboardu zařízení vypadající jako 4. tranzistor. Je to L7805CV, který slouží k převodu 12 V na 5 V, takže jsem mohl napájet Pi na stejném obvodu. Fungovalo to, ale stále se zahřívalo, takže jsem odstranil jeho připojení.

Krok 8: Vyzkoušejte to

Jakmile dokončíte zapojení, restartujte Pi před provedením jakýchkoli připojení. Důvodem je, že piny jsou pravděpodobně stále aktivní z testu serveru. Alternativně můžete zabít server a službu pigpiod.

Zapojte LED diody a propojky z protoboardu do Pi. Před napájením dvakrát zkontrolujte všechna připojení. Pokud jste to špatně zapojili, můžete smažit svůj Pi (žádný tlak).

Kontrolní seznam

  • Zkontrolujte vodiče
  • Power Pi
  • Napájecí obvod
  • Spusťte server (DEBUG = webapp:* npm start while in the ~/piWebpage/webApp directory)
  • Řekněte Googlu, aby udělal vaše nabídky!

GRATULUJEME, nic jste nevyhodili do vzduchu a své LED diody můžete nyní ovládat z domovské stránky Google.

Pokud máte problémy, zanechte komentáře a já udělám vše pro to, abych se vám ozval!

Doporučuje: