Cuprins:

LED-uri controlate de Google Home: 8 pași
LED-uri controlate de Google Home: 8 pași

Video: LED-uri controlate de Google Home: 8 pași

Video: LED-uri controlate de Google Home: 8 pași
Video: Kit bandă LED RGB TUYA Smart Amazon Alexa & Google Home / disponibil online pe www.led-box.ro 2024, Noiembrie
Anonim
LED-uri controlate de Google Home
LED-uri controlate de Google Home
LED-uri controlate de Google Home
LED-uri controlate de Google Home

În ultimul timp, am avut mult timp liber pe mâini, așa că am lucrat la o grămadă de proiecte.

Acest proiect vă va permite să controlați LED-urile RGB prin Google Home folosind un Raspberry Pi. Acum există 3 părți ale proiectului, configurarea unui Raspberry Pi, configurarea Google Home cu o comandă personalizată folosind IFTTT și apoi crearea unui circuit pentru lumini. Am făcut circuitul singur, dar pun pariu că ai putea obține ceva de la Adafruit care să facă ceea ce este necesar.

Materiale pentru Raspberry Pi Part

  • Raspberry Pi - orice va funcționa, dar eu folosesc un zero
  • Wireless Dongle - dacă Pi nu are încorporat Wifi
  • Google Home - Opțional dacă aveți Asistent Google pe telefon

Materiale pentru partea circuitului - Nu lăsați acest lucru să vă descurajeze … Este destul de simplu

  • Protoboard
  • Sârmă
  • Benzi LED
  • Sursă de alimentare de 12V - Orice lucru de peste 2 Amperi ar trebui să fie în regulă
  • DC Barrel Jack - Aceeași dimensiune ca sursa de alimentare
  • Tranzistoarele de putere NPN BJT (x3) - folosesc TIP31C
  • Anteturi pin masculin și feminin - Opțional, dar foarte recomandat

Pasul 1: Descărcarea Express pentru Pi

Descărcarea Express pentru Pi
Descărcarea Express pentru Pi

Nu am de gând să intru în prea multe detalii despre configurarea Pi, deoarece există atât de multe tutoriale acolo pentru configurarea lor.

Ce va trebui să faceți, pe care nu îl acoper …

  • Raspberry Pi intermitent cu cel mai nou Raspbian
  • Configurați placa de rețea astfel încât să puteți accesa internetul de pe Pi
  • Setați un IP static pe Raspberry Pi

Acum, aici începe distracția! Trebuie să instalăm nodeJS, npm, express și express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Odată ce acestea sunt instalate, rulați următoarele

npm instalați expres-generator expres

Express vă permite să creați un server web de bază pentru Raspberry Pi. Generatorul expres generează automat fișiere pentru un server expres.

Faceți un director și cd în director. L-am numit pe piWebpage. Acum executați următoarele (văzut și în imagine)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Aceasta va genera un folder numit webApp cu toate fișierele expres din acesta. Dacă intenționați să faceți mai multe cu această pagină web mai târziu și vă place PUG, înlocuiți --view = ejs cu --view = pug. Nu vom atinge pagina web, deci pentru această aplicație, nu contează ce folosim.

Pasul 2: Configurare server Pi

Mutați-vă în noul director webApp.

cd webApp

instalare npm

Instalarea npm va dura ceva timp, deoarece instalează toate dependențele pentru expres.

Lipiți setColor.py în folderul webApp. Acest fișier are câteva presetări pentru culorile de bază. Simțiți-vă liber să adăugați mai multe după cum doriți. Gama este de la 0 la 255, unde 255 este întreagă. La un moment dat, voi adăuga probabil abilitatea de a estompa luminile, dar, deocamdată, au o luminozitate completă.

Mutați-vă în rute

trasee cd

Acum înlocuiți index.js cu fișierul atașat. Aceasta va adăuga câteva linii pentru a primi o comandă POST, ceea ce va trimite Google Home. Din acel POST, vom obține culoarea selectată și îi vom spune lui Pi să ruleze scriptul python setColor pentru a regla luminile.

Un ultim lucru … Reveniți la folderul webApp.

cd ~ / piWebpage / webApp

Folosind editorul preferat, lipiți și salvați codul de mai jos în webApp.js. Oriunde este bine, atâta timp cât este înainte de „module.exports = app;”

// Configurare hardware LED driverconst {exec} = require ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Eroare la încărcarea driverului LED'); return;} else console.log ('Driver LED încărcat cu succes'); });

Așa cum spune comentariul, pigpiod este driverul hardware pentru semnalele PWM pe care le vom folosi pentru a regla culorile LED-urilor. Cred că vine deja instalat în Raspbian, dar dacă nu …

sudo apt-get install pigpiod

Acum, pentru adevăratul test! Pornirea serverului!

DEBUG = webapp: * npm start

Pasul 3: Configurare IFTTT (Trigger)

Configurare IFTTT (Trigger)
Configurare IFTTT (Trigger)
Configurare IFTTT (Trigger)
Configurare IFTTT (Trigger)

IFTTT poate face multe și aș recomanda cu nerăbdare să vă uitați în jur la unele dintre aplicații.

Mai întâi, va trebui să vă creați un cont. Utilizați același cont Google asociat cu Google Home, altfel nu se vor sincroniza împreună. După finalizare și conectare, faceți clic pe partea dreaptă sus a paginii IFTTT unde vă arată numele și avatarul. Apoi faceți clic pe Applet nou din meniul derulant.

Dacă sunteți curios, IFTTT înseamnă IF This Then That dacă nu ați observat pe ecranul care apare. Deci, ceea ce ne dorim este Dacă Google Assistant, atunci Webhook ca opțiuni noastre.

Continuați făcând clic pe + aceasta, care va încărca o bară de căutare. În căutare, tastați Asistent Google și faceți clic pe pictograma de sub căutare.

În Alegeți un declanșator, selectați a treia opțiune numită Rostiți o frază cu un ingredient text. Acum acest lucru vă permite să aveți 3 comenzi care vor face aceeași acțiune. Adăugați expresia $ în care ați menționa culoarea. De exemplu, dacă aș spune în mod natural Hei Google, Set LED-uri albastre (pe cât de natural poate fi să țipi la un dispozitiv), aș scrie în câmpul Set LED-uri $. Faceți acest lucru pentru toate cele 3 câmpuri cu versiuni diferite ale comenzii.

Cele 3 pe care le-am folosit au fost

LED-uri $

Setați LED-uri $

Setați culoarea LED-ului $

Ultimul câmp este ceea ce ați dori să răspundă la Google Home după ce ați spus comanda dvs. Poate fi orice vrei, dar am folosit Setarea culorii la $. $ Înseamnă că va repeta culoarea înapoi.

Faceți clic pe Creați declanșatorul

Pasul 4: Configurare IFTTT (acțiune)

Configurare IFTTT (acțiune)
Configurare IFTTT (acțiune)
Configurare IFTTT (acțiune)
Configurare IFTTT (acțiune)

După ce faceți clic pe Creați declanșatorul, veți încărca înapoi în vizualizarea if this, apoi în acea vizualizare, dar aceasta a fost înlocuită cu sigla Asistentului Google. Continuați făcând clic pe + că

Același lucru ca înainte, unde vă aduce la bara de căutare. Tastați Webhooks și faceți clic pe pictograma webhook de sub bara de căutare. Sub Alegeți acțiune pentru Webhooks, există o singură opțiune, deci faceți clic pe Faceți o solicitare web.

Aici lucrurile devin puțin complicate. Deoarece Google nu este un alt computer din casa dvs., veți avea nevoie de adresa IP externă. Acest lucru va necesita o anumită redirecționare a porturilor, dar vom aborda acest lucru mai târziu. Pentru a obține adresa IP externă, accesați

În câmpul URL, tastați https://xxx.xxx.xxx.xxx:3000/{{TextField}} (x-urile fiind adresa dvs. IP externă). În cazul în care sunteți curios, TextField va avea culoarea pe care ați selectat-o atunci când faceți o comandă. Motivul pentru care folosim 3000 este că acesta este portul pe care rulează serverul Raspberry Pi Express. (Puteți schimba portul din cod, dar folosim doar setările implicite pentru Express)

Pentru Metodă, selectați POST.

Pentru Tip conținut, selectați text / simplu.

Pentru Corp, tastați {{TextField}}

Cei dintre voi care știu cum funcționează o comandă POST, ați crede că, dacă analizați proprietatea corpului cererii, veți obține culoarea. Din anumite motive, nimic nu este introdus vreodată în câmpul corpului cererii, așa că analizez de fapt adresa URL pentru culoare. Sper că se va rezolva în curând, deoarece acest lucru ar simplifica codul meu în ruta index.js. Dar deviez.

În cele din urmă, faceți clic pe Creați acțiune și apoi Finalizați pe pagina următoare. (Am dezactivat notificările, dar asta este preferința)

Pasul 5: redirecționarea portului

Port forwarding
Port forwarding
Port forwarding
Port forwarding

Aici lucrurile devin dificil de explicat, deoarece toate routerele sunt diferite …

Acum avem Google care trimite o comandă la noi folosind portul 3000, dar nu știe la ce dispozitiv de pe LAN trebuie să meargă. Pentru a remedia acest lucru, trebuie să redirecționăm portul 3000 la adresa IP locală a Raspberry Pi.

Intrați în router folosind fie 10.0.0.1, fie 192.168.1.1 (l-am văzut și unde ultima cifră este 254) și găsiți redirecționarea porturilor. În redirecționarea porturilor, similar cu imaginea, veți numi un nou dispozitiv (IFTTT) și veți redirecționa portul (3000) către adresa IP a Pi (în cazul meu 10.0.0.11).

Salvați noua setare, reporniți routerul și verificați dacă serverul dvs. Raspberry Pi funcționează în continuare. Dacă nu rulează, porniți-l din nou.

Reveniți la site-ul web la îndemână https://canyouseeme.org/. Sub adresa dvs. IP, are un verificator de porturi. Presupunând că redirecționarea portului este corectă, tastați 3000 și selectați portul de verificare. Ar trebui să revină cu un succes.

Pasul 6: Verificarea activității dvs. până acum

Verificându-vă munca până acum
Verificându-vă munca până acum
Verificându-vă munca până acum
Verificându-vă munca până acum

Acum … momentul pe care l-ați așteptat … Spuneți la Google o comandă precum LED-urile albastre (dacă ați urmat exemplul meu).

Presupunând că toate au mers corect, veți obține rezultatul văzut în imagine. Nu avem încă un circuit, așa că tot ce veți vedea este text pe un ecran. De obicei, există o a doua sau 2 întârziere înainte ca acesta să fie procesat de la Google și să apară pe Pi.

(Treceți la pasul următor dacă acest lucru a ieșit similar cu imaginea)

Acum sunt câteva lucruri de luat în considerare dacă nu a funcționat …

În imagine, există o linie care spune

POST / culoare / albastru 200 250.458 ms - 2

200 este partea importantă. Dacă nu vedeți un 200, atunci a existat un POST rău, ceea ce înseamnă că serverul dvs. nu știa ce să facă cu datele. Reveniți la pasul 2 și verificați fișierul index.js.

Tot în imagine

stdout: albastru

stderr:

Aceasta este ieșirea din fișierul python care rulează LED-urile. Dacă vedeți o eroare acolo, s-ar putea să nu aveți driverul instalat la pasul 2.

În sfârșit, dacă nu a apărut nimic … IFTTT-ul dvs. nu ar fi putut fi configurat corect sau nu a reușit să se conecteze la server. Reveniți la pagina IFTTT și, în bara de navigare de sus, faceți clic pe Activitate. Acolo, puteți vedea de fiecare dată când aplicația dvs. a rulat și, dacă a apărut o eroare, puteți vedea ce a fost. Am făcut o comandă Google cu serverul Pi oprit și am primit eroarea din imagine.

Pasul 7: Construirea circuitului

Construirea circuitului
Construirea circuitului
Construirea circuitului
Construirea circuitului
Construirea circuitului
Construirea circuitului

Motivul pentru care trebuie să facem acest lucru se datorează faptului că Raspberry Pi nu are suficientă putere … Deci soluția este … MAI PUTERE (Tim, omul instrumentului, Taylor mormăie în depărtare). AKA o altă sursă de alimentare (12V 2A)

Materiale pentru circuit

  • Protoboard
  • Sârmă
  • Benzi LED RGB
  • Sursă de alimentare de 12V - Orice lucru de peste 2 Amperi ar trebui să fie în regulă
  • DC Barrel Jack - Aceeași dimensiune ca sursa de alimentare
  • Tranzistoarele de putere NPN BJT (x3) - folosesc TIP31C
  • Anteturi pin masculin și feminin

Folosind imaginea la îndemână pe care am furat-o de pe interweb-uri cu GPIO-ul Pi Zero, puteți vedea GPIO17, GPIO18 și GPIO 27 sunt una lângă alta, cu un GND. Vom folosi acel pătrat de 4 pini (pinii 11, 12, 13, 14).

În primul rând, aș recomanda lipirea anteturilor masculine pe banda LED, așa cum se vede în imagine (nu cea mai bună lucrare a mea). Acest lucru vă permite o deconectare ușoară, dacă vreți vreodată. Am folosit anteturi feminine pentru conectarea benzii cu LED-uri la protoboardul meu și anteturi masculine de la protoboard la Raspberry Pi. (Utilizați întotdeauna conexiuni feminine pentru sursa de alimentare / semnal). Nu trebuie să mișcați toți pinii unul lângă celălalt, așa cum am făcut eu … Voiam doar să arate curat, dar a fost mult de lucru.

Explicația circuitului

Pentru cei dintre voi care nu sunt familiarizați cu tranzistoarele, tranzistoarele sunt practic un comutator digital. Pinii GPIO de la Pi declanșează cele trei comutatoare (roșu, verde și albastru). Privind în mod specific la RED în schema circuitului, când GPIO_17 este pornit, comutatorul „se închide” conectând RED la GND, provocând aprinderea luminilor roșii. Când GPIO_17 se oprește, atunci comutatorul este deschis și astfel luminile sunt stinse.

Baza - GPIO

Colector - Culori (ROȘU, VERZ, ALBASTRU)

Emițător - masă (atât a sursei de alimentare, cât și a Pi)

Asigurați-vă că conectați masa lui Pi la solul sursei de alimentare. Luminile vor funcționa în continuare, dar vor apărea foarte slabe până când pământul este conectat.

Am un al 4-lea dispozitiv cu aspect de tranzistor pe protoboard. Este un L7805CV care este folosit pentru a converti 12V la 5V, așa că aș putea alimenta Pi pe același circuit. A funcționat, dar s-a menținut supraîncălzit, așa că i-am eliminat conexiunile.

Pasul 8: Testează-l

Odată completat cu circuitul, reporniți Pi înainte de a face conexiuni. Acest lucru se datorează faptului că pinii sunt probabil încă activi din testul serverului. Alternativ, puteți ucide serverul și serviciul pigpiod.

Conectați LED-urile și jumperii de la protoboard la Pi. Verificați dublu toate conexiunile înainte de a furniza energie. Dacă l-ați conectat greșit, s-ar putea să vă prăjiți Pi (fără presiune).

Lista de verificare

  • Verificați firele
  • Power Pi
  • Circuit de alimentare
  • Start Server (DEBUG = webapp: * npm pornește în directorul ~ / piWebpage / webApp)
  • Spuneți-i Google să vă liciteze!

FELICITĂRI că nu ați aruncat nimic în aer și acum vă puteți controla LED-urile de la Google Home.

Lăsați comentarii dacă aveți probleme și voi face tot posibilul să revin la dvs.!

Recomandat: