Turinys:

Spalva-9 žingsniai
Spalva-9 žingsniai

Video: Spalva-9 žingsniai

Video: Spalva-9 žingsniai
Video: žingsniai norint turėti gražius plaukus 2024, Lapkritis
Anonim
Spalva-pi
Spalva-pi

Šioje instrukcijoje parodyta, kaip naudojant „Raspberry Pi“valdyti balsu RGB LED juostą per svetainę, naudojant „Web Speech“API sąsajas, skirtas „SpeechRecognition“ir „SpeechSynthesis“.

Šis pavyzdys parodo, kaip tai padaryti

  • Sukurkite pagrindinę svetainę naudodami „Node.js“per
  • „SpeechRecognition“ir „SpeechSynthesis“naudokite žiniatinklio kalbos API sąsajas.
  • Naudokite „Cylon.js“sistemą, kad valdytumėte „Raspberry Pi“RGB šviesos diodų juostą
  • Bendraukite per WSS (saugaus interneto lizdus) iš tinklalapio į „Cylon.js“, kad valdytumėte šviesos diodų spalvą

Pastaba

  • Norėdami išgirsti kalbos sintezatorių, jums reikės garsiakalbių ar ausinių
  • Kad balso atpažinimas veiktų, turėsite suteikti prieigą prie mikrofono
  • Dėl šios prieigos prie jūsų mikrofono svetainė turi būti paleista naudojant
  • Biblioteka „cylon-api-socketio“šiuo metu nepalaiko https. Turiu ištraukimo užklausą, kurią reikia sujungti, bet iki tol reikia pakeisti /node_modules/cylon-api-socketio/lib/api.js failą šioje saugykloje
  • šiam darbui atlikti reikia „pi-blaster“.

1 žingsnis: įranga

  1. „Raspberry Pi“- aš naudoju „Raspberry Pi 2B“, kurį turėjau aplink, bet „Raspberry Pi 3“pradinį rinkinį galite įsigyti už maždaug 100 CAD
  2. „RGB LED Strip Light“- žaidžiau su „Minger“LED juostelės šviesa 32,8 pėdų/10 M 600 colių RGB SMD 5050. Tai yra valdiklis ir maitinimo šaltinis maždaug 40 CAD
  3. „Barrel Jack Connector“- nusipirkau vieną iš savo vietinės elektronikos parduotuvės, kažką panašaus. Tiesiog įsitikinkite, ar tinka jūsų maitinimo šaltinis
  4. Džemperio jungtys / viela - aš turėjau keletą kabelių nuo moterų iki vyrų ir kai kuriuos 22 matuoklio tvirtus kabliukus
  5. Breadboard Solderless Prototype PCB Board - kažkas panašaus
  6. 3 x 10 kΩ rezistoriai
  7. 3 x N kanalų MOSFET šviesos diodams valdyti - kai kuriuos IRL3303 pirkau iš vietinės elektroninės parduotuvės. Svarbu, kad vartų slenksčio įtampa būtų maks. 3.3V, todėl jį gali valdyti RPi kaiščiai; paprastai pavadinime žymimas „L“(loginis lygis).

2 veiksmas: nustatykite „Raspberry Pi“

Operacinė sistema

Paprastai naudoju naujausią „Raspbian“versiją. Atsisiųskite paveikslėlį ir įrašykite jį į SD kortelę. Jei naudojate „Windows“kompiuterį, galite įrašyti vaizdą į SD kortelę naudodami „Win32 Disk Imager“.

Node.js

Įdiekite naujausią „Node.js“versiją. Rašymo metu naudoju 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

Įdiekite „Git“

sudo apt-get install git

3 žingsnis: „Pi-blaster“

Pi-blaster
Pi-blaster

„pi-blaster“įgalina PWM GPIO smeigtukuose, kurių prašote „Raspberry Pi“. Naudojama technika yra labai efektyvi: nenaudoja procesoriaus ir duoda labai stabilius impulsus.

Šis impulsų pločio moduliavimas leidžia „Raspberry Pi“valdyti, koks ryškus yra kiekvienas raudonos, žalios ir mėlynos spalvos LED juostos kanalas.

Pirmiausia klonuokite saugyklą

