Obsah:

LED diódy ovládané domovom Google: 8 krokov
LED diódy ovládané domovom Google: 8 krokov

Video: LED diódy ovládané domovom Google: 8 krokov

Video: LED diódy ovládané domovom Google: 8 krokov
Video: ESP32 Tutorial 8 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learnig kit 2024, November
Anonim
LED diódy ovládané domovom Google
LED diódy ovládané domovom Google
LED diódy ovládané domovom Google
LED diódy ovládané domovom Google

V poslednom čase mám na rukách veľa voľného času, a tak som pracoval na množstve projektov.

Tento projekt vám umožní ovládať RGB LED diódy cez Google Home pomocou Raspberry Pi. Teraz existujú 3 časti projektu, nastavenie Raspberry Pi, nastavenie Google Home pomocou vlastného príkazu pomocou IFTTT a potom vytvorenie obvodu pre svetlá. Okruh som si vyrobil sám, ale stavím sa, že od Adafruit dostanete niečo, čo robí, čo je potrebné.

Materiály pre časť Raspberry Pi

  • Raspberry Pi - akýkoľvek bude fungovať, ale ja používam nulu
  • Bezdrôtový dongle - ak Pi nemá vstavané Wifi
  • Domovská stránka Google - voliteľné, ak máte v telefóne asistenta Google

Materiály pre obvodovú časť- Nenechajte sa tým odradiť … Je to celkom jednoduché

  • Protoboard
  • Drôt
  • LED pásik
  • Napájanie 12 V - čokoľvek nad 2 ampéry by malo byť v poriadku
  • Jack Barrel Jack - rovnaká veľkosť ako napájacie zdroje
  • Výkonové tranzistory NPN BJT (x3) - používam TIP31C
  • Mužské a ženské kolíkové hlavičky - voliteľné, ale dôrazne sa odporúča

Krok 1: Sťahovanie Express pre Pi

Sťahovanie Express pre Pi
Sťahovanie Express pre Pi

Nebudem sa príliš rozpisovať o nastavení Pi, pretože existuje veľa návodov na ich nastavenie.

Čo budete potrebovať, aby som nepokryl…

  • Bliká Raspberry Pi s najnovším Raspbianom
  • Nastavte sieťovú kartu, aby ste mali prístup na internet z počítača Pi
  • Nastavte na Raspberry Pi statickú IP

Teraz tu začína zábava! Musíme nainštalovať nodeJS, npm, expres a expresný generátor.

sudo apt-get aktualizácia

sudo apt-get install nodejs npm

Akonáhle sú nainštalované, spustite nasledujúce

npm nainštalovať expresný generátor expresov

Express vám umožňuje vytvoriť úplne základný webový server, ktorý bude váš Raspberry Pi používať. Expresný generátor iba automaticky generuje súbory pre expresný server.

Vytvorte adresár a vložte doň cd. Pomenoval som svoj piWebpage. Teraz spustite nasledujúce (zobrazené aj na obrázku)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Tým sa vygeneruje priečinok s názvom webApp so všetkými expresnými súbormi. Ak plánujete neskôr s touto webovou stránkou urobiť viac a máte radi PUG, nahraďte --view = ejs za --view = pug. Webovej stránky sa nedotkneme, takže v prípade tejto aplikácie nezáleží na tom, čo používame.

Krok 2: Nastavenie servera Pi

Presuňte sa do nového adresára webApp.

cd webApp

npm nainštalovať

Inštalácia npm bude nejaký čas trvať, pretože inštaluje všetky závislosti pre expres.

Vložte súbor setColor.py do priečinka webApp. Tento súbor obsahuje niekoľko predvolieb pre základné farby. Neváhajte pridať ďalšie, ako sa vám páči. Rozsah je od 0 do 255, kde 255 je plnofarebných. V určitom okamihu pravdepodobne pridám možnosť stlmenia svetiel, ale zatiaľ majú plný jas.

Presuňte sa na trasy

cd trasy

Teraz nahraďte index.js priloženým súborom. Tým sa pridajú niektoré riadky na prijatie príkazu POST, ktorý bude odosielať domovská stránka Google. Z toho POST získame vybranú farbu a povieme Pi, aby spustila skript python setColor na úpravu svetiel.

Posledná vec … Vráťte sa do priečinka webApp.

cd ~/piWebpage/webApp

Pomocou obľúbeného editora vložte a uložte nižšie uvedený kód do súboru webApp.js. Kdekoľvek je v poriadku, pokiaľ je to pred „module.exports = app;“

// Nastavenie hardvérového ovládača LEDconcon {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'); });

Ako hovorí komentár, pigpiod je hardvérový ovládač pre signály PWM, ktoré použijeme na úpravu farieb LED. Verím, že je už nainštalovaný v Raspbian, ale ak nie …

sudo apt-get install pigpiod

Teraz skutočný test! Spustenie servera!

DEBUG = webapp:* npm start

Krok 3: Nastavenie IFTTT (spúšťač)

Nastavenie IFTTT (spúšťač)
Nastavenie IFTTT (spúšťač)
Nastavenie IFTTT (spúšťač)
Nastavenie IFTTT (spúšťač)

IFTTT dokáže veľa a veľmi by som odporučil pozrieť sa na niektoré aplikácie.

Najprv si musíte vytvoriť účet. Používajte rovnaký účet Google priradený k vašej domovskej stránke Google, inak sa nebudú synchronizovať. Po dokončení a prihlásení kliknite v pravom hornom rohu stránky IFTTT, kde sa zobrazuje vaše meno a avatar. Potom v rozbaľovacom zozname kliknite na položku Nový aplet.

Ak ste zvedaví, IFTTT znamená IF This Then That, ak ste si to nevšimli na obrazovke, ktorá sa objaví. Čo teda chceme, je ako Google Assistant, potom Webhook ako naše možnosti.

Pokračujte kliknutím na +toto, čím sa načíta vyhľadávací panel. Do vyhľadávania napíšte Google Assistant a kliknite na ikonu pod vyhľadávaním.

V časti Vybrať spúšť vyberte tretiu možnosť s názvom Vyslovte frázu s textovou prísadou. Teraz vám to umožní mať 3 príkazy, ktoré vykonajú rovnakú akciu. $ Do frázy pridáte tam, kde by ste uviedli farbu. Ak by som napríklad povedal „Hej Google“, nastavte LED diódy na modro (tak prirodzene, ako to len na zariadení môže kričať), potom by som napísal do poľa Nastaviť LED diódy $. Vykonajte to pre všetky 3 polia s rôznymi verziami príkazu.

Tri, ktoré som použil, boli

LED diódy $

Nastavte LED diódy $

Nastaviť farbu LED $

Posledné pole je to, na čo chcete, aby váš domovský server Google odpovedal po vyslovení vášho príkazu. Môže to byť čokoľvek, čo chcete, ale použil som nastavenie farby na $. $ Znamená, že farbu zopakuje.

Kliknite na položku Vytvoriť spúšťač

Krok 4: Nastavenie IFTTT (akcia)

Nastavenie IFTTT (akcia)
Nastavenie IFTTT (akcia)
Nastavenie IFTTT (akcia)
Nastavenie IFTTT (akcia)

Po kliknutí na položku Vytvoriť spúšťač sa načítate späť do tohto a potom do tohto zobrazenia, ktoré však bolo nahradené logom Asistenta Google. Pokračujte kliknutím na +

To isté ako predtým, kde vás zavedie na panel vyhľadávania. Napíšte Webhooks a kliknite na ikonu webhooku pod vyhľadávacím panelom. V časti Vybrať akciu pre webhooky je len jedna možnosť, takže kliknite na položku Vytvoriť webovú žiadosť.

Tu je to trochu zložité. Pretože Google nie je ďalším počítačom vo vašej domácnosti, budete potrebovať svoju externú IP adresu. Bude to vyžadovať určité presmerovanie portov, ale toho sa dotkneme neskôr. Ak chcete získať svoju externú adresu IP, navštívte stránku

Do poľa URL zadajte https://xxx.xxx.xxx.xxx:3000/{{TextField}} (pričom x je vaša externá adresa IP). V prípade, že ste zvedaví, TextField bude mať farbu, ktorú ste vybrali pri zadávaní príkazu. Používame 3000 preto, že to je port, na ktorom beží server Raspberry Pi Express. (V kóde môžete zmeniť port, ale používame iba predvolené nastavenia pre Express)

V časti Metóda vyberte POST.

Pre Typ obsahu vyberte text/obyčajný text.

Do poľa Body napíšte {{TextField}}

Tí z vás, ktorí vedia, ako funguje príkaz POST, by si mysleli, že ak analyzujete vlastnosť tela požiadavky, získate farbu. Z nejakého dôvodu sa do telesného poľa žiadosti nikdy nič nevkladá, takže v skutočnosti analyzujem adresu URL farby. Dúfam, že sa to čoskoro napraví, pretože by to zjednodušilo môj kód na trase index.js. Ale odbočujem.

Nakoniec kliknite na Vytvoriť akciu a potom na ďalšej stránke na Dokončiť. (Vypol som upozornenia, ale to je prednosť)

Krok 5: Presmerovanie portov

Port Forwarding
Port Forwarding
Port Forwarding
Port Forwarding

Tu je ťažké veci vysvetliť, pretože všetky smerovače sú rôzne …

Teraz máme Google, ktorý nám poslal príkaz do domu pomocou portu 3000, ale nevie, na ktoré zariadenie v sieti LAN musí ísť. Aby sme to napravili, musíme port 3000 presmerovať na miestnu IP adresu vášho Raspberry Pi.

Choďte do svojho smerovača pomocou buď 10.0.0.1 alebo 192.168.1.1 (videl som to aj tam, kde je posledná číslica 254) a nájdite presmerovanie portov. Pri presmerovaní portov, podobne ako na obrázku, pomenujete nové zariadenie (IFTTT) a presmerujete port (3000) na IP adresu Pi (v mojom prípade 10.0.0.11).

Uložte nové nastavenie, reštartujte smerovač a skontrolujte, či je váš server Raspberry Pi stále spustený. Ak nebeží, spustite ho znova.

Vráťte sa na tento šikovný web https://canyouseeme.org/. Pod vašou IP adresou je kontrola portu. Za predpokladu, že je vaše presmerovanie portov správne, zadajte 3 000 a skontrolujte port. Malo by sa to vrátiť s úspechom.

Krok 6: Kontrola vašej doterajšej práce

Kontrola vašej doterajšej práce
Kontrola vašej doterajšej práce
Kontrola vašej doterajšej práce
Kontrola vašej doterajšej práce

Teraz … moment, na ktorý ste čakali … Povedzte spoločnosti Google príkaz, ako napríklad modré diódy LED (ak ste nasledovali môj príklad).

Za predpokladu, že všetko prebehlo správne, získate výstup viditeľný na obrázku. Zatiaľ nemáme obvod, takže uvidíte iba text na obrazovke. Spracovanie z Googlu a zobrazenie na počítači Pi zvyčajne trvá druhé alebo dve oneskorenia.

(Ak to vyzerá podobne ako na obrázku, preskočte na ďalší krok)

Teraz je tu niekoľko vecí, na ktoré by ste sa mali pozrieť, ak to nefungovalo …

Na obrázku je čiara, ktorá hovorí

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

Dvojstovka je dôležitou súčasťou. Ak nevidíte číslo 200, bol tu zlý POST, čo znamená, že váš server nevedel, čo s údajmi urobiť. Vráťte sa späť na krok 2 a skontrolujte súbor index.js.

Tiež na obrázku

výstup: modrý

stderr:

Toto je výstup zo súboru python, ktorý prevádzkuje diódy LED. Ak tam vidíte chybu, je možné, že v kroku 2 nemáte nainštalovaný ovládač.

Nakoniec, ak sa nič nezobrazí … váš IFTTT nebol správne nastavený alebo sa mu nepodarilo pripojiť k serveru. Vráťte sa na stránku IFTTT a v hornom navigačnom paneli kliknite na položku Aktivita. Tam vidíte vždy, keď sa aplikácia spustila, a ak sa vyskytla chyba, môžete vidieť, čo to bolo. Vykonal som príkaz Google s vypnutým serverom Pi a na obrázku sa zobrazila chyba.

Krok 7: Budovanie obvodu

Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu

Dôvod, prečo to musíme urobiť, je ten, že Raspberry Pi nemá dostatok energie … Riešením teda je … VIAC SILY (Tim, nástrojár, Taylor chrčí do diaľky). Alternatívny zdroj napájania (12V 2A)

Materiály pre časť obvodu

  • Protoboard
  • Drôt
  • RGB LED pásik
  • Napájanie 12 V - čokoľvek nad 2 ampéry by malo byť v poriadku
  • Jack Barrel Jack - rovnaká veľkosť ako napájacie zdroje
  • Výkonové tranzistory NPN BJT (x3) - používam TIP31C
  • Mužské a ženské kolíkové hlavičky

Vďaka šikovnému obrázku, ktorý som ukradol z medziplošníc s GPIO Pi Zero, môžete vidieť, že GPIO17, GPIO18 a GPIO 27 sú vedľa seba s GND. Použijeme tento štvorec so 4 kolíkmi (piny 11, 12, 13, 14).

Najprv by som odporučil spájkovať mužské hlavičky na pásik LED, ako je vidieť na obrázku (nie je to moje najlepšie dielo). To umožňuje ľahké odpojenie, ak to budete niekedy potrebovať. Na pripojenie LED pásu k môjmu protoboardu som použil ženské hlavičky a z protoboardu na Raspberry Pi samčie hlavičky. (Ako zdroj napájania/signálu vždy používajte prepojky). Nemusíte presúvať všetky kolíky Pi vedľa seba ako ja … Len som chcel, aby to vyzeralo čisto, ale bolo s tým veľa práce.

Vysvetlenie obvodu

Pre tých z vás, ktorí nepoznajú tranzistory, sú tranzistory v podstate digitálnym prepínačom. Piny GPIO z Pi spúšťajú tri prepínače (červený, zelený a modrý). Keď sa pozrieme konkrétne na ČERVENÉ v schéme zapojenia, keď je GPIO_17 zapnutý, spínač „zatvorí“spojenie ČERVENÉ a GND a spôsobí rozsvietenie červených svetiel. Keď sa GPIO_17 vypne, vypínač je otvorený a svetlá sú vypnuté.

Základňa - GPIO

Zberateľ - Farby (ČERVENÁ, ZELENÁ, MODRÁ)

Vysielač - uzemnenie (napájacieho zdroja aj pí)

Uistite sa, že uzemnenie pí je spojené so zemou napájacieho zdroja. Svetlá budú stále fungovať, ale kým nebudú uzemnené, budú pôsobiť veľmi tlmene.

Na svojom protoboarde mám zariadenie vyzerajúce ako 4. tranzistor. Je to L7805CV, ktorý sa používa na prevod 12 V na 5 V, takže som mohol napájať Pi na rovnakom obvode. Fungovalo to, ale stále sa zahrievalo, takže som odstránil jeho spojenia.

Krok 8: Vyskúšajte to

Po dokončení obvodu reštartujte zariadenie Pi a až potom vykonajte akékoľvek pripojenia. Dôvodom je, že piny sú pravdepodobne stále aktívne z testu servera. Prípadne môžete zabiť server a službu pigpiod.

Pripojte diódy LED a prepojky z protoboardu k pí. Pred napájaním dvakrát skontrolujte všetky pripojenia. Ak ste to zle zapojili, môžete usmažiť svoj Pi (bez tlaku).

Kontrolný zoznam

  • Skontrolujte vodiče
  • Power Pi
  • Napájací obvod
  • Spustite server (DEBUG = webapp:* npm start while in the ~/piWebpage/webApp directory)
  • Povedzte spoločnosti Google, aby urobila vaše ponuky!

GRATULUJEME, nič ste nevybuchli a svoje LED diódy môžete teraz ovládať z domova Google.

Ak máte problémy, zanechajte komentár a ja sa budem snažiť dostať sa k vám späť!

Odporúča: