Sisällysluettelo:
- Vaihe 1: Laitteet
- Vaihe 2: Asenna Raspberry Pi
- Vaihe 3: Pi-blaster
- Vaihe 4: Esimerkkikoodin määrittäminen
- Vaihe 5: Luo itse allekirjoitettu SSL -varmenne
- Vaihe 6: Piirin kytkentä
- Vaihe 7: Palvelinpuolen koodi
- Vaihe 8: Verkkosivuston koodi
- Vaihe 9: Lopuksi
Video: Väri-pi: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tässä ohjeessa näytetään, miten Raspberry Pi -laitteella voidaan ohjata RGB -LED -nauhaa puheohjauksella verkkosivuston kautta käyttämällä Web Speech API -rajapintoja SpeechRecognition- ja SpeechSynthesis -sovelluksille.
Tämä esimerkki osoittaa, miten
- Luo perussivusto käyttämällä Node.js -protokollaa HTTPS -protokollan avulla
- Käytä Web Speech -sovellusliittymiä puheentunnistukseen ja puhesynteesiin.
- Käytä Cylon.js -kehystä RGB -LED -nauhan ohjaamiseen Raspberry Pi -laitteessa
- Kommunikoi WSS: n (Secure Web -liitännät) kautta verkkosivulta Cylon.js: lle LED -valon värin hallitsemiseksi
Huomautus
- Tarvitset kaiuttimet tai kuulokkeet puhesyntetisaattorin kuulemiseen
- Sinun on annettava mikrofonin käyttöoikeus, jotta äänentunnistus toimisi
- Koska tämä käyttää mikrofoniasi, sivusto on suoritettava HTTPS -protokollalla
- Kirjasto cylon-api-socketio ei tue https: ää tällä hetkellä. Minulla on vetopyyntö, joka odottaa yhdistämistä, mutta siihen asti sinun on korvattava /node_modules/cylon-api-socketio/lib/api.js tämän arkiston tiedostolla.
- Pi-blaster tarvitaan tämän työn tekemiseen.
Vaihe 1: Laitteet
- Raspberry Pi - Käytin Raspberry Pi 2B: tä, jonka olin asettanut, mutta voit saada Raspberry Pi 3 -aloituspaketin hintaan noin 100 CAD
- RGB -LED -nauhavalo - Pelasin Mingerin LED -nauhavalolla 32,8ft/10M 600leds RGB SMD 5050. Tässä mukana tulee ohjain ja virtalähde noin 40 CAD: lle
- Barrel Jack Connector - Ostin sellaisen paikallisesta elektroniikkakaupastani, jotain tällaista. Varmista vain, että se sopii virtalähteeseesi
- Jumper -liittimet / johto - Minulla oli naaras -uros -liitäntäkaapeleita ja noin 22 -mittarinen kiinteä koukkujohto makaa ympäri
- Breadboard Solderless Prototype PCB Board - jotain tällaista
- 3 x 10 kΩ vastukset
- 3 x N -kanavaista MOSFETia LEDien ohjaamiseen - ostin joitain IRL3303 -laitteita paikallisesta verkkokaupastani. On tärkeää, että porttien kynnysjännite on maks. 3.3V, joten sitä voidaan ohjata RPi -nastoilla; yleensä merkitty nimellä L (Logic-Level).
Vaihe 2: Asenna Raspberry Pi
Käyttöjärjestelmä
Käytän yleensä uusinta Raspbian -rakennetta. Lataa kuva ja kirjoita se SD -kortille. Jos käytät Windows -tietokonetta, voit kirjoittaa kuvan SD -kortille Win32 Disk Imager -ohjelmalla.
Node.js
Asenna Node.js: n uusin versio. Käytän tätä kirjoitettaessa 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Asenna Git
sudo apt-get install git
Vaihe 3: Pi-blaster
pi-blaster mahdollistaa PWM-toiminnon GPIO-nastoissa, joita pyydät Raspberry Pi: ltä. Käytetty tekniikka on erittäin tehokas: ei käytä CPU: ta ja antaa erittäin vakaita pulsseja.
Tämän pulssileveysmodulaation avulla Raspberry Pi voi hallita punaisen, vihreän ja sinisen kanavan kirkkautta LED -nauhalle.
Kloonaa ensin arkisto
cd /opt /
sudo git klooni https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Rakenna ja asenna sitten
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Määritä lopuksi, mitä nastoja haluat käyttää
Luo ja muokkaa tiedostoa juuritilin alla tai sudon avulla
/etc/default/pi-blaster
Lisää seuraavat rivit
DAEMON_OPTS =-gpio 23, 24, 25
Näiden gpio -nastojen on vastattava nastoja, jotka yhdistät LED -nauhaasi.
HUOMAUTUS: GPIO: n ja pin -numeron välillä on ero. Tässä esimerkissä käytetään seuraavaa
LED - sininen, GPIO -23, nasta - 16
LED - punainen, GPIO -24, nasta - 18 LED - vihreä, GPIO -25, nasta - 22
Lisämuutoksia
Käynnistä pi-blaster
sudo-palvelun pi-blaster-käynnistys
Käynnistä pi-blaster uudelleen
sudo service pi-blaster uudelleenkäynnistys
Lopeta pi-blaster
sudo service pi-blaster stop
Käynnistä pi-blaster automaattisesti käynnistyksen yhteydessä
sudo systemctl ottaa käyttöön pi-blasterin
Varoitukset ja muut varoitukset
Pi-blasterin käyttämät nastat konfiguroidaan lähtöiksi. Älä kytke mitään tuloon tai saatat tuhota sen! Tämä daemon käyttää raspberry pi -laitteiston PWM -generaattoria saadakseen tarkat ajoitukset. Tämä saattaa häiritä äänikortin lähtöä.
Vaihe 4: Esimerkkikoodin määrittäminen
Kloonaa esimerkkikoodi
1. Määritä peruskansio asennettavaksi
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Kloonaa esimerkki git -arkisto
git-klooni
tai
git klooni [email protected]: haydockjp/color-pi.git
3. Asenna riippuvuudet
cd väri-pi
npm asennus
Tämä voi kestää 2-3 minuuttia
4. Tämän projektin on kommunikoitava HTTPS- ja WSS -yhteyden kautta. Tällä hetkellä cylon-api-socketio ei tue SSL-yhteyksiä. Tämän tuen lisäämiseksi on avoin pyyntö, mutta kunnes se on yhdistetty, tässä arkistossa on korjaustiedosto. Suorita seuraava komento npm -asennuksen jälkeen
git checkout node_modules/cylon-api-socketio/lib/api.js
Vaihe 5: Luo itse allekirjoitettu SSL -varmenne
1. Luo yksityisen avaimen tiedosto
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Luo CSR (Certificate Signing Request)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
Tässä vaiheessa sinulta kysytään varmennepyyntöä koskevia tietoja. Koska tämä on itse allekirjoitettu todistus, sinun on päätettävä, kuinka tarkasti täytät tiedot. Tässä on esimerkki
Maan nimi (2 -kirjaiminen koodi) [AU]: CA
Osavaltion tai maakunnan nimi (koko nimi) [Jotkin osavaltiot]: Brittiläinen Kolumbia Paikannimi (esim. Kaupunki) : Vancouver-organisaation nimi (esim. Yritys) [Internet Widgits Pty Ltd]: Väri Pi Organisaatioyksikön nimi (esim.) : Yleinen nimi (esim. Palvelimen FQDN tai SINUN nimi) : color-pi Sähköpostiosoite : [email protected]
Haastusalasana :
Valinnainen yrityksen nimi :
Tässä esimerkissä paina vain paluuta, jos haluat jättää haassalasanan tyhjäksi
3. Luo varmenne
openssl x509 -req -päivät 1095 -värissä-pi-csr.pem -signkey-väri-pi-avain.pem -out väri-pi-cert.pem
4. Turvallisuuden lisäämiseksi luomme myös Diffie Hellman -parametritiedoston
openssl dhparam -out dh_2048.pem 2048
Tämä voi kestää 15-20 minuuttia
Vaihe 6: Piirin kytkentä
Virta LED -nauhalle
LED -nauha saa virtansa 12 voltista. Raspberry Pi tuottaa vain 3.3v tai 5v, eikä se pysty lähettämään lähelle vahvistimia, joita tarvitaan niin monien LED -valojen käyttämiseen.
On tärkeää olla kytkemättä 12 voltin virtalähdettä Raspberry Pi -laitteeseen. N-kanavaisia MOSFET-transistoreita käytetään erottamaan RPi-nastojen 3.3v ja LED-virtalähteen 12V.
MOSFETissa on kolme nastaa Gate, Drain ja Source. Jos et ole varma, kumpi Google on käyttämäsi transistorin tietolomakkeelle, esim. IRL3303
Yhdistämme Raspberry Pi -tapin porttiin, LED -johdon viemäriin ja yhteisen maan lähteeseen. Kun nasta nousee korkeaksi, tyhjennyksen ja lähteen välinen jännite aktivoi portin ja yhdistää portin lähteeseen.
Aiomme myös asettaa 10 kΩ vastuksia portin ja lähteen poikki, jotta kun RPi -nasta on korkea, voimme suojata tappia vähentämällä sen läpi kulkevaa virtaa.
Suorita seuraavat vaiheet omalla vastuullasi. En ota vastuuta mistään, mikä voi mennä pieleen
Yllä on fritzing kuva ja valokuva todellisesta piiristä.
Suosittelen tekemään tämän, kun RPi: n ja LED -nauhan virta on katkaistu
Määritä transistoripiirit, yksi per värikanava
- Aseta yksi transistoreista leipälevyyn kaavion mukaisesti
- Aseta yksi 10 kΩ: n vastuksista transistorin tyhjennys- ja lähdetappien poikki. Tämä on ensimmäinen ja viimeinen nasta
- Liitä lähde nasta (viimeinen nasta) leipälevyn maahan jollakin johdolla
- Toista vaiheet 1-3 vielä kaksi kertaa, jotta sinulla on kolme sarjaa - yksi per väri (punainen, vihreä ja sininen)
Liitä RPi -nastat levyyn
- Liitä nasta 16 ensimmäisen transistorin porttiin (ensimmäinen nasta) - tämä on sininen LED -kanava
- Liitä nasta 18 ensimmäisen transistorin porttitappiin (ensimmäinen nasta) - tämä on punainen LED -kanava
- Kytke nasta 20 yhteen leipälevyn sivussa olevasta maadoitusjohdosta
- Liitä nasta 22 ensimmäisen transistorin porttiin (ensimmäinen nasta) - tämä on vihreä LED -kanava
Olen käyttänyt LED -valoihin sopivia langan värejä: sininen, punainen ja vihreä. Olen käyttänyt maata mustana
Liitä tynnyrin liitin
- Kytke valkoinen johto piippuliittimen + -päähän
- Liitä musta johto tynnyrin liittimen päähän
- Kytke musta johto samaan maadoitusjohtoon leipälaudalla, johon RPi Pin 20 oli kytketty
- Liitä valkoinen johto leipälevyn + -viivaan
LED -nauhan liittäminen
LED -nauhani mukana tuli liitin, joka oli riittävän hyvä, jotta se voitaisiin kytkeä väliaikaisesti leipälautaan. I Työnsin liittimen leipälevyyn ja johdotin sen piirin testiin.
- Ensimmäinen transistori kytkettiin nastaan 16. Ajoin sinisen johdon tyhjennystapista (keskimmäinen nasta) LED -nauhan liittimen siniseen johtoon
- Toinen transistori kytketty nastaan 18. Ajoin punaista johtoa
Valua
nasta (keskitappi) LED -nauhan liittimen punaiseen johtoon
- Kolmas transistori kytketty nastaan 22. Ajoin vihreää johtoa
Valua
nasta (keskitappi) LED -nauhan liittimen vihreään johtoon
- Lopuksi vedin valkoisen johdon + -viivasta leipälevyltä, joka oli liitetty tynnyrin jakkiin, LED -nauhan liittimen valkoiseen johtoon.
Virta
Kun olet tarkistanut piirin, sinun pitäisi olla hyvä kytkeä Raspberry Pi -laite päälle ja kytkeä 12 voltin syöttö pistorasiaan.
Vaihe 7: Palvelinpuolen koodi
Palvelinpuolen koodi suoritetaan
cd /opt/com.jonhaydock/colour-pi
sudo npm käynnistyy
Tämä käynnistää verkkopalvelimen ja alkaa kuunnella HTTPS- ja WSS -pyyntöjä.
HUOMAUTUS: Muista pitää pi-blaster käynnissä ensin
ympäristömuuttujat
Verkkosivuston oletusportti on 443, mutta voit ohittaa tämän asettamalla ympäristömuuttujan ennen koodin käynnistämistä. Esimerkiksi
vienti COLOUR_PI_PORT = 2443
Verkkopistokkeen oletusportti on 1443, mutta voit ohittaa tämän asettamalla ympäristömuuttujan ennen koodin käynnistämistä. Esimerkiksi
vienti COLOUR_PI_WSS_PORT = 3443
Huomautus: Koska verkkopistoketta käsittelee cylon.js eikä pääsivusto, niiden on oltava eri porteissa
Sinisen (nasta 16), vihreän (nasta 18) ja punaisen (nasta 22) tapit voidaan myös ohittaa. Esimerkiksi
vienti COLOUR_PI_PIN_BLUE = 36
vienti COLOUR_PI_PIN_RED = 38 vienti COLOUR_PI_PIN_GREEN = 40
Huomautus: Näiden on vastattava käyttämiäsi fyysisiä nastoja. Jos muutat näitä, sinun on myös päivitettävä GPIO: t, jotka on määritetty tiedostossa/etc/default/pi-blaster. Esimerkiksi
DAEMON_OPTS =-gpio 16, 20, 21
Pääpalvelimen koodi löytyy app.js -tiedostosta. Tämä tiedosto käynnistää HTTPS -verkkopalvelimen ja käyttää myös Cylon.js -kehyksen kautta socket.io -ohjelmaa verkkopistokepyyntöjen kuuntelemiseen erillisessä portissa.
Päästäksesi verkkosivustoon, avaa verkkoselain pääkoneellasi (olen testannut tämän vain Chromessa) ja käytä Raspberry Pi: n IP -osoitetta, esim.
10.0.1.2/
Voit selvittää IP -osoitteesi Raspberry Pi -komentoriviltä.
ifconfig
Verkkopalvelin palvelee mitä tahansa julkisen kansion sisältöä. Se näyttää oletuksena index.html -sivun.
Cylon.js luo päätepisteen, johon voit yhdistää Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Voit lähettää set_colour -viestin pistorasian kautta asettaaksesi punaiset, vihreät ja siniset arvot
device.emit ('set_colour', r, g, b)
Joka kutsuu set_colour -komentoa, joka kutsuu setColour -funktiota sovelluksessa app.js. Tämä toiminto asettaa kirkkaustasot kullekin R-, G- ja B -arvolle väliltä 0 ja 255. Jos 0 on pois päältä ja 255 on täysin päällä.
esim.
Punainen r = 255, g = 0, b = 0
Vihreä r = 0, g = 255, b = 0 Sininen r = 0, g = 0, b = 255 Valkoinen r = 255, g = 255, b = 255 Musta / pois käytöstä r = 0, g = 0, b = 0
Vaihe 8: Verkkosivuston koodi
Yleistä
Verkkosivusto käyttää puheentunnistusta valitakseen värit ennalta määritetystä luettelosta. Jos haluat lisätä värin luetteloon, muokkaa tiedostoa palvelimella: public/data/colours.json
esim.
"punainen": "#FF0000", Kun väri löytyy tai valitaan avattavasta valikosta, Output -ruutu asetetaan kyseiseen väriin ja viesti lähetetään socket.io: n kautta Raspnerry Pi: lle, joka asettaa LEDit samaan väriin.
HUOMAUTUS: riippuen siitä, kuinka hyviä LED -valot ovat, saatat nähdä saman värin tai et. Jotkut on helpompi kopioida kuin toiset
Kun lataat verkkosivuston ensimmäisen kerran, kun käytät itse allekirjoitettua SSL-varmennetta, sinun on tunnustettava tämä selaimessa. Sinun pitäisi nähdä varoitusta koskeva turvahälytys.
Äänentunnistus
Tässä laatikossa on mikrofonikuvake. Jos napsautat kuvaketta sen ollessa vihreä, se alkaa kuunnella värejä. Kun se kuuntelee, se muuttuu punaiseksi. Se kuuntelee lyhyen aikaa ja pysähtyy sitten. Mikrofonin kuvakkeen napsauttaminen, kun se on punainen, myös estää sen kuuntelemasta.
Koska tämän sivuston on käytettävä mikrofoniasi, sinun on annettava sille lupa pyydettäessä
HUOMAUTUS: Tätä osaa varten tarvitset mikrofonin. Käytän verkkokamerassa olevaa.
Väliaikainen transkriptio
Tässä ruudussa seurataan sanomiesi sanojen arvauksia, kuten sanot ne.
Lopullinen transkriptio
Tämä laatikko seuraa viimeistä arvaustasi, mitä sanoit.
Tunnetut värit
Tämä on luettelo kaikista väreistä, joista sivu tietää. Se luodaan colours.json -tiedostosta. Jos valitset jonkin näistä väreistä, sivu puhuu värin ja asettaa tulostusvärin.
HUOMAUTUS: Tarvitset kaiuttimet tai kuulokkeet kuullaksesi puheen
Löytyi värejä
Tämä verkkosivu tukee tällä hetkellä vain värin vastaavuutta. Jos mikrofoniin puhuttu sana tai sanat vastaavat tunnetun värin nimeä tai valitset värin Tunnetut värit -luettelosta, se lisätään tähän lokina.
Lähtö
Viimeksi löydetty väri näkyy tässä. Värin heksadesimaaliarvo (esim. #7cb9e8) ja RGB -arvo (esim. 124, 185, 232) näytetään tekstinä ja keskellä olevan ruudun tausta asetetaan todelliseen väriin.
Tämä väri lähetetään myös Raspberry Pi -laitteeseen ja sinun pitäisi nähdä LED -nauhan väri muuttuvan.
HUOMAUTUS: jos et näe LED-värin muutosta, yritä käynnistää uudelleen pi-blaster ja/tai node.js-sovellus
sudo service pi-blaster uudelleenkäynnistys
sudo npm käynnistyy
Tunnetut äänet
Tässä ruudussa näkyy luettelo "Tunnetuista äänistä" tuetusta puhesynteesistä. Jos valitset jonkin näistä äänistä, ääni ja kuulemasi kieli muuttuvat ja se puhuu äänen nimen.
Se muuttaa myös puheentunnistuksen kielen samaksi kuin luettelossa valittu kieli.
Vaihe 9: Lopuksi
Tässä on esimerkki siitä, mitä sinun pitäisi nähdä.
Kerro minulle, jos sinulla on ongelmia, ja voin päivittää ne tarvittaessa.
Suositeltava:
M5StickC ESP32 & NeoPixels LED -rengas Satunnainen väri: 7 vaihetta
M5StickC ESP32 & NeoPixels LED -rengas Satunnainen väri: Tässä projektissa opimme näyttämään satunnaisen värin NeoPixels LED -renkaassa käyttämällä M5StickC ESP32 -korttia
Vai niin!! Väri: 7 vaihetta
Vai niin!! Väri: Voi !! Väri on yksinkertainen peli arvata väri. Peli antaa sinulle kolme perusväriä. Jos haluat yhdistää kaksi väriä, paina vain molempia painikkeita. Kun painiketta painetaan, peli päättyy. Lopuksi valitus
DIY Arduino LED -väri urut 2.0: 5 vaihetta
DIY Arduino LED Color Organ 2.0: Tässä projektissa näytän sinulle, kuinka rakentaa Arduino LED Color Organ, joka reagoi musiikkisi eri taajuuskaistoille valosarjoilla. Minun tapauksessani punainen valo edustaa bassoa, vihreä valo keskitaajuuksia ja sininen on korkea nuotti
DIY -ohjaus RGB -LED -väri Bluetoothin kautta: 5 vaihetta
DIY -ohjaus RGB -LED -väri Bluetoothin kautta: Älylamppujen suosio on kasvanut viime aikoina, ja niistä on tulossa jatkuvasti keskeinen osa älykkään kodin työkalupakkia. Älykkäät lamput antavat käyttäjälle mahdollisuuden hallita valoaan käyttäjän älypuhelimessa olevan erikoissovelluksen kautta; lamppu voidaan kytkeä päälle
512 Väri -LED -vilkku (satunnainen): 13 vaihetta
512 -värin LED -vilkku (satunnainen): Tämä LED -vilkkulaite näyttää 512 väriä ilman mikro -ohjainta. 9-bittinen binäärilaskuri luo näennäissatunnaisluvun ja 3 D/A-muunninta (digitaalista analogiseen) ohjaavat punaisia, vihreitä ja sinisiä LED-valoja