Tartalomjegyzék:
- 1. lépés: Felszerelés
- 2. lépés: A Raspberry Pi beállítása
- 3. lépés: Pi-blaster
- 4. lépés: A példakód beállítása
- 5. lépés: Hozzon létre saját aláírású SSL -tanúsítványt
- 6. lépés: Az áramkör bekötése
- 7. lépés: Kiszolgáló oldali kód
- 8. lépés: Webhely kódja
- 9. lépés: Végül
Videó: Szín-pi: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ez az oktatható útmutató bemutatja, hogyan lehet Raspberry Pi segítségével hangvezérelni egy RGB LED szalagot egy webhelyen keresztül, a Web Speech API interfészek segítségével a SpeechRecognition és a SpeechSynthesis számára.
Ez a példa bemutatja, hogyan kell
- Hozzon létre egy alapszintű webhelyet a Node.js használatával HTTPS protokollon keresztül
- Használja a Web Speech API interfészeket a beszédfelismeréshez és a beszédszintézishez.
- Használja a Cylon.js keretrendszert egy Raspberry Pi RGB LED szalagjának vezérléséhez
- Kommunikáció WSS (Secure Web Socket) segítségével a weboldaltól a Cylon.js -ig a LED színének szabályozásához
jegyzet
- A beszédszintetizátor hallásához hangszórókra vagy fejhallgatóra lesz szüksége
- A hangfelismerés működéséhez hozzáférést kell adnia a mikrofonhoz
- Mivel ez a hozzáférés a mikrofonhoz, a webhelyet HTTPS alatt kell futtatni
- A cylon-api-socketio könyvtár jelenleg nem támogatja a https-t. Van egy lekérési kérésem, amely egyesítésre vár, de addig le kell cserélnie a /node_modules/cylon-api-socketio/lib/api.js fájlt ebben a lerakatban
- a működéshez pi-blaster szükséges.
1. lépés: Felszerelés
- Raspberry Pi - Egy Raspberry Pi 2B -t használtam, amit lefektettem, de Raspberry Pi 3 kezdő készletet kaphat 100 CAD körül
- RGB LED szalagfény - Minger LED szalagfénnyel játszottam 32,8ft/10M 600leds RGB SMD 5050. Ez egy kontrollert és egy tápegységet tartalmaz körülbelül 40 CAD -hoz
- Barrel Jack Connector - Vettem egyet a helyi elektronikai üzletemből, valami ilyesmit. Csak ellenőrizze, hogy megfelel -e a tápegységnek
- Jumper csatlakozók / huzal - Volt néhány női -férfi csatlakozó kábelem és néhány 22 -es nyomtávú tömör huzal
- Breadboard Solderless Prototype PCB Board - valami ilyesmi
- 3 x 10kΩ ellenállás
- 3 x N -csatornás MOSFET a LED -ek vezérlésére - néhány IRL3303 -at vettem a helyi elektronikus boltomból. Fontos, hogy a kapuk küszöbfeszültsége max. 3.3V, így az RPi csapok hajthatják; a névben általában „L” (logikai szint) jelöli.
2. lépés: A Raspberry Pi beállítása
Operációs rendszer
Általában a legújabb Raspbian buildet használom. Töltse le a képet, és írja be az SD kártyára. Ha Windows számítógépet használ, akkor a Win32 Disk Imager segítségével írhatja be a képet az SD -kártyára.
Node.js
Telepítse a Node.js legújabb verzióját. Íráskor a 8.9.1 -et használom
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Telepítse a Git programot
sudo apt-get install git
3. lépés: Pi-blaster
A pi-blaster lehetővé teszi a PWM-et a Raspberry Pi-hez kért GPIO-tűkön. Az alkalmazott technika rendkívül hatékony: nem használja a CPU -t, és nagyon stabil impulzusokat ad.
Ez az impulzusszélesség -moduláció lehetővé teszi a Raspberry Pi számára, hogy vezérelje, hogy a piros, zöld és kék csatornák milyen fényesek a LED szalag számára.
Először klónozza a tárolót
cd /opt /
sudo git klón https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Ezután építse és telepítse
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Végül állítsa be, hogy mely csapokat szeretné használni
A root fiók alatt vagy a sudo használatával hozza létre és szerkessze a fájlt
/etc/default/pi-blaster
Adja hozzá a következő sorokat
DAEMON_OPTS =-gpio 23, 24, 25
Ezeknek a gpio csapoknak meg kell egyezniük a LED szalaghoz csatlakoztatott csapokkal.
MEGJEGYZÉS: Különbség van a GPIO és a pin szám között. Ez a példa a következőket használja
LED - kék, GPIO -23, pin - 16
LED - piros, GPIO -24, pin - 18 LED - zöld, GPIO -25, pin - 22
Extra csípések
Indítsa el a pi-blastert
sudo szolgáltatás pi-blaster start
Indítsa újra a pi-blastert
sudo szolgáltatás pi-blaster újraindítása
Hagyd abba a pi-blastert
sudo szolgáltatás pi-blaster stop
Indítsa el automatikusan a pi-blastert a rendszerindításkor
sudo systemctl engedélyezi a pi-blastert
Figyelmeztetések és egyéb figyelmeztetések
A pi-blaster által használt csapok kimenetként lesznek konfigurálva. Ne csatlakoztasson valamit egy bemenethez, különben megsemmisítheti! Ez a démon a málna pi hardver PWM generátorát használja a pontos időzítéshez. Ez zavarhatja a hangkártya kimenetét.
4. lépés: A példakód beállítása
Klónozza a példakódot
1. Állítson be egy alapmappát a telepítéshez
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klónozza a példa git adattárat
git klón
vagy
git klón [email protected]: haydockjp/color-pi.git
3. Telepítse a függőségeket
cd szín-pi
npm telepítés
Ez 2-3 percet vehet igénybe
4. Ennek a projektnek HTTPS és WSS kapcsolaton keresztül kell kommunikálnia. Jelenleg a cylon-api-socketio nem támogatja az SSL-kapcsolatokat. Van egy nyitott lekérési kérelem a támogatás hozzáadásához, de amíg ez össze nem olvad, egy javítófájl található ebben az adattárban. Futtassa a következő parancsot az npm telepítése után
git checkout node_modules/cylon-api-socketio/lib/api.js
5. lépés: Hozzon létre saját aláírású SSL -tanúsítványt
1. Hozzon létre privát kulcsfájlt
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Hozzon létre CSR -t (tanúsítvány -aláírási kérelem)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
Ezen a ponton a tanúsítványkéréshez szükséges információkat kell megadnia. Mivel ez egy önaláírt tanúsítvány, rajtad múlik, hogy milyen pontosan tölti ki az adatokat. Íme egy példa
Ország neve (2 betűből álló kód) [AU]: CA
Állam vagy tartomány neve (teljes név) [Néhány állam]: Brit Columbia Helységnév (pl. Város) : Vancouveri szervezet neve (pl. Cég) [Internet Widgits Pty Ltd]: Színes Pi szervezeti egység neve (pl.) : Általános név (pl. Szerver FQDN vagy ÖN neve) : color-pi Email Address : [email protected]
Kihívási jelszó :
Választható cégnév :
Ebben a példában csak nyomja meg a visszatér gombot, hogy üresen hagyja a kihívási jelszót
3. Generálja a tanúsítványt
openssl x509 -req -days 1095 -in color-pi-csr.pem -ignkey color-pi-key.pem -out color-pi-cert.pem
4. A nagyobb biztonság érdekében létrehozunk egy Diffie Hellman Parameters fájlt is
openssl dhparam -out dh_2048.pem 2048
Ez 15-20 percet vehet igénybe
6. lépés: Az áramkör bekötése
A LED szalag táplálása
A LED szalag 12 volt feszültségű. A Raspberry Pi csak 3,3 vagy 5 voltos kimenetre képes, és nem képes a sok LED meghajtásához szükséges erősítők közelében sem.
Fontos, hogy ne csatlakoztassa a 12 voltos tápegységet a Raspberry Pi -hez. N-csatornás MOSFET tranzisztorokat használnak az RPi csapok 3,3 V és a LED tápegység 12 V elválasztására.
A MOSFET -nek három csapja van: Gate, Drain és Source. Ha nem biztos abban, hogy melyik google adja a használt tranzisztor adatlapját, pl. IRL3303
Csatlakoztatni fogjuk a Raspberry Pi Pin -t a kapuhoz, a LED -vezetéket a Drain -hez és egy közös földet a Forráshoz. Amikor a csap magas lesz, a lefolyó és a forrás közötti feszültség aktiválja a kaput, és összeköti a kaput a forrással.
Emellett 10 kΩ -os ellenállásokat fogunk elhelyezni a kapun és a forrásban, hogy amikor magas az RPi -csap, megvédhessük a csapot a rajta átfolyó áram csökkentésével.
A következő lépéseket saját felelősségére hajtsa végre. Nem vállalok felelősséget semmiért, ami elromolhat
Van egy frizuráló kép és egy fotó a tényleges áramkörről fent.
Azt javaslom, hogy ezt az RPi és a LED szalag kikapcsolt állapotában tegye
Állítsa be a tranzisztor áramköröket, színcsatornánként egyet
- Helyezze be a tranzisztorok egyikét a kenyértáblába az ábra szerint
- Helyezze be az egyik 10 kΩ -os ellenállást a leeresztő és a tranzisztor forráscsapjai közé. Ez az első és az utolsó csap
- Csatlakoztasson valamilyen vezetéket a forráscsaphoz (utolsó tű) a kenyértáblán lévő földhöz
- Ismételje meg az 1-3. Lépést még kétszer, hogy három készletet kapjon - színenként egyet (piros, zöld és kék)
Csatlakoztassa az RPi csapokat a táblához
- Csatlakoztassa a 16 -os csapot az első tranzisztor kapucsapjához (első tű) - Ez lesz a kék LED csatorna
- Csatlakoztassa a 18 -as csapot az első tranzisztor kapucsapjához (első tű) - Ez lesz a piros LED csatorna
- Csatlakoztassa a 20 -as csapot a kenyértábla oldalán található földelővezetékek egyikéhez
- Csatlakoztassa a 22 -es csapot az első tranzisztor kapucsapjához (első tű) - Ez lesz a zöld LED csatorna
A LED -ekhez megfelelő huzalszíneket használtam: kék, piros és zöld. Feketét használtam a talajhoz
Csatlakoztassa a hordócsatlakozót
- Csatlakoztasson egy fehér vezetéket a hordó aljzat + végéhez
- Csatlakoztasson egy fekete vezetéket az aljzat végéhez
- Csatlakoztassa a fekete vezetéket a kenyértábla ugyanazon földelővezetékéhez, amelyhez az RPi 20 -as csatlakozót csatlakoztatta
- Csatlakoztassa a fehér vezetéket a kenyérsütő + vonalához
A LED szalag csatlakoztatása
A LED szalagomhoz egy olyan csatlakozó érkezett, amely elég jó méretű volt ahhoz, hogy ideiglenesen be lehessen dugni a kenyérlapba. I Nyomtam a csatlakozót a kenyértáblába, és bekötöttem az áramkör tesztjére.
- Az első tranzisztor a 16 -os csaphoz csatlakozott. Kék vezetéket vittem a leeresztő csapból (középső tű) a kék vezetékhez a LED szalagcsatlakozón
- A második tranzisztor a 18 -as érintkezőhöz csatlakozott. Piros vezetéket vezettem a
Csatorna
tű (középső tű) a LED szalagcsatlakozó piros vezetékéhez
- A harmadik tranzisztor a 22 -es csaphoz csatlakozott. Zöld vezetéket vezettem a
Csatorna
tű (középső tű) a LED szalagcsatlakozó zöld vezetékéhez
- Végül egy fehér vezetéket futtattam le a + vonalról a kenyérsíkhoz csatlakoztatott kenyértáblán, a fehér vezetékre a LED szalag csatlakozóján.
Erő
Miután ellenőrizte az áramkört, be kell kapcsolnia a Raspberry Pi -t, és be kell dugnia a 12 V -os tápfeszültséget a hordócsatlakozóba.
7. lépés: Kiszolgáló oldali kód
A szerver oldali kód futtatása
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Ezzel elindítja a webszervert, és elkezdi figyelni a HTTPS és WSS kéréseket.
MEGJEGYZÉS: Ne felejtse el először a pi-blaster futtatását
Környezeti változók
Az alapértelmezett webhelyport 443, de ezt felülbírálhatja, ha beállít egy környezeti változót a kód elindítása előtt. Például
export COLOUR_PI_PORT = 2443
Az alapértelmezett webes socket port 1443, de ezt felülbírálhatja egy környezeti változó beállításával a kód elindítása előtt. Például
export COLOUR_PI_WSS_PORT = 3443
Megjegyzés: Mivel a webes aljzatot a cylon.js kezeli, és nem a fő webhely, ezeknek különböző portokon kell lenniük
A kék (16. tüske), zöld (18. érintkező) és piros (22. tű) gombok szintén felülbírálhatók. Például
export COLOUR_PI_PIN_BLUE = 36
export COLOUR_PI_PIN_RED = 38 export COLOUR_PI_PIN_GREEN = 40
Megjegyzés: Ezeknek meg kell egyezniük a használt fizikai csapokkal. Ha ezeket megváltoztatja, frissítenie kell az/etc/default/pi-blaster fájlban meghatározott GPIO-kat is. Például
DAEMON_OPTS =-gpio 16, 20, 21
A fő szerverkód az app.js fájlban található. Ez a fájl elindítja a HTTPS webszervert, és a Cylon.js keretrendszeren keresztül a socket.io használatával hallgatja a webes socket kéréseket egy külön porton.
A webhely eléréséhez nyisson meg egy böngészőt a fő számítógépén (ezt csak a Chrome -ban teszteltem), és használja a Raspberry Pi IP -címét, pl.
10.0.1.2/
A Raspberry Pi parancssorból megtudhatja az IP -címét.
ifconfig
A webszerver minden tartalmat kiszolgál a nyilvános mappában. Alapértelmezés szerint az index.html oldal jelenik meg.
A Cylon.js létrehoz egy végpontot, amelyhez csatlakoztathatja a Socket.io fájlt.
10.0.1.2:1443/api/robots/colour-pi
Küldhet set_colour üzenetet az aljzaton keresztül a piros, zöld és kék értékek beállításához
device.emit ('set_colour', r, g, b)
Melyik a set_colour parancsot hívja meg, amely az app.js fájl setColour függvényét. Ez a funkció minden R, G és B érték fényerejét 0 és 255 között állítja be. Ahol a 0 ki van kapcsolva és a 255 teljesen be van kapcsolva.
például.
Piros r = 255, g = 0, b = 0
Zöld r = 0, g = 255, b = 0 Kék r = 0, g = 0, b = 255 Fehér r = 255, g = 255, b = 255 Fekete / Ki r = 0, g = 0, b = 0
8. lépés: Webhely kódja
Tábornok
A webhely hangfelismeréssel választja ki a színeket az előre meghatározott listából. Ha színt szeretne hozzáadni a listához, szerkessze a fájlt a szerveren: public/data/colours.json
például.
"piros": "#FF0000", Ha színt talál, vagy kiválasztja a legördülő menüből, a Kimenet mező erre a színre áll, és egy üzenetet küld a socket.io -n keresztül a Raspnerry Pi -nek, amely azonos színűre állítja a LED -eket.
MEGJEGYZÉS: attól függően, hogy a LED -ek mennyire jók, előfordulhat, hogy nem lát hasonló színt. Néhányat könnyebb lemásolni, mint másokat
Amikor először betölti a webhelyet, mivel önaláírt SSL-tanúsítványt használ, ezt tudomásul kell vennie a böngészőben. Látnia kell egy biztonsági riasztást a tanúsítványról.
Hangfelismerés
Ebben a dobozban van egy mikrofon ikon. Ha rákattint az ikonra, amikor zöld, akkor elkezdi figyelni a színeket. Hallgatás közben piros lesz. Rövid ideig hallgat, majd leáll. A piros színű mikrofon ikonra kattintva szintén megállítja a hallgatást.
Mivel ennek az oldalnak hozzá kell férnie a mikrofonjához, engedélyt kell adnia, amikor a rendszer kéri
MEGJEGYZÉS: Ehhez a részhez mikrofonra van szükség. Én a webkamerámban lévőt használom.
Időközi átirat
Ez a mező követi az általad kimondott szavak találgatásait.
Végső átirat
Ez a mező követi a végső találgatást, amit mondtál.
Ismert színek
Ez az oldal minden színének listája. A colours.json fájlból jön létre. Ha ezek közül a színek közül egyet választ, az oldal a színt mondja ki, és beállítja a kimeneti színt.
MEGJEGYZÉS: A beszéd hallásához hangszórókra vagy fejhallgatóra van szüksége
Talált színek
Ez a weboldal jelenleg csak a szín egyezését támogatja. Ha a szó vagy szavak, amelyeket a mikrofonba beszélt, egyezik egy ismert szín nevével, vagy kiválaszt egy színt az Ismert szín listából, akkor naplóként kerül ide.
Kimenet
Itt jelenik meg az utoljára talált szín. A Színes hexadecimális érték (pl. #7cb9e8) és az RGB érték (pl. 124, 185, 232) szövegként jelenik meg, és a középen lévő mező háttere az aktuális színre lesz állítva.
Ezt a színt a Raspberry Pi is elküldi, és látnia kell a LED -szalag színének változását.
MEGJEGYZÉS: ha nem látja a LED színének megváltozását, próbálja meg újraindítani a pi-blaster és/vagy a node.js alkalmazást
sudo szolgáltatás pi-blaster újraindítása
sudo npm start
Ismert hangok
Ebben a mezőben megjelenik a támogatott speechSynthesis "Ismert hangok" listája. Az egyik ilyen hang kiválasztása megváltoztatja a hangot és a hallott nyelvet, és a hang nevét fogja kimondani.
A beszédfelismerés nyelvét is megváltoztatja a listában választott nyelvre.
9. lépés: Végül
Íme egy példa arra, hogy mit kell látnia.
Kérjük, tudassa velem, ha bármilyen problémája van, és szükség esetén frissíthetem.
Ajánlott:
M5StickC ESP32 és NeoPixels LED gyűrű Véletlen szín: 7 lépés
M5StickC ESP32 és NeoPixels LED -gyűrű véletlenszerű színe: Ebben a projektben megtanuljuk, hogyan jelenítsünk meg véletlenszerű színt a NeoPixels LED -gyűrűn egy M5StickC ESP32 kártya segítségével. Nézze meg a videót
Ó !! Szín: 7 lépés
Ó !! Szín: Ó !! A szín egy egyszerű játék a szín kitalálásához. A játék a legalapvetőbb három alapszínt adja meg. Ha két színt kell kombinálnia, nyomja meg mindkét gombot. Miután megnyomta a gombot, a játék fog Az ítélet helyes. Végül kérés
DIY vezérlés RGB LED szín Bluetooth -on keresztül: 5 lépés
DIY vezérlés RGB LED szín Bluetooth -on keresztül: Az intelligens izzók népszerűsége az utóbbi időben egyre nagyobb, és folyamatosan az intelligens otthon eszköztárának kulcsfontosságú részévé válnak. Az intelligens izzók lehetővé teszik a felhasználó számára, hogy a felhasználó okostelefonjának speciális alkalmazásán keresztül vezérelje fényét; az izzó bekapcsolható
MagicCube - Koppintson a szín megváltoztatásához: 6 lépés (képekkel)
MagicCube - Érintse meg a Szín megváltoztatásához: Üdvözöljük az első oktatható témában. Remélem, minden lépést követni tud. Ha bármilyen kérdése van, kérdezzen, és hozzáadom a tartalmat az oktathatóhoz. Ennek a projektnek az volt az ötlete, hogy felépítsünk és kifejlesszünk egy kis különleges kockás kockát ajándékként C
Kép tesztelése a szín és a tisztaság érdekében: 8 lépés
Kép tesztelése a szín és az átláthatóság érdekében: ezt az utasítást magamnak készítettem; hogy javítsam az utasításaimat, azonban szándékomban áll megosztani a találatokat. Észrevettem, hogy néhány kép, amelyet az Instructabes -re töltök fel, tökéletesen jelenik meg, más képek pedig tisztátalanok, kissé elszíneződtek vagy homályosak. Nem tudni