Obsah:

Farba-pi: 9 krokov
Farba-pi: 9 krokov

Video: Farba-pi: 9 krokov

Video: Farba-pi: 9 krokov
Video: Французский для начинающих. Уровень А1. Урок 9 из 30 2024, Október
Anonim
Farba-pi
Farba-pi

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

  1. 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
  2. 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.
  3. 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
  4. 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
  5. Breadboard Solderless Prototype PCB Board - niečo také
  6. Rezistory 3 x 10 kΩ
  7. 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
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

Zapojenie obvodu
Zapojenie obvodu
Zapojenie obvodu
Zapojenie obvodu
Zapojenie obvodu
Zapojenie obvodu
Zapojenie obvodu
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

  1. Vložte jeden z tranzistorov do dosky ako je znázornené na obrázku
  2. Vložte jeden z 10kΩ odporov cez odtokový a zdrojový kolík tranzistora. Toto je prvý a posledný pin
  3. Pomocou nejakého drôtu prepojte kolík zdroja (posledný kolík) so zemou na doske
  4. 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

  1. Pripojte kolík 16 k kolíku brány (prvý kolík) prvého tranzistora - toto bude kanál modrej LED
  2. Pripojte kolík 18 k kolíku brány (prvý kolík) prvého tranzistora - toto bude červený kanál LED
  3. Pripojte kolík 20 k jednému z uzemňovacích vedení na bočnej strane dosky
  4. 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

  1. Pripojte biely vodič na + koniec valcového konektora
  2. Pripojte čierny vodič k - koncu konektora hlavne
  3. Pripojte čierny vodič k rovnakému uzemňovaciemu vodiču na nepájivom poli, ku ktorému bol pripojený kolík RPi 20
  4. 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.

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

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

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

Serverový kód
Serverový kód

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

Kód webovej stránky
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

Image
Image

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: