Sadržaj:

Google LED kontrolisane LED diode: 8 koraka
Google LED kontrolisane LED diode: 8 koraka

Video: Google LED kontrolisane LED diode: 8 koraka

Video: Google LED kontrolisane LED diode: 8 koraka
Video: Как сделать индикатор уровня заряда батареи, зарядное устройство, 18650, 12 В, электроника 2024, Novembar
Anonim
Google Home kontrolisane LED diode
Google Home kontrolisane LED diode
Google Home kontrolisane LED diode
Google Home kontrolisane LED diode

U posljednje vrijeme imam puno slobodnog vremena, pa radim na hrpi projekata.

Ovaj projekt će vam omogućiti kontrolu RGB LED dioda putem Google Home -a koristeći Raspberry Pi. Sada postoje 3 dijela projekta, postavljanje Raspberry Pi -a, postavljanje Google Home -a prilagođenom naredbom pomoću IFTTT -a, a zatim stvaranje kruga za svjetla. Sam sam napravio krug, ali kladim se da biste od Adafruta mogli dobiti nešto što čini ono što je potrebno.

Materijali za Raspberry Pi Part

  • Raspberry Pi - bilo koji će raditi, ali ja koristim Zero
  • Bežični ključ - ako Pi nema ugrađen Wi -Fi
  • Google Home - Opcionalno ako imate Google Asistenta na telefonu

Materijali za dijelove kola- Ne dopustite da vas ovo odvrati … Prilično je jednostavno

  • Protoboard
  • Žica
  • LED traka
  • Napajanje od 12V - Sve iznad 2 Ampera bi trebalo biti u redu
  • DC Barrel Jack - iste veličine kao i vaše napajanje
  • NPN BJT Snažni tranzistori (x3) - Koristim TIP31C
  • Muški i ženski pin zaglavlja - izborno, ali se preporučuje

Korak 1: Preuzimanje Express -a za Pi

Preuzimanje Express -a za Pi
Preuzimanje Express -a za Pi

Neću ulaziti u previše detalja o postavljanju Pi -a jer postoji mnogo vodiča za njihovo postavljanje.

Ono što trebate učiniti je da ne pokrivam …

  • Flashing Raspberry Pi sa najnovijim Raspbian -om
  • Postavite mrežnu karticu tako da pristupite internetu s Pi -a
  • Postavite statički IP na Raspberry Pi

Evo gdje zabava počinje! Moramo instalirati nodeJS, npm, express i express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Nakon što su instalirani, pokrenite sljedeće

npm install express express-generator

Express vam omogućuje da napravite vrlo osnovni web poslužitelj za korištenje vašeg Raspberry Pi -a. Express-generator samo automatski generira datoteke za ekspresni poslužitelj.

Napravite direktorij i cd u direktorij. Ja sam svoju nazvao piWebpage. Sada pokrenite sljedeće (vidi se i na slici)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Ovo će generirati mapu pod nazivom webApp sa svim ekspresnim datotekama u njoj. Ako kasnije namjeravate učiniti više s ovom web stranicom i sviđa vam se PUG, zamijenite --view = ejs sa --view = pug. Nećemo dodirivati web stranicu, pa za ovu aplikaciju nije važno što koristimo.

Korak 2: Postavljanje Pi servera

Premjestite se u novi direktorij webApp.

cd webApp

npm install

npm instalacija će potrajati neko vrijeme jer instalira sve zavisnosti za express.

Zalijepite setColor.py u mapu webApp. Ova datoteka sadrži neke unaprijed postavljene osnovne boje. Slobodno dodajte još koliko želite. Raspon je od 0 do 255, gdje je 255 u punoj boji. U jednom trenutku vjerovatno ću dodati mogućnost prigušenja svjetla, ali za sada su pune svjetline.

Premjestite se na rute

cd rute

Sada zamijenite index.js s priloženom datotekom. Ovo će dodati neke retke za primanje POST naredbe koju će Google Home poslati. Iz tog POST -a ćemo izabrati boju i reći Pi da pokrene setColor python skriptu za podešavanje svjetla.

Još jedna stvar… Vratite se u fasciklu webApp.

cd ~/piWebpage/webApp

Pomoću svog omiljenog uređivača zalijepite i spremite donji kôd u svoj webApp.js. Bilo gdje je u redu sve dok je prije "module.exports = app;"

// Postavljanje LED hardverskog upravljačkog programaconcon {exec} = require ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Greška pri učitavanju LED upravljačkog programa'); return;} else console.log ('LED upravljački program uspješno učitan'); });

Kao što komentar kaže, pigpiod je hardverski upravljački program za PWM signale koji ćemo koristiti za podešavanje LED boja. Vjerujem da je već instaliran u Raspbian -u, ali ako ne …

sudo apt-get install pigpiod

A sada pravi test! Pokretanje servera!

DEBUG = webapp:* npm start

Korak 3: Postavljanje IFTTT -a (okidač)

IFTTT postavljanje (okidač)
IFTTT postavljanje (okidač)
IFTTT postavljanje (okidač)
IFTTT postavljanje (okidač)

IFTTT može učiniti mnogo, pa bih vam toplo preporučio da pogledate neke od aplikacija.

Prvo morate otvoriti račun. Koristite isti Google račun povezan s vašim Google Homeom, inače se neće sinkronizirati zajedno. Kada završite i prijavite se, kliknite u gornjem desnom kutu stranice IFTTT na kojoj se prikazuje vaše ime i avatar. Zatim s padajućeg izbornika kliknite Novi aplet.

Ako ste znatiželjni, IFTTT označava IF This then That ako niste primijetili pored iskačućeg ekrana. Ono što želimo je If Google Assistant, a zatim Webhook kao naše opcije.

Nastavite klikom na +ovo što će učitati traku za pretraživanje. U pretraživanju upišite Google pomoćnik i kliknite ikonu ispod pretraživanja.

U odjeljku Odabir okidača odaberite treću opciju pod nazivom Izgovori frazu sa sastojkom teksta. Sada vam ovo omogućuje da imate 3 naredbe koje će izvršiti istu radnju. Dodajete $ u frazu gdje biste spomenuli boju. Na primjer, ako bih prirodno rekao Hey Google, Set LEDs Blue (koliko prirodno može biti vikanje na uređaj), tada bih upisao u polje Set LEDs $. Učinite to za sva 3 polja s različitim verzijama naredbe.

Tri koje sam koristio su

LED diode $

Postavite LED diode $

Postavite LED boju $

Zadnje polje je ono što želite da vaš Google Home odgovori nakon što izgovorite svoju naredbu. To može biti sve što želite, ali koristio sam Setting color to $. $ Znači da će ponoviti boju.

Kliknite Kreiraj okidač

Korak 4: Postavljanje IFTTT -a (radnja)

IFTTT postavljanje (radnja)
IFTTT postavljanje (radnja)
IFTTT postavljanje (radnja)
IFTTT postavljanje (radnja)

Nakon što kliknete Kreiraj okidač, učitat ćete se na prikaz ako je ovo, a zatim na taj, ali je zamijenjen logotipom Google asistenta. Nastavite klikom na +to

Ista stvar kao i prije gdje vas dovede do trake za pretraživanje. Upišite Webhooks i kliknite ikonu webhook ispod trake za pretraživanje. U odjeljku Odabir radnje za web -dojavnike postoji samo jedna opcija, pa kliknite Učini web zahtjev.

Evo gdje stvari postaju malo zeznute. Budući da Google nije drugi računar u vašoj kući, trebat će vam vanjska IP adresa. To će zahtijevati neko prosljeđivanje portova, ali o tome ćemo govoriti kasnije. Da biste dobili svoju vanjsku IP adresu, idite na

U polje URL upišite https://xxx.xxx.xxx.xxx:3000/{{TextField}} (s tim da je x vaša vanjska IP adresa). U slučaju da ste znatiželjni, TextField će imati boju koju ste odabrali prilikom izvršavanja naredbe. Razlog zašto koristimo 3000 je taj što na tom portu radi server Raspberry Pi Express. (Možete promijeniti port u kodu, ali mi samo koristimo zadane postavke za Express)

Za metodu odaberite POST.

Za vrstu sadržaja odaberite tekst/običan.

Za Body, upišite {{TextField}}

Oni od vas koji znaju kako funkcionira naredba POST, pomislili biste da ćete, ako raščlanite svojstvo tijela zahtjeva, dobiti boju. Iz nekog razloga, ništa se ne stavlja u polje body zahtjeva, tako da zapravo raščlanjujem URL za boju. Nadam se da će se to uskoro popraviti jer bi to pojednostavilo moj kôd u ruti index.js. Ali ja odstupam.

Na kraju, kliknite Napravi radnju, a zatim Završi na sljedećoj stranici. (Isključio sam obavještenja, ali to je prednost)

Korak 5: Prosljeđivanje portova

Prosljeđivanje portova
Prosljeđivanje portova
Prosljeđivanje portova
Prosljeđivanje portova

Ovdje je stvari teško objasniti jer su svi usmjerivači različiti …

Sada imamo Google koji šalje naredbu našoj kući putem porta 3000, ali ne zna na koji uređaj na LAN -u treba ići. Da bismo to riješili, moramo proslijediti port 3000 na lokalnu IP adresu vašeg Raspberry Pi.

Uđite u svoj usmjerivač koristeći 10.0.0.1 ili 192.168.1.1 (vidio sam ga i gdje je zadnja znamenka 254) i pronađite prosljeđivanje portova. U prosljeđivanju portova, slično slici, imenovat ćete novi uređaj (IFTTT) i proslijediti port (3000) na Pi -jevu IP adresu (u mom slučaju 10.0.0.11).

Sačuvajte novu postavku, ponovo pokrenite usmjerivač i provjerite je li vaš Raspberry Pi server još uvijek pokrenut. Ako ne radi, pokrenite ga ponovo.

Vratite se na tu zgodnu web stranicu https://canyouseeme.org/. Ispod vaše IP adrese nalazi se alat za provjeru portova. Pod pretpostavkom da je prosljeđivanje porta ispravno, upišite 3000 i pritisnite kontrolni port. Trebalo bi da se vrati sa uspehom.

Korak 6: Provjerite dosadašnji rad

Provjera vašeg dosadašnjeg rada
Provjera vašeg dosadašnjeg rada
Provjera vašeg dosadašnjeg rada
Provjera vašeg dosadašnjeg rada

Sada … trenutak koji ste čekali … Recite Google -u naredbu poput LED dioda plave boje (ako ste slijedili moj primjer).

Pod pretpostavkom da je sve prošlo ispravno, dobit ćete izlaz vidljiv na slici. Još nemamo strujno kolo, pa ćete vidjeti samo tekst na ekranu. Obično postoji sekunda ili 2 kašnjenja prije nego što se obradi s Googlea i pojavi na Pi.

(Pređite na sljedeći korak ako je ovo ispalo slično slici)

Sada morate pogledati nekoliko stvari ako nije uspjelo …

Na slici postoji linija koja kaže

POST /boja /plava 200 250.458 ms - 2

200 je važan dio. Ako ne vidite 200, onda je došlo do lošeg POST -a što znači da vaš poslužitelj nije znao što učiniti s podacima. Vratite se na korak 2 i provjerite datoteku index.js.

Takođe na slici

stdout: plava

stderr:

Ovo je izlaz iz python datoteke koja pokreće LED diode. Ako vidite grešku, možda nemate upravljački program instaliran u 2. koraku.

Na kraju, ako se ništa nije pokazalo … vaš IFTTT možda nije ispravno postavljen ili se nije uspio povezati s poslužiteljem. Vratite se na stranicu IFTTT, a na gornjoj traci za navigaciju kliknite Aktivnost. Tamo možete vidjeti svaki put kada se vaša aplikacija pokrene, a ako je došlo do greške, možete vidjeti o čemu se radi. Napravio sam Google naredbu sa isključenim Pi serverom i dobio sam grešku na slici.

Korak 7: Izgradnja kruga

Izgradnja kola
Izgradnja kola
Izgradnja kola
Izgradnja kola
Izgradnja kola
Izgradnja kola

Razlog zašto to moramo učiniti je zato što Raspberry Pi nema dovoljno snage … Dakle, rješenje je … VIŠE MOĆI (Tim, čovjek s alatom Taylor grca u daljini). AKA drugo napajanje (12V 2A)

Materijali za dio kola

  • Protoboard
  • Žica
  • RGB LED traka
  • Napajanje od 12V - Sve iznad 2 Ampera bi trebalo biti u redu
  • DC Barrel Jack - iste veličine kao i vaše napajanje
  • NPN BJT Snažni tranzistori (x3) - Koristim TIP31C
  • Muški i ženski pin zaglavlja

Koristeći zgodnu sliku koju sam ukrao sa spleta sa GPIO -om Pi Zero -a, možete vidjeti da su GPIO17, GPIO18 i GPIO 27 sasvim blizu jedan sa drugim sa GND -om. Koristit ćemo taj kvadrat od 4 igle (Igle 11, 12, 13, 14).

Prije svega, preporučio bih lemljenje muških zaglavlja na vašu LED traku kao što se vidi na slici (nije moj najbolji rad). Ovo omogućava jednostavno isključivanje ako vam ikada zatreba. Koristio sam ženska zaglavlja za spajanje LED trake na svoju protoboard i muške zaglavlje od protobora do Raspberry Pi. (Za napajanje/izvor signala uvijek koristite ženske priključke). Ne morate premještati sve Pi -ove igle jedna do druge kao ja … Samo sam htio da izgleda čisto, ali bilo je puno posla.

Objašnjenje kola

Za one koji nisu upoznati s tranzistorima, tranzistori su u osnovi digitalni prekidač. GPIO pinovi sa Pi aktiviraju tri prekidača (crveni, zeleni i plavi). Gledajući posebno CRVENO na dijagramu kola, kada je GPIO_17 uključen, prekidač se "zatvara" povezujući CRVENO sa GND uzrokujući da se upale crvena svjetla. Kada se GPIO_17 isključi, prekidač je otvoren i svjetla su isključena.

Baza - GPIO

Sakupljač - Boje (CRVENA, ZELENA, PLAVA)

Emiter - uzemljenje (i napajanja i Pi)

Priključite uzemljenje Pi na masu izvora napajanja. Svjetla će i dalje raditi, ali će se pojavljivati vrlo prigušeno sve dok se uzemljenje ne spoji.

Na svojoj ploči imam četvrti tranzistorski uređaj. To je L7805CV koji se koristi za pretvaranje 12V u 5V kako bih mogao napajati Pi na istom krugu. Djelovao je, ali se neprestano zagrijavao, pa sam uklonio njegove veze.

Korak 8: Isprobajte

Kada završite sa krugom, ponovo pokrenite Pi prije bilo kakvog povezivanja. To je zato što su pinovi vjerovatno još uvijek aktivni od testa servera. Alternativno, možete ubiti server i uslugu pigpiod.

Uključite LED diode i kratkospojnike od protobora do Pi. Prije napajanja dvaput provjerite sve veze. Ako ste pogrešno spojili, mogli biste ispržiti svoj Pi (bez pritiska).

Kontrolna lista

  • Provjerite žice
  • Power Pi
  • Krug napajanja
  • Pokreni poslužitelj (DEBUG = webapp:* npm start dok ste u direktoriju ~/piWebpage/webApp)
  • Recite Googleu da izvrši vaše licitiranje!

ČESTITAMO što niste raznijeli ništa, a sada možete kontrolirati LED diode s Google Homea.

Ostavite komentare ako imate problema, a ja ću se potruditi da vam se javim!

Preporučuje se: