INHOUDSOPGAWE:

Google Home -beheerde LED's: 8 stappe
Google Home -beheerde LED's: 8 stappe

Video: Google Home -beheerde LED's: 8 stappe

Video: Google Home -beheerde LED's: 8 stappe
Video: How To Connect AirPods To Any Bluetooth Device 2024, November
Anonim
Google Home -beheerde LED's
Google Home -beheerde LED's
Google Home -beheerde LED's
Google Home -beheerde LED's

Die afgelope tyd het ek baie vrye tyd gehad, so ek het aan 'n klomp projekte gewerk.

Met hierdie projek kan u RGB -LED's via Google Home beheer met 'n Raspberry Pi. Nou is daar drie dele van die projek: die opstel van 'n Raspberry Pi, die opstel van Google Home met 'n pasgemaakte opdrag met behulp van IFTTT en dan 'n kring vir die ligte. Ek het self die baan gemaak, maar ek wed dat u iets by Adafruit kan kry wat doen wat nodig is.

Materiaal vir Framboos Pi -deel

  • Framboos Pi - enige sal werk, maar ek gebruik 'n nul
  • Draadlose Dongle - as die Pi nie ingeboude Wifi het nie
  • Google Home - opsioneel as u Google Assistant op u telefoon het

Materiaal vir stroombaanonderdele- moenie dat dit u afskrik nie … Dit is redelik eenvoudig

  • Protobord
  • Draad
  • LED strook
  • 12V -kragtoevoer - alles bo 2 ampère behoort goed te wees
  • DC Barrel Jack - dieselfde grootte as u kragtoevoer
  • NPN BJT Power Transistors (x3) - ek gebruik TIP31C
  • Manlike en vroulike speldopskrifte - opsioneel, maar word sterk aanbeveel

Stap 1: Laai Express vir die Pi af

Laai Express vir die Pi af
Laai Express vir die Pi af

Ek gaan nie te veel in detail gaan oor die opstel van die Pi nie, want daar is soveel tutoriale om dit op te stel.

Wat u moet doen wat ek nie behandel nie …

  • Flitsende Raspberry Pi met die nuutste Raspbian
  • Stel die netwerkkaart in sodat u toegang tot die internet kan kry vanaf die Pi
  • Stel 'n statiese IP op die Raspberry Pi in

Dit is nou waar die pret begin! Ons moet nodeJS, npm, express en express generator opstel.

sudo apt-get update

sudo apt-get install nodejs npm

Sodra dit geïnstalleer is, voer die volgende uit

npm installeer express express-kragopwekker

Met Express kan u 'n baie basiese webserver maak wat u Raspberry Pi kan gebruik. Express-generator genereer outomaties lêers vir 'n snelbediener.

Maak 'n gids en cd in die gids. Ek het myne piWebpage genoem. Begin nou die volgende (ook op die foto gesien)

mkdir piWebbladsy

cd piWebpage express --view = ejs webApp

Dit genereer 'n gids met die naam webApp met al die vinnige lêers daarin. As u van plan is om later meer met hierdie webblad te doen en van PUG hou, vervang --view = ejs met --view = pug. Ons sal die webblad nie aanraak nie, dus vir hierdie toepassing maak dit nie saak wat ons gebruik nie.

Stap 2: Opstel van Pi -bediener

Gaan na die nuwe webApp -gids.

cd webApp

npm installeer

npm installasie sal 'n rukkie neem, omdat dit al die afhanklikhede vir express installeer.

Plak setColor.py in die webApp -lêergids. Hierdie lêer bevat 'n paar voorafinstellings vir basiese kleure. Voeg gerus meer by soos u wil. Die reeks is 0 tot 255 waar 255 volkleur is. Op 'n stadium sal ek waarskynlik die moontlikheid byvoeg om die ligte te demp, maar vir eers is dit vol helderheid.

Beweeg na roetes

cd roetes

Vervang nou index.js met die aangehegte lêer. Dit sal 'n paar reëls byvoeg om 'n POST -opdrag te ontvang, wat die Google Home sal stuur. Vanaf die POST kry ons die gekose kleur en sê ons vir die Pi om die setColor python -script uit te voer om die ligte aan te pas.

Een laaste ding … Gaan terug na die webApp -lêergids.

cd ~/piWebpage/webApp

Plak en stoor die onderstaande kode met u gunsteling redakteur in u webApp.js. Oral is goed, solank dit voor "module.exports = app;"

// Stel LED hardeware driverconst {exec} = require ('child_process') op; exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Fout tydens die laai van LED -bestuurder'); terug;} anders console.log ('LED -bestuurder suksesvol gelaai'); });

Soos die opmerking sê, is pigpiod die hardeware -bestuurder vir PWM -seine wat ons sal gebruik om die LED -kleure aan te pas. Ek glo dat dit reeds in Raspbian geïnstalleer is, maar indien nie …

sudo apt-get install pigpiod

Nou vir die regte toets! Begin die bediener!

DEBUG = webapp:* begin npm

Stap 3: IFTTT -opstelling (Trigger)

IFTTT -opstelling (sneller)
IFTTT -opstelling (sneller)
IFTTT -opstelling (sneller)
IFTTT -opstelling (sneller)

IFTTT kan baie doen, en ek beveel sterk aan dat u na sommige van die toepassings kyk.

Eerstens moet u 'n rekening maak. Gebruik dieselfde Google -rekening wat aan u Google Home gekoppel is, anders sinkroniseer hulle nie saam nie. Sodra u klaar is en aangemeld is, klik regs bo op die IFTTT -bladsy, waar dit u naam en avatar wys. Klik dan op die nuwe applet in die keuselys.

As u nuuskierig is, staan IFTTT vir IF This Then That as u dit nie opgemerk het deur die skerm wat verskyn nie. Wat ons dus wil hê, is As Google Assistant, dan Webhook as ons opsies.

Gaan voort deur op +hierdie te klik, wat 'n soekbalk sal laai. Tik Google Assistant in die soektog en klik op die ikoon onder die soektog.

Kies in Kies 'n sneller die derde opsie met die naam 'Sê 'n frase met 'n teksbestanddeel. Nou kan u drie opdragte hê wat dieselfde aksie sal doen. U voeg die $ by 'n frase waar u die kleur sou noem. As ek byvoorbeeld natuurlik sê Hey Google, Set LEDs Blue (so natuurlik as wat 'n toestel kan skree), dan tik ek in die veld Set LEDs $. Doen dit vir al drie velde met verskillende weergawes van die opdrag.

Die 3 wat ek gebruik het, was

LED's $

Stel LED's $

Stel LED -kleur $ in

Die laaste veld is wat u wil hê dat u Google Home moet antwoord nadat u u opdrag gesê het. Dit kan alles wees wat u wil, maar ek het die instelling van kleur op $ gebruik. Die $ beteken dat sy die kleur terug sal herhaal.

Klik op Skep sneller

Stap 4: IFTTT -opstelling (aksie)

IFTTT -opstelling (aksie)
IFTTT -opstelling (aksie)
IFTTT -opstelling (aksie)
IFTTT -opstelling (aksie)

Nadat u op Create Trigger geklik het, laai u terug na die siening, maar dit is vervang met die Google Assistant -logo. Gaan voort deur op +dit te klik

Dieselfde ding as voorheen waar dit u na die soekbalk bring. Tik Webhooks in en klik op die webhook -ikoon onder die soekbalk. Onder Kies aksie vir Webhooks, is daar net een opsie, dus klik op 'n Webversoek doen.

Hier word dinge 'n bietjie lastig. Omdat Google nie 'n ander rekenaar in u huis is nie, benodig u u eksterne IP -adres. Dit sal 'n bietjie deurstuur vereis, maar ons sal dit later bespreek. Gaan na https://canyouseeme.org/ om u eksterne IP -adres te kry

Tik https://xxx.xxx.xxx.xxx:3000/{{TextField}} in die URL -veld (met die x as u eksterne IP -adres). As u nuuskierig is, sal TextField die kleur hê wat u gekies het toe u 'n opdrag maak. Die rede waarom ons 3000 gebruik, is omdat dit die poort is waarop die Raspberry Pi Express -bediener werk. (U kan die poort in die kode verander, maar ons gebruik net die standaardinstellings vir Express)

Kies POST vir Metode.

Kies teks/plain vir inhoudstipe.

Tik {{TextField}} vir Body in

U wat weet hoe 'n POST -opdrag werk, sou u dink dat as u die liggaamseiendom van die versoek ontleed, u die kleur sou kry. Om die een of ander rede word daar nooit iets in die liggaamsveld van die versoek geplaas nie, so ek ontleed eintlik die URL vir die kleur. Hoop dit word gou reggestel, aangesien dit my kode op die index.js -roete sou vereenvoudig. Maar ek dwaal af.

Klik laastens op Skep aksie en dan op Voltooi op die volgende bladsy. (Ek het kennisgewings afgeskakel, maar dit is voorkeur)

Stap 5: Poortaanstuur

Havenstuur
Havenstuur
Havenstuur
Havenstuur

Dit is hier waar dinge moeilik is om te verduidelik, want alle routers is anders …

Nou het Google 'n opdrag na ons huis gestuur met poort 3000, maar dit weet nie na watter toestel op die LAN dit moet gaan nie. Om dit reg te stel, moet ons poort 3000 aanstuur na die plaaslike IP -adres van u Raspberry Pi.

Gaan na u router met behulp van 10.0.0.1 of 192.168.1.1 (ek het dit ook gesien waar die laaste syfer 254 is) en vind die deurstuur van die poort. In die deurstuur van die poort, soortgelyk aan die prent, noem u 'n nuwe toestel (IFTTT) en stuur die poort (3000) na die IP -adres van die Pi (in my geval 10.0.0.11).

Stoor u nuwe instelling, herlaai u router en kyk of u Raspberry Pi -bediener nog steeds werk. As dit nie werk nie, begin dit weer.

Gaan terug na die handige webwerf https://canyouseeme.org/. Dit het 'n poortkontroleerder onder u IP -adres. Gestel u port forwarding is korrek, tik 3000 in en klik op check poort. Dit behoort terug te kom met 'n sukses.

Stap 6: Kontroleer u werk tot dusver

Kontroleer u werk tot dusver
Kontroleer u werk tot dusver
Kontroleer u werk tot dusver
Kontroleer u werk tot dusver

Nou … die oomblik waarop u gewag het … Vertel Google 'n opdrag soos LED's blou (as u my voorbeeld gevolg het).

As ons aanvaar dat alles reg is, sal u die uitset op die foto sien. Ons het nog nie 'n stroombaan nie, so al wat u sal sien is teks op 'n skerm. Daar is gewoonlik 'n tweede of twee vertragings voordat dit van Google af verwerk word en op die Pi verskyn.

(Gaan na die volgende stap as dit soortgelyk aan die prent verskyn het)

Nou is daar 'n paar dinge om na te kyk as dit nie werk nie …

In die prentjie is daar 'n lyn wat sê

POS /kleur /blou 200 250,458 ms - 2

Die 200 is die belangrikste deel. As u nie 'n 200 sien nie, was daar 'n slegte POST, wat beteken dat u bediener nie weet wat om met die data te doen nie. Gaan terug na stap 2 en kyk na u index.js -lêer.

Ook op die prentjie

stdout: blou

stderr:

Dit is die uitset van die python -lêer wat die LED's laat loop. As u 'n fout sien, is dit moontlik dat u die bestuurder nie op stap 2 geïnstalleer het nie.

Laastens, as daar niks verskyn het nie, is u IFTTT moontlik nie korrek opgestel nie of kon u nie aan die bediener koppel nie. Gaan terug na die IFTTT -bladsy en klik in die boonste navigasiebalk op aktiwiteit. Daarin kan u elke keer sien wanneer u app loop, en as daar 'n fout was, kan u sien wat dit was. Ek het 'n Google -opdrag gemaak met die Pi -bediener af en die fout op die prentjie gekry.

Stap 7: Bou die kring

Bou die kring
Bou die kring
Bou die kring
Bou die kring
Bou die kring
Bou die kring

Die rede waarom ons dit moet doen, is omdat die Raspberry Pi nie genoeg krag het nie … Die oplossing is dus … MEER KRAG (Tim die werktuigman Taylor grom in die verte). AKA nog 'n kragtoevoer (12V 2A)

Materiaal vir stroombaanonderdeel

  • Protobord
  • Draad
  • RGB LED strook
  • 12V -kragtoevoer - alles bo 2 ampère behoort goed te wees
  • DC Barrel Jack - dieselfde grootte as u kragtoevoer
  • NPN BJT Power Transistors (x3) - ek gebruik TIP31C
  • Manlike en vroulike speldopskrifte

Deur die handige prentjie wat ek met die GPIO van die Pi Zero uit die interwebs gesteel het, kan u sien dat GPIO17, GPIO18 en GPIO 27 reg langs mekaar is met 'n GND. Ons gebruik die vierkant van 4 penne (penne 11, 12, 13, 14).

Eerstens sou ek aanbeveel om manlike kopstukke op u LED -strook te soldeer soos in die prentjie gesien (nie my beste werk nie). Dit maak dit maklik om te ontkoppel indien nodig. Ek het vroulike kopstukke gebruik vir die aansluiting van die LED -strook op my protobord en manlike kopstukke van die protobord na die Raspberry Pi. (Gebruik altyd vroulike aansluitings vir krag/seinbron). U hoef nie al die pins van die Pi langs mekaar te skuif soos ek nie. Ek wou net hê dit moes skoon lyk, maar dit was baie werk.

Kringverduideliking

Vir diegene onder u wat nie vertroud is met transistors nie, is transistors basies 'n digitale skakelaar. Die GPIO -penne van die Pi aktiveer die drie skakelaars (rooi, groen en blou). As ons spesifiek na ROOI in die kringdiagram kyk, as die GPIO_17 aan is, sluit die skakelaar die verbinding tussen ROOI en GND en veroorsaak dat die rooi ligte aanskakel. As GPIO_17 uitskakel, is die skakelaar oop en is die ligte af.

Basis - GPIO's

Versamelaar - kleure (ROOI, GROEN, BLOU)

Emitter - Grond (van beide die kragtoevoer en Pi)

Sluit die grond van die Pi aan op die grond van die kragtoevoer. Die ligte sal steeds werk, maar dit sal baie swak lyk totdat die grond verbind is.

Ek het 'n 4de transistor -toestel op my protobord. Dit is 'n L7805CV wat gebruik word om 12V na 5V om te skakel, sodat ek die Pi op dieselfde stroombaan kan dryf. Dit het gewerk, maar het bly verhit, so ek het die verbindings daarvan verwyder.

Stap 8: Toets dit

As u klaar is met die kring, herbegin u Pi voordat u verbindings maak. Dit is omdat die penne waarskynlik nog steeds aktief is vanaf die bedienertoets. Alternatiewelik kan u die bediener en die pigpiod -diens doodmaak.

Koppel die LED's en die springers van die protobord na die Pi aan. Kontroleer alle verbindings voordat u krag verskaf. As u dit verkeerd bedraad het, kan u u Pi braai (sonder druk).

Kontrolelys

  • Gaan drade na
  • Krag Pi
  • Kragkring
  • Begin bediener (DEBUG = webapp:* npm begin terwyl dit in die ~/piWebpage/webApp -gids is)
  • Sê vir Google dat u moet bid!

GELUK, jy het niks opgeblaas nie en jy kan nou jou LED's vanaf Google Home beheer.

Lewer kommentaar as u probleme ondervind, en ek sal my bes doen om terug te kom!

Aanbeveel: