Tartalomjegyzék:

Google Home vezérelt LED -ek: 8 lépés
Google Home vezérelt LED -ek: 8 lépés

Videó: Google Home vezérelt LED -ek: 8 lépés

Videó: Google Home vezérelt LED -ek: 8 lépés
Videó: ZemiSmart ZM-H7 - индукционный зигби выключатель, работающий от взмаха руки 2024, November
Anonim
Google Home vezérelt LED -ek
Google Home vezérelt LED -ek
Google Home vezérelt LED -ek
Google Home vezérelt LED -ek

Az utóbbi időben sok szabadidőm volt a kezemben, ezért rengeteg projekten dolgoztam.

Ez a projekt lehetővé teszi az RGB LED -ek vezérlését a Google Home segítségével Raspberry Pi segítségével. Most a projekt három részből áll: a Raspberry Pi beállítása, a Google Home beállítása egyéni paranccsal az IFTTT használatával, majd áramkör létrehozása a fényekhez. Magam készítettem az áramkört, de fogadok, hogy kaphat valamit az Adafruit -tól, amire szükség van.

Anyagok a Raspberry Pi alkatrészhez

  • Raspberry Pi - bármelyik működni fog, de én nullát használok
  • Vezeték nélküli hardverkulcs - ha a Pi nem rendelkezik beépített Wifi -vel
  • Google Home - Nem kötelező, ha a Google Segéd van a telefonján

Anyagok az áramkör alkatrészekhez- Ne hagyja, hogy ez elriasztja Önt … Ez meglehetősen egyszerű

  • Protoboard
  • Huzal
  • LED-csík
  • 12 V -os tápegység - minden, ami 2 amper felett van, rendben kell lennie
  • DC Barrel Jack - Ugyanaz a méret, mint a tápegységé
  • NPN BJT teljesítménytranzisztorok (x3) - TIP31C -t használok
  • Férfi és női tűfejlécek - opcionális, de erősen ajánlott

1. lépés: Az Express letöltése a Pi -hez

Az Express letöltése a Pi -hez
Az Express letöltése a Pi -hez

Nem megyek túl sok részletbe a Pi beállításával kapcsolatban, mert nagyon sok oktatóanyag létezik a beállításukhoz.

Mit kell tenned, amire nem térek ki…

  • Villogó Raspberry Pi a legújabb Raspbian -szal
  • Állítsa be a hálózati kártyát, hogy hozzáférhessen az internethez a Pi -ről
  • Állítson be egy statikus IP -t a Raspberry Pi -n

Most itt kezdődik a mulatság! Telepítenünk kell a nodeJS, npm, express és expressz-generátort.

sudo apt-get update

sudo apt-get install nodejs npm

Miután telepítette ezeket, futtassa a következőt

npm express express generátor telepítése

Az Express lehetővé teszi, hogy egy nagyon egyszerű webszervert készítsen a Raspberry Pi számára. Az Express-generator csak automatikusan generál fájlokat egy expressz kiszolgálóhoz.

Készítsen egy könyvtárat, és írjon le egy CD -t a könyvtárba. Az enyémet piWebpage -nek neveztem el. Most futtassa a következőt (a képen is látható)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Ez létrehoz egy webApp nevű mappát az összes expressz fájllal. Ha később többet szeretne tenni ezzel az oldallal, és tetszik a PUG, cserélje le a --view = ejs szót a --view = pug elemre. Nem fogjuk megérinteni a weboldalt, ezért az alkalmazás esetében nem mindegy, hogy mit használunk.

2. lépés: A Pi szerver beállítása

Lépjen az új webApp könyvtárba.

cd webApp

npm telepítés

Az npm telepítése eltart egy ideig, mert az összes függőséget telepíti az expressz számára.

Illessze be a setColor.py fájlt a webApp mappába. Ez a fájl tartalmaz néhány előre beállított alapszínt. Nyugodtan adhat hozzá még tetszés szerint. A tartomány 0 és 255 között van, ahol a 255 színes. Egy bizonyos ponton valószínűleg hozzáadom a fények tompításának képességét, de egyelőre teljes fényerővel rendelkeznek.

Lépjen az útvonalakba

cd útvonalak

Most cserélje ki az index.js fájlt a csatolt fájlra. Ez néhány sort ad hozzá a POST parancs fogadásához, amelyet a Google Home küld. Ebből a POST -ból kiválasztjuk a színt, és azt mondjuk a Pi -nek, hogy futtassa a setColor python szkriptet a fények beállításához.

Még egy utolsó dolog … Térjen vissza a webApp mappába.

cd ~/piWebpage/webApp

A kedvenc szerkesztőjével illessze be és mentse el az alábbi kódot a webApp.js fájlba. Bárhol rendben van, amíg a "modul.exports = app;"

// A LED hardver illesztőprogramjának beállítása {exec} = need ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Hiba a LED -illesztőprogram betöltésekor'); return;} else console.log ('LED -illesztőprogram sikeresen betöltve'); });

Mint a megjegyzés mondja, a pigpiod a PWM jelek hardver illesztőprogramja, amelyet a LED színek beállítására használunk. Azt hiszem, már telepítve van a Raspbianban, de ha nem…

sudo apt-get install pigpiod

Most következzen az igazi teszt! A szerver indítása!

DEBUG = webalkalmazás:* npm start

3. lépés: IFTTT beállítás (trigger)

IFTTT beállítás (trigger)
IFTTT beállítás (trigger)
IFTTT beállítás (trigger)
IFTTT beállítás (trigger)

Az IFTTT sokat tehet, és nagyon ajánlom, hogy nézzen körül néhány alkalmazásban.

Először is létre kell hoznia egy fiókot. Használja ugyanazt a Google -fiókot, amelyet a Google Home -hoz társított, különben nem szinkronizálódnak együtt. Miután befejezte és bejelentkezett, kattintson az IFTTT oldal jobb felső sarkára, ahol az Ön neve és avatarja látható. Ezután kattintson az Új kisalkalmazás elemre a legördülő menüben.

Ha kíváncsi, az IFTTT az IF This then That (IF ez azután) rövidítést jelenti, ha nem vette észre a felbukkanó képernyőn. Tehát azt szeretnénk, ha Ha a Google Segéd, akkor a Webhook lehetõség.

Folytassa a +erre kattintva, amely betölti a keresősávot. A keresésben írja be a Google Segédet, és kattintson a keresés alatti ikonra.

A Kiválasztó aktiválása részben válassza ki a 3. Mondat egy mondatot szövegösszetevővel című opciót. Ez lehetővé teszi, hogy 3 parancsot adjon meg, amelyek ugyanazt a műveletet hajtják végre. Hozzáadja a $ kifejezést, ahol megemlíti a színt. Például, ha természetesen azt mondanám, hogy Hey Google, Set LEDs Blue (olyan természetes, amennyire az eszközön kiabálni lehet), akkor beírnám a Set LEDs $ mezőbe. Végezze el mind a 3 mezőt a parancs különböző verzióival.

A 3 amit használtam

LED -ek $

Állítsa be a LED -eket $

A LED színének beállítása $

Az utolsó mezőben azt szeretné, ha a Google Home válaszolna a parancs kiadása után. Bármi lehet, de én a Szín beállítása $ -ra használtam. A $ azt jelenti, hogy vissza fogja ismételni a színt.

Kattintson a Trigger létrehozása gombra

4. lépés: IFTTT beállítás (művelet)

IFTTT beállítás (művelet)
IFTTT beállítás (művelet)
IFTTT beállítás (művelet)
IFTTT beállítás (művelet)

Miután rákattintott a Trigger létrehozása gombra, betöltődik az if, akkor az adott nézetbe, de ezt felváltotta a Google Assistant logó. Folytassa a +gombra kattintva

Ugyanaz, mint korábban, amikor a keresősávba vezet. Gépelje be a Webhooks elemet, és kattintson a webhook ikonra a keresősáv alatt. A Webhooks művelet kiválasztása alatt csak egy lehetőség van, ezért kattintson a Webes kérés létrehozása lehetőségre.

Itt a dolgok kicsit bonyolulttá válnak. Mivel a Google nem egy másik számítógép az Ön házában, szüksége lesz a külső IP -címére. Ehhez némi kiküldés szükséges, de erre később kitérünk. A külső IP -cím megszerzéséhez keresse fel a https://canyouseeme.org/ webhelyet

Az URL mezőbe írja be: https://xxx.xxx.xxx.xxx:3000/{{TextField}} (az x -ek a külső IP -címe). Ha kíváncsi vagy, a TextField parancs színe a kiválasztott szín lesz. A 3000 -et azért használjuk, mert a Raspberry Pi Express szerver ezen a porton fut. (Megváltoztathatja a portot a kódban, de csak az Express alapértelmezett beállításait használjuk)

A Metódhoz válassza a POST lehetőséget.

A Content Type (Tartalom típusa) mezőben válassza a text/plain (Szöveg/egyszerű) lehetőséget.

A törzs mezőbe írja be: {{TextField}}

Azok, akik ismerik a POST parancs működését, azt gondolnák, hogy ha elemezi a kérés törzs tulajdonságát, akkor megkapja a színt. Valamilyen oknál fogva soha semmi nem kerül a kérés törzsmezőjébe, ezért valójában elemzem a szín URL -jét. Remélem, ez hamarosan kijavításra kerül, mivel ez egyszerűsítené a kódomat az index.js útvonalon. De kitérek.

Végül kattintson a Művelet létrehozása, majd a Befejezés gombra a következő oldalon. (Kikapcsoltam az értesítéseket, de ez a preferencia)

5. lépés: Porttovábbítás

Porttovábbítás
Porttovábbítás
Porttovábbítás
Porttovábbítás

Itt nehéz megmagyarázni a dolgokat, mert minden útválasztó más …

Most a Google parancsot küld a házunkba a 3000 -es porton keresztül, de nem tudja, melyik LAN -eszközre kell mennie. Ennek orvoslására továbbítanunk kell a 3000 -es portot a Raspberry Pi helyi IP -címére.

Menjen be az útválasztóba a 10.0.0.1 vagy a 192.168.1.1 használatával (én is láttam, ahol az utolsó számjegy 254), és keresse meg a porttovábbítást. A porttovábbítás során a képhez hasonlóan új eszközt (IFTTT) nevez el, és a portot (3000) továbbítja a Pi IP -címére (az én esetemben 10.0.0.11).

Mentse el az új beállítást, indítsa újra az útválasztót, és ellenőrizze, hogy a Raspberry Pi szerver továbbra is fut -e. Ha nem fut, indítsa újra.

Térjen vissza erre a praktikus webhelyre: https://canyouseeme.org/. Az IP -címe alatt van egy portellenőrző. Feltételezve, hogy a porttovábbítás helyes, írja be a 3000 értéket, és nyomja meg az ellenőrző portot. Sikerrel kell visszatérnie.

6. lépés: Az eddigi munkák ellenőrzése

Az eddigi munkák ellenőrzése
Az eddigi munkák ellenőrzése
Az eddigi munkák ellenőrzése
Az eddigi munkák ellenőrzése

Most… a pillanat, amire várt… Mondja el a Google -nak egy parancsot, például a kék LED -eket (ha követte a példámat).

Feltételezve, hogy minden rendben volt, a képen látható kimenetet kapja. Még nincs áramkörünk, így csak a képernyőn látható szöveget láthatja. Általában egy második vagy két késleltetés van, mielőtt a Google feldolgozza, és megjelenik a Pi -n.

(Ugrás a következő lépésre, ha ez hasonlóan sikerült a képhez)

Most néhány dolgot meg kell nézni, ha nem működik…

A képen van egy sor, amely azt mondja

POST /színes /kék 200 250,458 ms - 2

A 200 a fontos rész. Ha nem lát egy 200 -at, akkor rossz POST volt, ami azt jelenti, hogy a szerver nem tud mit kezdeni az adatokkal. Térjen vissza a 2. lépéshez, és ellenőrizze az index.js fájlt.

A képen is

stdout: kék

stderr:

Ez a LED -eket futtató python fájl kimenete. Ha hibát lát ott, akkor lehet, hogy nincs telepítve az illesztőprogram a 2. lépésben.

Végezetül, ha semmi sem látszott… előfordulhat, hogy az IFTTT nincs megfelelően beállítva, vagy nem tud csatlakozni a szerverhez. Menjen vissza az IFTTT oldalra, és kattintson a felső navigációs sávon a Tevékenység elemre. Itt minden alkalommal láthatja az alkalmazás futtatását, és ha hiba történt, láthatja, hogy mi volt az. Google parancsot adtam ki a Pi szerverrel, és a képen látható hiba történt.

7. lépés: Az áramkör építése

A pálya építése
A pálya építése
A pálya építése
A pálya építése
A pálya építése
A pálya építése

Ezt azért kell megtennünk, mert a Raspberry Pi -nek nincs elég ereje… A megoldás tehát… TÖBB ERŐ (Tim, a szerszámember, Taylor morog a távolban). AKA másik tápegység (12V 2A)

Anyagok az áramköri részhez

  • Protoboard
  • Huzal
  • RGB LED szalag
  • 12 V -os tápegység - minden, ami 2 amper felett van, rendben kell lennie
  • DC Barrel Jack - Ugyanaz a méret, mint a tápegységé
  • NPN BJT teljesítménytranzisztorok (x3) - TIP31C -t használok
  • Férfi és női tűfejlécek

A praktikus kép segítségével, amelyet a Pi Zero GPIO -jából loptam, láthatod, hogy a GPIO17, a GPIO18 és a GPIO 27 egymás mellett vannak GND -vel. Ezt a négycsapos négyzetet fogjuk használni (11, 12, 13, 14).

Először is azt javaslom, hogy a férfi fejléceket forrasztják a LED szalagra a képen látható módon (nem a legjobb munkám). Ez lehetővé teszi a könnyű leválasztást, ha szükséges. Női fejléceket használtam a LED -csík protoboard -hoz való csatlakoztatásához, és férfi fejléceket a protoboard -tól a Raspberry Pi -hez. (Tápellátáshoz/jelforráshoz mindig női csatlakozókat használjon). Nem kell a Pi összes csapját egymás mellé helyezni, mint én … Csak tisztának akartam látni, de sok munka volt.

Áramkörmagyarázat

Azok számára, akik nem ismerik a tranzisztorokat, a tranzisztorok alapvetően digitális kapcsolók. A Pi GPIO csapjai a három kapcsolót (piros, zöld és kék) váltják ki. Ha a kapcsolási rajzon a RED -et nézzük, amikor a GPIO_17 be van kapcsolva, a kapcsoló "bezárul", amely a RED -et a GND -hez csatlakoztatja, és a piros lámpák kigyulladnak. Amikor a GPIO_17 kikapcsol, a kapcsoló nyitva van, és így a lámpák kialszanak.

Bázis - GPIO -k

Gyűjtő - színek (PIROS, ZÖLD, KÉK)

Emitter - földelés (mind a tápegység, mind a Pi)

Győződjön meg arról, hogy a Pi földjét csatlakoztatja a tápegység földjéhez. A lámpák továbbra is működnek, de nagyon gyengének tűnnek, amíg a földet nem csatlakoztatják.

Van egy negyedik tranzisztoros eszköz a protoboardon. Ez egy L7805CV, amelyet 12 V -ról 5 V -ra alakítanak, így a Pi -t ugyanazon az áramkörön tudnám táplálni. Működött, de túlmelegedett, ezért eltávolítottam a csatlakozásait.

8. lépés: Teszteld

Miután befejezte az áramkört, indítsa újra a Pi -t, mielőtt bármilyen kapcsolatot létesítene. Ennek oka az, hogy a csapok valószínűleg továbbra is aktívak a szervertesztből. Alternatív megoldásként megölheti a szervert és a pigpiod szolgáltatást.

Csatlakoztassa a LED -eket és az áthidalókat a protoboardról a Pi -hez. Tápellátás előtt ellenőrizze újra az összes csatlakozást. Ha rosszul csatlakoztatta, akkor megsütheti a Pi -t (nincs nyomás).

Ellenőrző lista

  • Ellenőrizze a vezetékeket
  • Teljesítmény Pi
  • Főáramkör
  • Kiszolgáló indítása (DEBUG = webapp:* npm start a ~/piWebpage/webApp könyvtárban)
  • Mondja meg a Google -nak, hogy tegyen ajánlatot!

GRATULÁLUNK, hogy nem robbant fel semmit, és mostantól vezérelheti LED -jeit a Google Home -ról.

Ha problémája van, hagyjon megjegyzést, és mindent megteszek, hogy visszajöjjek Önhöz!

Ajánlott: