Tartalomjegyzék:

Szín-pi: 9 lépés
Szín-pi: 9 lépés

Videó: Szín-pi: 9 lépés

Videó: Szín-pi: 9 lépés
Videó: Кто оказался хитрее?😂 #shorts 2024, November
Anonim
Szín-pi
Szín-pi

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

  1. Raspberry Pi - Egy Raspberry Pi 2B -t használtam, amit lefektettem, de Raspberry Pi 3 kezdő készletet kaphat 100 CAD körül
  2. 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
  3. Barrel Jack Connector - Vettem egyet a helyi elektronikai üzletemből, valami ilyesmit. Csak ellenőrizze, hogy megfelel -e a tápegységnek
  4. 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
  5. Breadboard Solderless Prototype PCB Board - valami ilyesmi
  6. 3 x 10kΩ ellenállás
  7. 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

Pi-blaster
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

Az áramkör bekötése
Az áramkör bekötése
Az áramkör bekötése
Az áramkör bekötése
Az áramkör bekötése
Az áramkör bekötése
Az áramkör bekötése
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

  1. Helyezze be a tranzisztorok egyikét a kenyértáblába az ábra szerint
  2. 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
  3. Csatlakoztasson valamilyen vezetéket a forráscsaphoz (utolsó tű) a kenyértáblán lévő földhöz
  4. 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

  1. Csatlakoztassa a 16 -os csapot az első tranzisztor kapucsapjához (első tű) - Ez lesz a kék LED csatorna
  2. Csatlakoztassa a 18 -as csapot az első tranzisztor kapucsapjához (első tű) - Ez lesz a piros LED csatorna
  3. Csatlakoztassa a 20 -as csapot a kenyértábla oldalán található földelővezetékek egyikéhez
  4. 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

  1. Csatlakoztasson egy fehér vezetéket a hordó aljzat + végéhez
  2. Csatlakoztasson egy fekete vezetéket az aljzat végéhez
  3. Csatlakoztassa a fekete vezetéket a kenyértábla ugyanazon földelővezetékéhez, amelyhez az RPi 20 -as csatlakozót csatlakoztatta
  4. 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.

  1. 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
  2. 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

  3. 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

  4. 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

Szerver oldali kód
Szerver 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

Weboldal kódja
Weboldal 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

Image
Image

Í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: