Sisukord:
- Samm: varustus
- 2. samm: seadistage Raspberry Pi
- 3. samm: Pi-blaster
- Samm 4: Näidiskoodi seadistamine
- Samm: looge ise allkirjastatud SSL -sertifikaat
- Samm: vooluahela ühendamine
- Samm: serveripoolne kood
- 8. samm: veebisaidi kood
- Samm 9: Lõpuks
Video: Värvipiirang: 9 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
See juhend näitab, kuidas kasutada Raspberry Pi -d RGB LED -riba hääljuhtimiseks veebisaidi kaudu, kasutades kõne kõnetuvastuse ja kõnesünteesi jaoks mõeldud Web Speech API liideseid.
See näide näitab, kuidas
- Looge põhiline veebisait, kasutades HTTPS -i kaudu Node.js -i
- Kasutage kõnetuvastuse ja kõnesünteesi jaoks veebikõne API liideseid.
- Kasutage Cylon.js raamistikku Raspberry Pi RGB LED -riba juhtimiseks
- Suhtlege WSS -i (turvaliste veebipesade) kaudu veebilehelt saidile Cylon.js, et juhtida LED -i värvi
Märge
- Kõnesüntesaatori kuulamiseks vajate kõlareid või kõrvaklappe
- Hääletuvastuse toimimiseks peate andma juurdepääsu oma mikrofonile
- Kuna see juurdepääs teie mikrofonile vajab saiti HTTPS -i abil
- Raamatukogu cylon-api-socketio ei toeta praegu https-i. Mul on tõmbamistaotlus, mis ootab ühendamist, kuid seni peate asendama /node_modules/cylon-api-socketio/lib/api.js selle hoidla failiga
- selle töö tegemiseks on vaja pi-blasterit.
Samm: varustus
- Raspberry Pi - kasutasin Raspberry Pi 2B -d, mis mul oli, aga Raspberry Pi 3 stardikomplekti saate umbes 100 CAD eest
- RGB LED -ribalamp - mängisin Minger LED -ribalambiga 32,8 jalga/10M 600leds RGB SMD 5050. Sellega on kaasas kontroller ja toide umbes CAD 40 jaoks
- Barrel Jack Connector - ostsin ühe oma kohalikust elektroonikapoest, midagi sellist. Lihtsalt veenduge, kas see sobib teie toiteallikaga
- Jumperi pistikud / traat - mul olid mõned naissoost isase pistiku kaablid ja umbes 22 gabariidiga tahke haaketraat
- Leivaplaat Solderless Prototype PCB Board - midagi sellist
- 3 x 10 kΩ takisti
- 3 x N -kanaliga MOSFET -d valgusdioodide juhtimiseks - ostsin kohalikult elektroonikapoest mõned IRL3303 -d. On oluline, et väravate lävipinge oleks max. 3.3V, nii et seda saab juhtida RPi tihvtidega; tavaliselt tähistatakse nimes "L" (loogikatase).
2. samm: seadistage Raspberry Pi
Operatsioonisüsteem
Tavaliselt kasutan uusimat Raspbiani ehitust. Laadige pilt alla ja kirjutage see SD -kaardile. Kui kasutate Windowsi arvutit, saate pildi SD -kaardile kirjutamiseks kasutada Win32 Disk Imagerit.
Node.js
Installige uusim versioon Node.js. Kirjutamise ajal kasutan 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Installige Git
sudo apt-get install git
3. samm: Pi-blaster
pi-blaster võimaldab PWM-i GPIO-tihvtidel, mida te Raspberry Pi-l taotlete. Kasutatav tehnika on äärmiselt tõhus: ei kasuta protsessorit ja annab väga stabiilseid impulsse.
See impulsi laiuse modulatsioon võimaldab Raspberry Pi -l juhtida, kui heledad punased, rohelised ja sinised kanalid on LED -riba jaoks.
Esiteks kloonige hoidla
cd /opt /
sudo git kloon https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Seejärel ehitage ja installige
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Lõpuks seadistage, milliseid tihvte soovite kasutada
Looge ja muutke fail juurkonto all või sudo abil
/etc/default/pi-blaster
Lisage järgmised read
DAEMON_OPTS =-gpio 23, 24, 25
Need gpio -tihvtid peavad vastama tihvtidele, mille ühendate oma LED -ribaga.
MÄRKUS. GPIO ja pin -numbri vahel on erinevus. See näide kasutab järgmist
LED - sinine, GPIO -23, tihvt - 16
LED - punane, GPIO -24, tihvt - 18 LED - roheline, GPIO -25, tihvt - 22
Täiendavad muudatused
Käivitage pi-blaster
sudo teenuse pi-blaster käivitamine
Taaskäivitage pi-blaster
sudo teenuse pi-blaster taaskäivitamine
Lõpeta pi-blaster
sudo teenuse pi-blaster stop
Käivitage pi-blaster automaatselt alglaadimise ajal
sudo systemctl lubab pi-blasteri
Hoiatused ja muud hoiatused
Pi-blasteri kasutatavad tihvtid konfigureeritakse väljunditeks. Ärge ühendage sisendiga midagi, muidu võite selle hävitada! See deemon kasutab täpse ajastuse saamiseks vaarika pi riistvara PWM -generaatorit. See võib häirida helikaardi väljundit.
Samm 4: Näidiskoodi seadistamine
Näite koodi kloonimine
1. Seadistage baaskaust, kuhu installida
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Kloonige näite git hoidla
git kloon
või
git kloon [email protected]: haydockjp/color-pi.git
3. Installige sõltuvused
cd värv-pi
npm install
Selleks võib kuluda 2-3 minutit
4. See projekt peab suhtlema HTTPS -i ja WSS -i kaudu. Praegu ei toeta cylon-api-socketio SSL-ühendusi. Selle toe lisamiseks on avatud tõmbetaotlus, kuid kuni selle ühendamiseni on selles hoidlas patch -fail. Pärast npm installimist käivitage järgmine käsk
git checkout node_modules/cylon-api-socketio/lib/api.js
Samm: looge ise allkirjastatud SSL -sertifikaat
1. Looge privaatvõtme fail
cd /opt/com.jonhaydock/colour-pi/certs
2048
2. Looge CSR (sertifikaadi allkirjastamise taotlus)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
Sel hetkel küsitakse teilt teavet sertifikaadi taotlemiseks. Kuna see on ise allkirjastatud sertifikaat, on teie otsustada, kui täpselt andmed sisestate. Siin on näide
Riigi nimi (kahetäheline kood) [AU]: CA
Osariigi või provintsi nimi (täisnimi) [mõni osariik]: Briti Columbia Asukoha nimi (nt linn) : Vancouveri organisatsiooni nimi (nt ettevõte) [Internet Widgits Pty Ltd]: Värv Pi organisatsiooniüksuse nimi (nt jaotis) : Üldnimi (nt serveri FQDN või SINU nimi) : color-pi E-posti aadress : [email protected]
Väljakutse parool :
Valikuline ettevõtte nimi :
Selles näites vajutage lihtsalt tagasitulek, et jätta väljakutse parool tühjaks
3. Loo sertifikaat
openssl x509 -req -days 1095 -in color-pi-csr.pem-signkey color-pi-key.pem -out color-pi-cert.pem
4. Lisaturvalisuse huvides loome ka Diffie Hellmani parameetrite faili
openssl dhparam -out dh_2048.pem 2048
Selleks võib kuluda 15-20 minutit
Samm: vooluahela ühendamine
LED -riba toide
LED -riba töötab 12 volti. Raspberry Pi väljastab võimekalt ainult 3.3v või 5v ja ei ole võimeline väljastama nii paljude LED -ide juhtimiseks vajalike võimendite läheduses.
Oluline on mitte ühendada 12 -voldist toiteallikat Raspberry Pi -ga. N-kanaliga MOSFET-transistore kasutatakse RPi tihvtide 3,3 V ja LED-toite 12 V eraldamiseks.
MOSFETil on kolm tihvti Gate, Drain ja Source. Kui te pole kindel, milline google otsib teie kasutatava transistori andmelehte, nt. IRL3303
Me ühendame Raspberry Pi tihvti väravaga, LED -juhtme äravooluga ja ühise maa allikaga. Kui pin läheb kõrgeks, aktiveerib äravoolu ja allika vaheline pinge värava ja ühendab värava allikaga.
Samuti kavatseme paigutada väravale ja allikale 10 kΩ takistid, nii et kui RPi tihvt on kõrge, saame seda kaitsta, vähendades seda läbivat voolu.
Tehke järgmised sammud omal vastutusel. Ma ei vastuta millegi eest, mis võib valesti minna
Ülaltoodud tegelikust vooluringist on fritseeriv pilt ja foto.
Soovitan seda teha ajal, mil RPi ja LED -riba on välja lülitatud
Seadistage transistoriahelad, üks värvikanali kohta
- Sisestage üks transistoritest leivalauale, nagu on näidatud joonisel
- Sisestage üks 10 kΩ takisti transistori äravoolu ja allika tihvtide kohale. See on esimene ja viimane tihvt
- Ühendage allika tihvt (viimane tihvt) leivaplaadil oleva maaga mõne juhtme abil
- Korrake samme 1–3 veel kaks korda, nii et teil on kolm komplekti - üks värvi kohta (punane, roheline ja sinine)
Ühendage RPi tihvtid plaadiga
- Ühendage tihvt 16 esimese transistori värava tihvtiga (esimene tihvt) - see on sinine LED -kanal
- Ühendage tihvt 18 esimese transistori värava tihvtiga (esimene tihvt) - see on punane LED -kanal
- Ühendage tihvt 20 leivaplaadi küljel oleva maandusjoonega
- Ühendage tihvt 22 esimese transistori värava tihvtiga (esimene tihvt) - see on roheline LED -kanal
Olen kasutanud LED -idele sobivaid juhtmete värve: sinine, punane ja roheline. Maapinna jaoks olen kasutanud musta
Ühendage tünni pistik
- Ühendage tünnipistiku + otsaga valge juhe
- Ühendage must juhe silindri pesa otsa
- Ühendage must juhe leivaplaadil sama maandusjoonega, millega RPi Pin 20 ühendati
- Ühendage valge traat leivaplaadil oleva joonega +
LED -riba ühendamine
Minu LED -ribaga tuli pistik, mis oli piisavalt hea, et selle saaks ajutiselt leivaplaadiga ühendada. I Lükkasin leivalaua pistiku ja ühendasin selle vooluahela testimisega.
- Esimene transistor ühendati tihvtiga 16. Ma juhtisin sinise juhtme tühjendusnõelast (keskmine tihvt) LED -riba pistiku sinise juhtmeni
-
Teine transistor ühendati tihvtiga 18. Jooksin punast traati
Äravool
tihvt (keskmine tihvt) LED -riba pistiku punase juhtme külge
-
Kolmas transistor ühendati tihvtiga 22. Ma juhtisin rohelist traati
Äravool
tihvt (keskmine tihvt) LED -riba pistiku rohelise juhtme külge
- Lõpuks jooksin valge traadi + joonelt leivaplaadil, mis oli ühendatud tünnipistikuga, valge juhtmega LED -riba pistikul.
Võimsus
Pärast vooluahela kontrollimist peaksite olema hea sisse lülitama Raspberry Pi ja ühendama 12 -voldise pistiku pistikupessa.
Samm: serveripoolne kood
Serveripoolse koodi käitamine
cd /opt/com.jonhaydock/colour-pi
sudo npm start
See käivitab veebiserveri ja hakkab kuulama HTTPS- ja WSS -päringuid.
MÄRKUS. Pidage meeles, et pi-blaster tuleb kõigepealt käivitada
Keskkonnamuutujad
Veebisaidi vaikimisi kasutatav port on 443, kuid saate selle tühistada, määrates enne koodi käivitamist keskkonnamuutuja. Näiteks
eksport COLOUR_PI_PORT = 2443
Veebipesa vaikimisi kasutatav port on 1443, kuid saate selle tühistada, määrates enne koodi käivitamist keskkonnamuutuja. Näiteks
eksport COLOUR_PI_WSS_PORT = 3443
Märkus. Kuna veebipesa haldab cylon.js, mitte peamine veebisait, peavad need asuma erinevates portides
Nööpnõelad, mida kasutatakse sinise (tihvt 16), rohelise (tihvt 18) ja punase (tihvt 22) jaoks, saab samuti tühistada. Näiteks
eksport COLOUR_PI_PIN_BLUE = 36
eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40
Märkus. Need peavad vastama kasutatud füüsilistele tihvtidele. Kui muudate neid, peate värskendama ka failis/etc/default/pi-blaster määratletud GPIO-sid. Näiteks
DAEMON_OPTS =-gpio 16, 20, 21
Põhiserveri koodi leiate failist app.js. See fail käivitab HTTPS -veebiserveri ja kasutab ka Cylon.js raamistiku kaudu socket.io -d, et kuulata veebipesa taotlusi eraldi pordis.
Veebilehele pääsemiseks peaksite oma põhiarvutis avama veebibrauseri (olen seda testinud ainult Chrome'is) ja kasutama Raspberry Pi IP -aadressi, nt.
10.0.1.2/
Oma IP -aadressi saate teada käsurealt Raspberry Pi.
ifconfig
Veebiserver teenib avaliku kausta all olevat sisu. Vaikimisi kuvatakse leht index.html.
Cylon.js loob lõpp -punkti, mille abil saate Socket.io ühendada.
10.0.1.2:1443/api/robots/colour-pi
Pistiku, rohelise ja sinise väärtuste määramiseks saate pistikupesa kaudu saata sõnumi set_colour
device.emit ('set_colour', r, g, b)
Mis kutsub käsku set_colour, mis kutsub funktsiooni setColour rakenduses app.js. See funktsioon määrab iga R, G ja B väärtuse heledustaseme vahemikku 0 kuni 255. Kui 0 on välja lülitatud ja 255 on täielikult sisse lülitatud.
nt.
Punane r = 255, g = 0, b = 0
Roheline r = 0, g = 255, b = 0 Sinine r = 0, g = 0, b = 255 Valge r = 255, g = 255, b = 255 Must / väljas r = 0, g = 0, b = 0
8. samm: veebisaidi kood
Kindral
Veebisait kasutab eelmääratud loendist värvide valimiseks häältuvastust. Loendisse värvi lisamiseks muutke faili serveris: public/data/colours.json
nt.
"punane": "#FF0000", Kui värv on leitud või rippmenüüst valitud, määratakse kasti Väljund selle värvi ja sõnumi kaudu socket.io saadetakse teade Raspnerry Pi -le, mis määrab LED -id sama värvi.
MÄRKUS. Sõltuvalt teie LED -de heast olekust võite sarnast värvi näha või mitte. Mõnda on lihtsam kopeerida kui teist
Veebisaidi esmakordsel laadimisel, kui kasutate ise allkirjastatud SSL-sertifikaati, peate seda brauseris kinnitama. Peaksite nägema sertifikaadi kohta turvahoiatust.
Hääletuvastus
Sellel kastil on mikrofoniikoon. Kui klõpsate rohelisel ikoonil, hakkab see värve kuulama. Kuulamise ajal muutub see punaseks. See kuulab lühikest aega ja seejärel peatub. Punase mikrofoni ikooni klõpsamine peatab ka selle kuulamise.
Kuna see sait peab teie mikrofonile juurde pääsema, peate te sellele loa andma, kui seda küsitakse
MÄRKUS. Selle osa jaoks on vaja mikrofoni. Kasutan oma veebikaameras olevat.
Ajutine ärakiri
See kast jälgib teie öeldavate sõnade oletusi nii nagu te neid ütlete.
Lõplik ärakiri
See kast jälgib teie lõplikku oletust.
Tuntud värvid
See on kõigi värvide loend, mida leht teab. See luuakse failist colours.json. Kui valite ühe neist värvidest, räägib leht värvi ja määrab väljundi värvi.
MÄRKUS. Kõne kuulamiseks on vaja kõlareid või kõrvaklappe
Leitud värvid
See veebileht toetab praegu ainult värvi sobitamist. Kui sõna või sõnad, mida mikrofoni ütlesite, kattuvad mõne tuntud värvi nimega või valite loendi Tuntud värvid värvi, lisatakse see siia logina.
Väljund
Siin kuvatakse viimati leitud värv. Värvi heksade väärtus (nt #7cb9e8) ja RGB väärtus (nt 124, 185, 232) kuvatakse tekstina ja keskel oleva kasti taust on seatud tegelikule värvile.
See värv saadetakse ka Raspberry Pi -le ja peaksite nägema LED -riba värvi muutumist.
MÄRKUS. Kui te ei näe LED-i värvi muutumist, proovige taaskäivitada pi-blaster ja/või rakendus node.js
sudo teenuse pi-blaster taaskäivitamine
sudo npm start
Tuntud hääled
Selles kastis kuvatakse toetatud kõnesünteesi loend "Tuntud hääled". Nende häälte valimine muudab häält ja kuuldavat keelt ning räägib hääle nime.
Samuti muudab see kõnetuvastuse keeleks sama, mis loendis valitud.
Samm 9: Lõpuks
Siin on näide sellest, mida peaksite nägema.
Palun andke mulle teada, kui teil on probleeme, ja ma saan vajadusel värskendada.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust