Obsah:
- Krok 1: Zariadenie
- Krok 2: Nastavenie Raspberry Pi
- Krok 3: Pi-blaster
- Krok 4: Nastavenie ukážkového kódu
- Krok 5: Vytvorte si vlastnoručne podpísaný certifikát SSL
- Krok 6: Zapojenie obvodu
- Krok 7: Kód na strane servera
- Krok 8: Kód webovej stránky
- Krok 9: Nakoniec
Video: Farba-pi: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Tento návod ukazuje, ako používať Raspberry Pi na hlasové ovládanie RGB LED pásika prostredníctvom webovej stránky pomocou rozhraní Web Speech API Interface pre SpeechRecognition a SpeechSynthesis.
Tento príklad ukazuje, ako na to
- Vytvorte si základnú webovú stránku pomocou Node.js cez
- Na rozhranie SpeechRecognition a SpeechSynthesis používajte rozhrania API Web Speech API.
- Pomocou rámca Cylon.js môžete ovládať RGB LED pás na Raspberry Pi
- Komunikujte cez WSS (zabezpečené webové zásuvky) z webovej stránky na Cylon.js, aby ste mohli ovládať farbu LED
Poznámka
- Na počúvanie syntetizátora reči budete potrebovať reproduktory alebo slúchadlá
- Aby fungovalo rozpoznávanie hlasu, budete musieť poskytnúť prístup k svojmu mikrofónu
- Pretože tento prístup k vášmu mikrofónu, stránky musia byť spustené pod
- Knižnica cylon-api-socketio v súčasnosti nepodporuje protokol https. Mám žiadosť o stiahnutie, ktorá čaká na zlúčenie, ale do tej doby budete musieť nahradiť súbor /node_modules/cylon-api-socketio/lib/api.js súborom v tomto úložisku
- Aby to fungovalo, je potrebný pi-blaster.
Krok 1: Zariadenie
- Raspberry Pi - Použil som Raspberry Pi 2B, ktorý som mal položený okolo, ale môžete získať štartovaciu sadu Raspberry Pi 3 za približne 100 CAD
- RGB LED páskové svetlo - Hrával som s LED páskovým svetlom Minger 32,8 stôp/10 miliónov 600 lôd RGB SMD 5050. Dodáva sa s ovládačom a napájacím zdrojom pre približne 40 CAD.
- Konektor Barrel Jack - Kúpil som si ho v miestnom obchode s elektronikou, niečo také. Uistite sa, že vyhovuje vášmu zdroju napájania
- Jumperové konektory / vodiče - Okolo som položil niekoľko konektorových káblov typu Female to Male a asi 22 -metrový pevný prepojovací kábel
- Breadboard Solderless Prototype PCB Board - niečo také
- Rezistory 3 x 10 kΩ
- 3 x N -kanálové MOSFETy na ovládanie LED - kúpil som niekoľko IRL3303 z môjho miestneho elektronického obchodu. Je dôležité, aby prahové napätie brány bolo max. 3,3 V, takže môže byť poháňaný kolíkmi RPi; v názve sa zvyčajne označuje písmenom „L“(logická úroveň).
Krok 2: Nastavenie Raspberry Pi
Operačný systém
Normálne používam najnovšiu zostavu Raspbian. Stiahnite si obrázok a napíšte ho na kartu SD. Ak používate počítač so systémom Windows, na zapísanie obrázku na kartu SD môžete použiť program Win32 Disk Imager.
Node.js
Nainštalujte najnovšiu verziu Node.js. V čase písania článku používam 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Nainštalujte Git
sudo apt-get install git
Krok 3: Pi-blaster
pi-blaster umožňuje PWM na kolíkoch GPIO, ktoré od Raspberry Pi požadujete. Použitá technika je mimoriadne účinná: nepoužíva procesor a poskytuje veľmi stabilné impulzy.
Táto modulácia šírky impulzu umožňuje Raspberry Pi ovládať, ako jasný je každý z červených, zelených a modrých kanálov pre pásik LED.
Najprv klonujte úložisko
cd /opt /
klon sudo git https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Potom zostrojte a nainštalujte
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Nakoniec nakonfigurujte, ktoré piny chcete používať
Pod účtom root alebo pomocou sudo vytvorte a upravte súbor
/etc/default/pi-blaster
Pridajte nasledujúce riadky
DAEMON_OPTS =-gpio 23, 24, 25
Tieto gpio piny musia zodpovedať pinom, ktoré pripájate k svojmu LED pásu.
POZNÁMKA: Existuje rozdiel medzi GPIO a číslom PIN. Tento príklad používa nasledujúce
LED - modrá, GPIO -23, kolík - 16
LED - červená, GPIO -24, kolík - 18 LED - zelená, GPIO -25, kolík - 22
Extra vychytávky
Spustite pi-blaster
spustenie služby sudo pi-blaster
Reštartujte pi-blaster
reštartujte službu sudo pi-blaster
Zastavte pi-blaster
sudo service pi-blaster stop
Pi-blaster spustite automaticky pri spustení
sudo systemctl povoliť pi-blaster
Varovania a ďalšie upozornenia
Kolíky, ktoré používa pi-blaster, budú nakonfigurované ako výstupy. Nepripájajte niečo k vstupu, inak ho môžete zničiť! Tento démon používa na získanie presného načasovania hardvérový generátor PWM malinového pi. To môže rušiť výstup zvukovej karty.
Krok 4: Nastavenie ukážkového kódu
Klonujte ukážkový kód
1. Nastavte základný priečinok, do ktorého sa má nainštalovať
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klonujte vzorové úložisko git
klon git
alebo
git clone [email protected]: haydockjp/color-pi.git
3. Nainštalujte závislosti
cd farba-pi
npm inštalácia
Môže to trvať 2-3 minúty
4. Tento projekt musí komunikovať prostredníctvom HTTPS a WSS. V súčasnosti cylon-api-socketio nepodporuje pripojenia SSL. Existuje otvorená žiadosť o pridanie tejto podpory, ale kým sa nespojí, v tomto úložisku je opravný súbor. Po inštalácii npm spustite nasledujúci príkaz
git checkout node_modules/cylon-api-socketio/lib/api.js
Krok 5: Vytvorte si vlastnoručne podpísaný certifikát SSL
1. Vytvorte súbor súkromného kľúča
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Vytvorte CSR (žiadosť o podpis certifikátu)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
V tomto mieste budete vyzvaní na poskytnutie niektorých informácií k žiadosti o certifikát. Pretože ide o certifikát s vlastným podpisom, je len na vás, ako presne vyplníte údaje. Tu je príklad
Názov krajiny (dvojpísmenový kód) [AU]: CA
Názov štátu alebo provincie (úplný názov) [Niektorý štát]: Názov lokality Britskej Kolumbie (napr. Mesto) : Názov organizácie vo Vancouveri (napr. Spoločnosť) [Internet Widgits Pty Ltd]: Názov organizačnej jednotky Color Pi (napr. Sekcia) : Bežný názov (napr. FQDN servera alebo VAŠE meno) : color-pi E-mailová adresa : [email protected]
Heslo výzvy :
Voliteľný názov spoločnosti :
V tomto prípade stačí stlačiť kláves Enter a heslo výzvy zostane prázdne
3. Vygenerujte certifikát
openssl x509 -req -dni 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. Pre väčšiu bezpečnosť tiež vytvoríme súbor Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
To môže trvať 15-20 minút
Krok 6: Zapojenie obvodu
Napájanie LED pásika
LED pás je napájaný 12 voltami. Raspberry Pi má výstup iba 3,3 V alebo 5 V a nie je schopný produkovať kdekoľvek v blízkosti zosilňovačov potrebných na napájanie toľkých LED diód.
Je dôležité, aby ste k Raspberry Pi nepripájali 12 voltový napájací zdroj. N-kanálové tranzistory MOSFET sa používajú na oddelenie 3,3 V na kolíkoch RPi a 12 V napájania LED.
MOSFET má tri piny Gate, Drain a Source. Ak si nie ste istí, ktorý je google pre dátový list tranzistora, ktorý používate, napr. IRL3303
Chystáme sa pripojiť pin Raspberry Pi k bráne, drôt LED k odtoku a spoločnú zem k zdroju. Keď kolík stúpne, napätie medzi odtokom a zdrojom aktivuje bránu a bránu spojí so zdrojom.
Cez bránu a zdroj dáme tiež rezistory 10 kΩ, aby keď je kolík RPi vysoký, mohli sme kolík chrániť znížením prúdu, ktorý ním prechádza.
Ďalšie kroky vykonajte na vlastné riziko. Nezodpovedám za nič, čo sa môže pokaziť
Hore je šumivý obraz a fotografia skutočného obvodu.
Odporúčam to urobiť, keď je vypnuté napájanie pre RPi a LED pásik
Nastavte tranzistorové obvody, jeden na každý farebný kanál
- Vložte jeden z tranzistorov do dosky ako je znázornené na obrázku
- Vložte jeden z 10kΩ odporov cez odtokový a zdrojový kolík tranzistora. Toto je prvý a posledný pin
- Pomocou nejakého drôtu prepojte kolík zdroja (posledný kolík) so zemou na doske
- Kroky 1 - 3 zopakujte ešte dvakrát, aby ste mali tri sady - jednu pre každú farbu (červenú, zelenú a modrú)
Pripojte kolíky RPi k doske
- Pripojte kolík 16 k kolíku brány (prvý kolík) prvého tranzistora - toto bude kanál modrej LED
- Pripojte kolík 18 k kolíku brány (prvý kolík) prvého tranzistora - toto bude červený kanál LED
- Pripojte kolík 20 k jednému z uzemňovacích vedení na bočnej strane dosky
- Pripojte kolík 22 k kolíku brány (prvý kolík) prvého tranzistora - toto bude zelený kanál LED
Na LED diódy som použil zodpovedajúce farby drôtov: modrú, červenú a zelenú. Na zem som použil čiernu farbu
Pripojte sudový zdvihák
- Pripojte biely vodič na + koniec valcového konektora
- Pripojte čierny vodič k - koncu konektora hlavne
- Pripojte čierny vodič k rovnakému uzemňovaciemu vodiču na nepájivom poli, ku ktorému bol pripojený kolík RPi 20
- Pripojte biely vodič k riadku + na doske
Pripojenie LED pásika
Môj LED pásik bol dodávaný s konektorom, ktorý bol dostatočne dobrý na to, aby ho bolo možné dočasne zapojiť do breadboardu. Zatlačil som konektor v doske a zapojil som ho do testu obvodu.
- Prvý tranzistor pripojený k pinu 16. Viedol som modrý vodič od vypúšťacieho kolíka (stredný kolík) k modrému vodiču na konektore pásky LED
-
Druhý tranzistor je pripojený na pin 18. Spustil som červený vodič z
Vypustiť
pin (stredný pin) k červenému vodiču na konektore pásky LED
-
Tretí tranzistor pripojený k pinu 22. Spustil som zelený vodič od
Vypustiť
pin (stredný pin) k zelenému vodiču na konektore pásky LED
- Nakoniec som spustil biely vodič z + vedenia na doske, ktorá bola pripojená k hlavnému konektoru, k bielemu vodiču na konektore LED pásika.
Moc
Po kontrole obvodu by ste mali byť schopní zapnúť Raspberry Pi a zapojiť napájanie 12 V do hlavne.
Krok 7: Kód na strane servera
Spustenie kódu na strane servera
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Spustí sa webový server a začnú sa počúvať požiadavky HTTPS a WSS.
POZNÁMKA: Nezabudnite najskôr spustiť pi-blaster
Premenné prostredia
Predvolený port webovej stránky je 443, ale môžete to prepísať nastavením premennej prostredia pred spustením kódu. Napríklad
export COLOUR_PI_PORT = 2443
Predvolený port webovej zásuvky je 1443, ale môžete to prepísať nastavením premennej prostredia pred spustením kódu. Napríklad
export COLOUR_PI_WSS_PORT = 3443
Poznámka: Pretože o webovú zásuvku sa stará cylon.js, a nie hlavný web, musia byť na rôznych portoch.
Kolíky, ktoré sa používajú pre modrý (pin 16), zelený (pin 18) a červený (pin 22), môžu byť tiež prepísané. Napríklad
export COLOUR_PI_PIN_BLUE = 36
export COLOUR_PI_PIN_RED = 38 export COLOUR_PI_PIN_GREEN = 40
Poznámka: Tieto musia zodpovedať použitým fyzickým kolíkom. Ak ich zmeníte, budete tiež potrebovať aktualizovať GPIO definované v súbore/etc/default/pi-blaster. Napríklad
DAEMON_OPTS =-gpio 16, 20, 21
Hlavný kód servera nájdete v súbore app.js. Tento súbor spustí webový server HTTPS a tiež prostredníctvom rámca Cylon.js používa socket.io na počúvanie požiadaviek webového soketu na samostatnom porte.
Na prístup na webovú stránku by ste mali otvoriť webový prehliadač na hlavnom počítači (testoval som to iba v Chrome) a použiť IP adresu Raspberry Pi, napr.
10.0.1.2/
Svoju IP adresu môžete zistiť z príkazového riadka Raspberry Pi.
ifconfig
Webový server bude poskytovať všetok obsah vo verejnom priečinku. Štandardne sa zobrazí stránka index.html.
Cylon.js vytvára koncový bod, ktorý môžete pripojiť k Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Prostredníctvom zásuvky môžete odoslať správu set_colour a nastaviť červenú, zelenú a modrú hodnotu
device.emit ('set_colour', r, g, b)
Ktorý volá príkaz set_colour, ktorý volá funkciu setColour v app.js. Táto funkcia nastavuje úrovne jasu pre každú z hodnôt R, G a B od 0 do 255. Kde 0 je vypnuté a 255 je úplne zapnuté.
napr.
Červená r = 255, g = 0, b = 0
Zelená r = 0, g = 255, b = 0 modrá r = 0, g = 0, b = 255 biela r = 255, g = 255, b = 255 čierna / vypnutá r = 0, g = 0, b = 0
Krok 8: Kód webovej stránky
Generál
Web používa rozpoznávanie hlasu na výber farieb z preddefinovaného zoznamu. Ak chcete do zoznamu pridať farbu, upravte súbor na serveri: public/data/colours.json
napr.
"red": "#FF0000",
Keď sa nájde farba alebo sa vyberie z rozbaľovacieho zoznamu, výstupné pole sa nastaví na túto farbu a správa sa odošle cez socket.io na Raspnerry Pi, ktorý nastaví diódy LED na rovnakú farbu.
POZNÁMKA: V závislosti od toho, ako dobré sú vaše LED diódy, môžete alebo nemusíte vidieť podobnú farbu. Niektoré je možné duplikovať jednoduchšie ako ostatné
Keď používate webový server prvýkrát, pretože používate certifikát SSL podpísaný vlastníkom, budete to musieť potvrdiť v prehliadači. Mali by ste vidieť bezpečnostné upozornenie týkajúce sa certifikátu.
Rozpoznávanie hlasu
Tento box má ikonu mikrofónu. Ak kliknete na ikonu, keď je zelená, začne počúvať farby. Počas počúvania sa zmení na červenú. Bude počúvať krátky čas a potom sa zastaví. Kliknutím na ikonu mikrofónu, keď je červená, sa zastaví aj počúvanie.
Keďže tento web potrebuje prístup k vášmu mikrofónu, budete na výzvu vyzvaní naň dať povolenie
POZNÁMKA: K tejto časti potrebujete mikrofón. Ten používam na svojej webovej kamere.
Dočasný prepis
Toto pole sleduje hádanie slov, ktoré hovoríte, ako ich hovoríte.
Konečný prepis
Toto pole sleduje konečný odhad toho, čo ste povedali.
Známe farby
Toto je zoznam všetkých farieb, o ktorých stránka vie. Je vytvorený zo súboru colours.json. Ak vyberiete jednu z týchto farieb, stránka bude hovoriť farbou a nastaví výstupnú farbu.
POZNÁMKA: Na vypočutie reči potrebujete reproduktory alebo slúchadlá
Nájdené farby
Táto webová stránka v súčasnosti podporuje iba zladenie farby. Ak sa slovo alebo slová, ktoré ste hovorili do mikrofónu, zhodujú s názvom známej farby alebo vyberiete farbu zo zoznamu Známa farba, bude sem pridané ako denník.
Výkon
Tu sa zobrazí posledná nájdená farba. Hodnota Color Hex (napr. #7cb9e8) a hodnota RGB (napr. 124, 185, 232) sa zobrazia ako text a pozadie poľa v strede sa nastaví na skutočnú farbu.
Táto farba je odoslaná aj na Raspberry Pi a mali by ste vidieť zmenu farby LED pásika.
POZNÁMKA: Ak nevidíte zmenu farby diódy LED, skúste reštartovať program pi-blaster a/alebo aplikáciu node.js
reštartujte službu sudo pi-blaster
sudo npm start
Známe hlasy
Toto pole zobrazuje zoznam „Známych hlasov“z podporovanej syntézy reči. Výberom jedného z týchto hlasov zmeníte hlas a jazyk, ktorý budete počuť, a bude vyslovovať meno hlasu.
Tiež sa zmení jazyk rozpoznávania reči na jazyk zvolený v zozname.
Krok 9: Nakoniec
Tu je príklad toho, čo by ste mali vidieť.
Dajte mi vedieť, ak máte nejaký problém, a môžem aktualizovať podľa potreby.
Odporúča:
M5StickC ESP32 a NeoPixels LED krúžok náhodná farba: 7 krokov
Náhodná farba LED krúžku M5StickC ESP32 a NeoPixels: V tomto projekte sa naučíme, ako na doske LED NeoPixels zobrazovať náhodnú farbu pomocou dosky M5StickC ESP32. Pozrite si video
Ach !! Farba: 7 krokov
Ach !! Farba: Ach !! Farba je jednoduchá hra na uhádnutie farby. Hra vám poskytne najzákladnejšie tri základné farby. Ak potrebujete skombinovať dve farby, stačí stlačiť obe tlačidlá. Po stlačení tlačidla sa hra rozhodne. Rozsudok je správny. Nakoniec prosba
Trieda vody_ farba: 6 krokov
Water Sort_Color: Water Sort_ColorMoniprojektuje svoj žáner dekorácie s veľkým počtom svetiel. Je možné navrhnúť jednu metódu projektu sous l’eau se qui va donner un effet très très joli, j’ai déjà commencé à réaliser mon projet. Ce PCB peut être utilisé aussi dans: les
Solárna farba: 8 krokov
Solárna farba: Konkrétna farba, ktorá vyrába priamu elektrickú energiu zo slnečného svetla. Organická fotovoltaika (OPV) ponúka obrovský potenciál ako lacné povlaky schopné generovať elektrickú energiu priamo zo slnečného svetla. Tieto materiály zo zmesi polymérov je možné tlačiť
Farba na notebook s tematikou NES: 7 krokov
Farba na notebook s tematikou NES: Vitajte v mojom prvom pokyne! Rozhodol som sa dať svojmu notebooku maľbu inšpirovanú farbami Nintendo Entertainment System (NES) a tento proces som zdokumentoval tu. Pretože každý prenosný počítač je iný, môžete mať iné nápady na