Turinys:
- 1 žingsnis: įranga
- 2 veiksmas: nustatykite „Raspberry Pi“
- 3 žingsnis: „Pi-blaster“
- 4 veiksmas: pavyzdinio kodo nustatymas
- 5 veiksmas: sukurkite savarankiškai pasirašytą SSL sertifikatą
- 6 žingsnis: grandinės prijungimas
- 7 veiksmas: serverio pusės kodas
- 8 veiksmas: svetainės kodas
- 9 žingsnis: Pagaliau
Video: Spalva-9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
Š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
- „Raspberry Pi“- aš naudoju „Raspberry Pi 2B“, kurį turėjau aplink, bet „Raspberry Pi 3“pradinį rinkinį galite įsigyti už maždaug 100 CAD
- „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
- „Barrel Jack Connector“- nusipirkau vieną iš savo vietinės elektronikos parduotuvės, kažką panašaus. Tiesiog įsitikinkite, ar tinka jūsų maitinimo šaltinis
- Džemperio jungtys / viela - aš turėjau keletą kabelių nuo moterų iki vyrų ir kai kuriuos 22 matuoklio tvirtus kabliukus
- Breadboard Solderless Prototype PCB Board - kažkas panašaus
- 3 x 10 kΩ rezistoriai
- 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“į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
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
- Įdėkite vieną iš tranzistorių į duonos lentą, kaip parodyta diagramoje
- Įdėkite vieną iš 10 kΩ rezistorių į kanalizaciją ir tranzistoriaus šaltinio kaiščius. Tai pirmasis ir paskutinis kaištis
- Naudokite tam tikrą laidą, kad prijungtumėte šaltinio kaištį (paskutinį kaištį) prie duonos lentos žemės
- 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
- Prijunkite 16 kaištį prie pirmojo tranzistoriaus vartų kaiščio (pirmojo kaiščio) - tai bus mėlynas LED kanalas
- Prijunkite 18 kaištį prie pirmojo tranzistoriaus vartų kaiščio (pirmojo kaiščio) - tai bus raudonas LED kanalas
- Prijunkite 20 kaištį prie vienos iš įžeminimo linijų duonos lentos šone
- 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ą
- Prijunkite baltą laidą prie statinės lizdo + galo
- Prijunkite juodą laidą prie statinės lizdo galo
- Prijunkite juodą laidą prie tos pačios duonos lentos įžeminimo linijos, prie kurios buvo prijungtas „RPi Pin 20“
- 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.
- 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
-
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
-
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
- 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
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
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
Štai pavyzdys, ką turėtumėte pamatyti.
Praneškite man, jei turite kokių nors problemų, ir prireikus galėsiu atnaujinti.
Rekomenduojamas:
Karšta sėdynė: sukurkite spalvą keičiančią šildomą pagalvę: 7 žingsniai (su nuotraukomis)
Karšta sėdynė: sukurkite spalvą keičiančią šildomą pagalvę: ar norite, kad šaltomis žiemos dienomis būtų skanu? „Hot Seat“yra projektas, kuriame naudojamos dvi įdomiausios elektroninės tekstilės galimybės - spalvų keitimas ir šiluma! Mes sukursime šildančią sėdynės pagalvėlę, o kai ji bus paruošta, ji parodys
„M5StickC ESP32“ir „NeoPixels“LED žiedas Atsitiktinė spalva: 7 žingsniai
„M5StickC ESP32“ir „NeoPixels“LED žiedo atsitiktinė spalva: Šiame projekte mes išmoksime parodyti atsitiktinę spalvą „NeoPixels“LED žiede naudojant „M5StickC ESP32“plokštę. Žiūrėkite vaizdo įrašą
Oi!! Spalva: 7 žingsniai
Oi!! Spalva: O !! Spalva yra paprastas žaidimas atspėti spalvą. Žaidimas suteiks jums tris pagrindines pagrindines spalvas. Jei reikia derinti dvi spalvas, tiesiog paspauskite abu mygtukus. Paspaudus mygtuką žaidimas pasirodys teisingas. Galiausiai, prašymas
Šviečianti spalvą keičianti gitara: 49 žingsniai (su paveikslėliais)
Švytinti spalvą keičianti gitara: rokenrolo karalystėje svarbu atskirti save. Kadangi pasaulyje yra milijonai žmonių, galinčių groti gitara, paprasčiausiai gerai groti tiesiog nepavyks. Norint pakilti kaip roko dievas, reikia kažko papildomo. Apsvarstykite šį vadovą
„Pasidaryk pats“valdymas RGB LED spalva per „Bluetooth“: 5 žingsniai
„Pasidaryk pats“valdymas RGB LED spalva per „Bluetooth“: išmaniosios lemputės pastaruoju metu populiarėja ir nuolat tampa pagrindine išmaniųjų namų įrankių rinkinio dalimi. Išmaniosios lemputės leidžia vartotojui valdyti savo šviesą per specialią vartotojo išmaniojo telefono programą; lemputę galima įjungti