cd /opt /

sudo git klonas https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

Tada sukurkite ir įdiekite

cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install

Galiausiai sukonfigūruokite, kuriuos kaiščius norite naudoti

Sukurkite ir redaguokite failą naudodami pagrindinę paskyrą arba naudodami „sudo“

/etc/default/pi-blaster

Pridėkite šias eilutes

DAEMON_OPTS =-gpio 23, 24, 25

Šie „gpio“kaiščiai turi atitikti kaiščius, kuriuos jungiate prie savo LED juostos.

PASTABA: yra skirtumas tarp GPIO ir PIN kodo. Šiame pavyzdyje naudojama ši informacija

Šviesos diodas - mėlynas, GPIO -23, kaištis - 16

LED - raudona, GPIO -24, kaištis - 18 LED - žalia, GPIO -25, kaištis - 22

Papildomi patobulinimai

Pradėkite „pi-blaster“

„sudo service pi-blaster“paleidimas

Iš naujo paleiskite „pi-blaster“

„sudo service pi-blaster“paleidimas iš naujo

Sustabdyk pi-blaster

„sudo service pi-blaster stop“

Automatiškai paleiskite „pi-blaster“įkrovos metu

sudo systemctl įgalina pi-blaster

Įspėjimai ir kiti įspėjimai

„Pi-blaster“naudojami kaiščiai bus sukonfigūruoti kaip išėjimai. Nejunkite nieko prie įvesties, kitaip galite ją sugadinti! Šis demonas naudoja „Raspberry pi“aparatinės įrangos PWM generatorių, kad gautų tikslų laiką. Tai gali sutrikdyti garso plokštės išvestį.

4 veiksmas: pavyzdinio kodo nustatymas

Klonuoti pavyzdinį kodą

1. Nustatykite bazinį aplanką, kurį norite įdiegti

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Klonuokite pavyzdinę git saugyklą

git klonas

arba

git klonas [email protected]: haydockjp/color-pi.git

3. Įdiekite priklausomybes

cd spalva-pi

npm įdiegti

Tai gali užtrukti 2–3 minutes

4. Šis projektas turi bendrauti per HTTPS ir WSS. Šiuo metu „cylon-api-socketio“nepalaiko SSL ryšių. Yra atvira užklausa pridėti šią paramą, tačiau kol ji nebus sujungta, šioje saugykloje yra pataisos failas. Įdiegę npm, paleiskite šią komandą

git checkout node_modules/cylon-api-socketio/lib/api.js

5 veiksmas: sukurkite savarankiškai pasirašytą SSL sertifikatą

1. Sukurkite privataus rakto failą

cd /opt/com.jonhaydock/colour-pi/certs

2048 m

2. Sukurkite CSR (sertifikato pasirašymo užklausą)

openssl req -new -key color-pi-key.pem -out color-pi-csr.pem

Šiuo metu jūsų bus paprašyta pateikti tam tikrą informaciją, kurią reikia pateikti norint gauti sertifikatą. Kadangi tai yra savarankiškai pasirašytas sertifikatas, jūs turite nuspręsti, kaip tiksliai užpildysite išsamią informaciją. Štai pavyzdys

Šalies pavadinimas (2 raidžių kodas) [AS]: CA

Valstijos ar provincijos pavadinimas (visas pavadinimas) [Kai kurios valstijos]: Britų Kolumbijos vietovės pavadinimas (pvz., Miestas) : Vankuverio organizacijos pavadinimas (pvz., Įmonė) [Internet Widgits Pty Ltd]: „Color Pi“organizacijos padalinio pavadinimas (pvz., Skyrius)) : Bendras vardas (pvz., Serverio FQDN arba JŪSŲ vardas) : color-pi El. Pašto adresas : [email protected]

Iššūkio slaptažodis :

Neprivalomas įmonės pavadinimas :

Šiame pavyzdyje tiesiog paspauskite grįžti, kad iššūkio slaptažodis būtų tuščias

3. Sukurkite sertifikatą

openssl x509 -req -days 1095 -in color-pi-csr.pem-signkey color-pi-key.pem -out color-pi-cert.pem

4. Siekiant didesnio saugumo, mes taip pat sukursime „Diffie Hellman Parameters“failą

openssl dhparam -out dh_2048.pem 2048

Tai gali užtrukti 15-20 minučių

6 žingsnis: grandinės prijungimas

Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas
Grandinės prijungimas

Maitinimas LED juosta

LED juostelė maitinama 12 voltų. „Raspberry Pi“gali tiekti tik 3,3 V arba 5 V įtampą ir negali išvesti bet kur šalia stiprintuvų, reikalingų tiek daug šviesos diodų.

Svarbu neprijungti 12 voltų maitinimo šaltinio prie „Raspberry Pi“. N kanalų MOSFET tranzistoriai naudojami atskirti 3,3 V RPi kaiščius ir 12 V LED maitinimo šaltinį.

„MOSFET“turi tris kaiščius „Gate“, „Drain“ir „Source“. Jei nesate tikri, kuri „Google“naudoja jūsų naudojamo tranzistoriaus duomenų lapą, pvz. IRL3303

Mes prijungsime „Raspberry Pi“kaištį prie vartų, LED laidą prie kanalizacijos ir bendrą pagrindą prie šaltinio. Kai kaištis pakyla aukštai, įtampa tarp kanalizacijos ir šaltinio suaktyvins vartus ir sujungs vartus su šaltiniu.

Mes taip pat ketiname uždėti 10 kΩ rezistorius per vartus ir šaltinį, kad kai RPi kaištis būtų aukštas, galėtume apsaugoti kaištį, sumažindami per jį einančią srovę.

Kitus veiksmus atlikite savo rizika. Aš neprisiimu atsakomybės už viską, kas gali nutikti

Yra virpantis vaizdas ir tikros grandinės nuotrauka aukščiau.

Aš rekomenduočiau tai padaryti, kai RPi ir LED juostelės maitinimas yra išjungtas

Nustatykite tranzistorių grandines po vieną kiekvienam spalvų kanalui

  1. Įdėkite vieną iš tranzistorių į duonos lentą, kaip parodyta diagramoje
  2. Įdėkite vieną iš 10 kΩ rezistorių į kanalizaciją ir tranzistoriaus šaltinio kaiščius. Tai pirmasis ir paskutinis kaištis
  3. Naudokite tam tikrą laidą, kad prijungtumėte šaltinio kaištį (paskutinį kaištį) prie duonos lentos žemės
  4. Pakartokite 1–3 veiksmus dar du kartus, kad turėtumėte tris rinkinius - po vieną kiekvienai spalvai (raudona, žalia ir mėlyna)

Prijunkite RPi kaiščius prie plokštės

  1. Prijunkite 16 kaištį prie pirmojo tranzistoriaus vartų kaiščio (pirmojo kaiščio) - tai bus mėlynas LED kanalas
  2. Prijunkite 18 kaištį prie pirmojo tranzistoriaus vartų kaiščio (pirmojo kaiščio) - tai bus raudonas LED kanalas
  3. Prijunkite 20 kaištį prie vienos iš įžeminimo linijų duonos lentos šone
  4. Prijunkite 22 kaištį prie pirmojo tranzistoriaus vartų kaiščio (pirmojo kaiščio) - tai bus žalias LED kanalas

Šviesos diodams naudoju atitinkamas vielos spalvas: mėlyną, raudoną ir žalią. Žemei naudojau juodą

Prijunkite statinės lizdą

  1. Prijunkite baltą laidą prie statinės lizdo + galo
  2. Prijunkite juodą laidą prie statinės lizdo galo
  3. Prijunkite juodą laidą prie tos pačios duonos lentos įžeminimo linijos, prie kurios buvo prijungtas „RPi Pin 20“
  4. Prijunkite baltą laidą prie duonos lentos + linijos

LED juostos prijungimas

Mano LED juostelėje buvo pakankamai gero dydžio jungtis, kad ją būtų galima laikinai prijungti prie duonos lentos. I Įstumiau jungtį į duonos lentą ir prijungiau prie grandinės bandymo.

  1. Pirmasis tranzistorius prijungtas prie kaiščio 16. Aš išvedžiau mėlyną laidą nuo išleidimo kaiščio (vidurinio kaiščio) iki mėlynos vielos ant LED juostos jungties
  2. Antrasis tranzistorius prijungtas prie kaiščio 18. Aš išvedžiau raudoną laidą iš

    Nusausinkite

    kaištį (vidurinį kaištį) prie raudonos vielos ant LED juostelės jungties

  3. Trečias tranzistorius prijungtas prie kaiščio 22. Aš išvedžiau žalią laidą iš

    Nusausinkite

    kaištį (vidurinį kaištį) prie žalios šviesos diodų juostos jungties vielos

  4. Galiausiai pravedžiau baltą laidą nuo + linijos ant duonos lentos, kuri buvo prijungta prie statinės lizdo, prie baltos vielos ant LED juostos jungties.

Galia

Patikrinę grandinę, turėtumėte gerai įjungti „Raspberry Pi“ir prijungti 12 voltų maitinimo šaltinį prie statinės lizdo.

7 veiksmas: serverio pusės kodas

Serverio pusės kodas
Serverio pusės kodas

Vykdomas serverio pusės kodas

cd /opt/com.jonhaydock/colour-pi

sudo npm start

Tai paleis žiniatinklio serverį ir pradės klausytis HTTPS ir WSS užklausų.

PASTABA: pirmiausia nepamirškite paleisti „pi-blaster“

aplinkos įvairovė

Numatytasis svetainės prievadas yra 443, tačiau jūs galite tai nepaisyti, prieš pradėdami kodą nustatyti aplinkos kintamąjį. Pavyzdžiui

eksportas COLOUR_PI_PORT = 2443

Numatytasis žiniatinklio lizdo prievadas yra 1443, tačiau prieš pradėdami kodą galite jį pakeisti nustatydami aplinkos kintamąjį. Pavyzdžiui

eksportas COLOUR_PI_WSS_PORT = 3443

Pastaba: kadangi žiniatinklio lizdą tvarko cylon.js, o ne pagrindinė svetainė, jie turi būti skirtinguose prievaduose

Smeigtukus, naudojamus mėlynai (16 kaištis), žaliai (18 kaištis) ir raudonai (22 kaiščiui), taip pat galima nepaisyti. Pavyzdžiui

eksportuoti COLOUR_PI_PIN_BLUE = 36

eksportuoti COLOUR_PI_PIN_RED = 38 eksportuoti COLOUR_PI_PIN_GREEN = 40

Pastaba: jie turi atitikti jūsų naudojamus fizinius kaiščius. Jei juos pakeisite, taip pat turėsite atnaujinti GPIO, apibrėžtus faile/etc/default/pi-blaster. Pavyzdžiui

DAEMON_OPTS =-gpio 16, 20, 21

Pagrindinį serverio kodą galima rasti faile app.js. Šis failas paleidžia HTTPS žiniatinklio serverį, taip pat per „Cylon.js“sistemą naudoja „socket.io“, kad išklausytų žiniatinklio lizdų užklausas atskirame prievade.

Norėdami pasiekti svetainę, pagrindiniame kompiuteryje turėtumėte atidaryti žiniatinklio naršyklę (tai išbandžiau tik „Chrome“) ir naudoti „Raspberry Pi“IP adresą, pvz.

10.0.1.2/

Savo IP adresą galite sužinoti iš Raspberry Pi komandinės eilutės.

ifconfig

Žiniatinklio serveris aptarnaus bet kokį viešojo aplanko turinį. Pagal numatytuosius nustatymus rodomas puslapis index.html.

„Cylon.js“sukuria pabaigos tašką, prie kurio galite prijungti „Socket.io“.

10.0.1.2:1443/api/robots/colour-pi

Per lizdą galite nusiųsti pranešimą set_colour, kad nustatytumėte raudonos, žalios ir mėlynos reikšmes

device.emit ('set_colour', r, g, b)

Kuris iškviečia komandą set_colour, kuri iškviečia funkciją setColour programoje app.js. Ši funkcija nustato ryškumo lygius kiekvienai R, G ir B vertei nuo 0 iki 255. Kur 0 išjungta ir 255 visiškai įjungta.

pvz.

Raudona r = 255, g = 0, b = 0

Žalia r = 0, g = 255, b = 0 Mėlyna r = 0, g = 0, b = 255 Balta r = 255, g = 255, b = 255 Juoda / išjungta r = 0, g = 0, b = 0

8 veiksmas: svetainės kodas

Svetainės kodas
Svetainės kodas

Generolas

Svetainė naudoja balso atpažinimą, kad pasirinktų spalvas iš anksto nustatyto sąrašo. Norėdami įtraukti spalvą į sąrašą, redaguokite failą serveryje: public/data/colours.json

pvz.

"raudona": "#FF0000", Radus spalvą arba pasirinkus ją išskleidžiamajame meniu, išvesties dėžutė bus nustatyta į tą spalvą, o pranešimas per „socket.io“bus išsiųstas į „Raspnerry Pi“, kuris nustatys tos pačios spalvos šviesos diodus.

PASTABA: priklausomai nuo to, kokie jūsų šviesos diodai yra geri, galite matyti arba nematyti panašios spalvos. Kai kuriuos lengviau kopijuoti nei kitus

Kai pirmą kartą įkeliate svetainę, nes naudojate savarankiškai pasirašytą SSL sertifikatą, turėsite tai patvirtinti naršyklėje. Turėtumėte pamatyti saugos įspėjimą apie sertifikatą.

Balso atpažinimas

Šioje dėžutėje yra mikrofono piktograma. Jei spustelėsite žalios spalvos piktogramą, ji pradės klausytis spalvų. Kol jis klausosi, jis taps raudonas. Jis klausys trumpą laiką, o tada sustos. Spustelėjus raudoną mikrofono piktogramą, jis taip pat nebebus klausomas.

Kadangi ši svetainė turi pasiekti jūsų mikrofoną, turėsite suteikti jai leidimą, kai būsite paraginti

PASTABA: šiai daliai reikalingas mikrofonas. Aš naudoju tą, kuris yra mano interneto kameroje.

Tarpinė stenograma

Šiame laukelyje stebimi jūsų sakomų žodžių spėjimai, kaip jūs juos sakote.

Galutinis nuorašas

Šis langelis seka paskutinį spėjimą, ką jūs pasakėte.

Žinomos spalvos

Tai yra visų spalvų, apie kurias puslapis žino, sąrašas. Jis sukurtas iš failo colours.json. Jei pasirinksite vieną iš šių spalvų, puslapis pasakys spalvą ir nustatys išvesties spalvą.

PASTABA: Norėdami išgirsti kalbą, jums reikia garsiakalbių ar ausinių

Rastos spalvos

Šis tinklalapis šiuo metu palaiko tik spalvos suderinimą. Jei žodis ar žodžiai, kuriuos ištarėte į mikrofoną, atitinka žinomos spalvos pavadinimą arba pasirinkote spalvą iš žinomų spalvų sąrašo, ji bus pridėta čia kaip žurnalas.

Išvestis

Čia bus rodoma paskutinė rasta spalva. Spalvos šešioliktainė reikšmė (pvz., #7cb9e8) ir RGB reikšmė (pvz., 124, 185, 232) bus rodoma kaip tekstas, o viduryje esančio langelio fonas bus nustatytas kaip tikroji spalva.

Ši spalva taip pat siunčiama į „Raspberry Pi“ir turėtumėte pamatyti, kaip keičiasi LED juostos spalva.

PASTABA: jei nematote LED spalvos pasikeitimo, pabandykite iš naujo paleisti „pi-blaster“ir (arba) „node.js“programą

„sudo service pi-blaster“paleidimas iš naujo

sudo npm start

Žinomi balsai

Šiame laukelyje rodomas palaikomų kalbų sintezės žinomų balsų sąrašas. Pasirinkus vieną iš šių balsų, pasikeis balsas ir kalba, kurią išgirsite, ir ji pasakys balso pavadinimą.

Tai taip pat pakeis kalbos atpažinimo kalbą į tą pačią, kuri buvo pasirinkta sąraše.

9 žingsnis: Pagaliau

Image
Image

Štai pavyzdys, ką turėtumėte pamatyti.

Praneškite man, jei turite kokių nors problemų, ir prireikus galėsiu atnaujinti.

Rekomenduojamas: