Obsah:

Color-pi: 9 kroků
Color-pi: 9 kroků

Video: Color-pi: 9 kroků

Video: Color-pi: 9 kroků
Video: Rozjaśnianie Be Color Deco 9 tones - krok po kroku 2024, Listopad
Anonim
Barva-pi
Barva-pi

This instructable shows how to use a Raspberry Pi to voice control an RGB LED strip, through a website, using the Web Speech API Interfaces for SpeechRecognition and SpeechSynthesis.

Tento příklad ukazuje, jak na to

  • Vytvořte základní web pomocí Node.js přes
  • Pro SpeechRecognition a SpeechSynthesis použijte rozhraní Web Speech API.
  • Pomocí rámce Cylon.js můžete ovládat RGB LED pásek na Raspberry Pi
  • Komunikace přes WSS (Secure Web sockets) z webové stránky na Cylon.js pro ovládání barvy LED

Poznámka

  • K poslechu syntetizátoru řeči budete potřebovat reproduktory nebo sluchátka
  • Aby fungovalo rozpoznávání hlasu, budete muset povolit přístup k mikrofonu
  • Protože tento přístup k vašemu mikrofonu, web musí být spuštěn pod
  • Knihovna cylon-api-socketio v současné době nepodporuje https. Mám žádost o stažení čekající na sloučení, ale do té doby budete muset nahradit /node_modules/cylon-api-socketio/lib/api.js souborem v tomto úložišti
  • Aby to fungovalo, je potřeba pi-blaster.

Krok 1: Zařízení

  1. Raspberry Pi - Použil jsem Raspberry Pi 2B, který jsem měl kolem, ale můžete získat Raspberry Pi 3 Starter Kit za zhruba 100 CAD
  2. RGB LED Strip Light - hrál jsem si s Minger LED Strip Light 32,8ft/10M 600leds RGB SMD 5050. Je dodáván s ovladačem a napájecím zdrojem pro přibližně 40 CAD
  3. Barrel Jack Connector - Koupil jsem jeden z místního obchodu s elektronikou, něco takového. Jen se ujistěte, že odpovídá vašemu napájecímu zdroji
  4. Propojovací konektory / vodiče - měl jsem položený pár propojovacích kabelů typu Žena - Muž a asi 22 měrných pevných propojovacích vodičů
  5. Breadboard Solderless Prototype PCB Board - něco takového
  6. Rezistory 3 x 10 kΩ
  7. 3 x N -kanálové MOSFETy pro ovládání LED - Koupil jsem nějaké IRL3303 z mého místního elektronického obchodu. Je důležité, aby prahové napětí brány bylo maximální. 3,3 V, takže může být poháněn piny RPi; obvykle v názvu označeno 'L' (logická úroveň).

Krok 2: Nastavení Raspberry Pi

Operační systém

Obvykle používám nejnovější verzi Raspbian. Stáhněte si obrázek a zapište jej na kartu SD. Pokud používáte počítač se systémem Windows, můžete k zápisu obrázku na kartu SD použít Win32 Disk Imager.

Node.js

Nainstalujte si nejnovější verzi Node.js. V době psaní článku používám 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

Nainstalujte si Git

sudo apt-get install git

Krok 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster umožňuje PWM na GPIO pinech, které od Raspberry Pi požadujete. Použitá technika je extrémně účinná: nevyužívá CPU a poskytuje velmi stabilní pulzy.

Tato modulace šířky pulzu umožňuje Raspberry Pi ovládat, jak jasný je každý červený, zelený a modrý kanál pro LED pás.

Nejprve klonujte úložiště

cd /opt /

klon sudo git https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

Poté vytvořte a nainstalujte

cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install

Nakonec nakonfigurujte, které piny chcete použít

Pod účtem root nebo pomocí sudo soubor vytvořte a upravte

/etc/default/pi-blaster

Přidejte následující řádky

DAEMON_OPTS =-gpio 23, 24, 25

Tyto gpio piny musí odpovídat pinům, které připojujete k LED pásku.

POZNÁMKA: Existuje rozdíl mezi GPIO a číslem PIN. Tento příklad používá následující

LED - modrá, GPIO -23, kolík - 16

LED - červená, GPIO -24, pin - 18 LED - zelená, GPIO -25, pin - 22

Extra vychytávky

Spusťte pi-blaster

spuštění služby sudo pi-blaster

Restartujte pi-blaster

restartování služby sudo pi-blaster

Zastavte pi-blaster

sudo service pi-blaster stop

Pi-blaster spusťte automaticky při spuštění

sudo systemctl povolit pi-blaster

Varování a další upozornění

Piny používané pi-blasterem budou konfigurovány jako výstupy. Nepřipojujte něco na vstup, jinak byste to mohli zničit! Tento démon používá k získání přesných časování hardwarový generátor PWM malinového pi. To může rušit výstup zvukové karty.

Krok 4: Nastavení ukázkového kódu

Klonujte ukázkový kód

1. Nastavte základní složku pro instalaci

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Naklonujte ukázkové úložiště git

klon git

nebo

git clone [email protected]: haydockjp/color-pi.git

3. Nainstalujte závislosti

cd barva-pi

npm instalace

Může to trvat 2–3 minuty

4. Tento projekt musí komunikovat prostřednictvím HTTPS a WSS. V současné době cylon-api-socketio nepodporuje připojení SSL. Existuje otevřená žádost o přidání této podpory, ale dokud není sloučena, v tomto úložišti je soubor opravy. Po instalaci npm spusťte následující příkaz

git checkout node_modules/cylon-api-socketio/lib/api.js

Krok 5: Vytvořte certifikát SSL podepsaný svým držitelem

1. Vytvořte soubor soukromého klíče

cd /opt/com.jonhaydock/colour-pi/certs

openssl genrsa -out color-pi-key.pem 2048

2. Vytvořte CSR (žádost o podpis certifikátu)

openssl req -new -key color-pi-key.pem -out color-pi-csr.pem

V tomto okamžiku budete vyzváni k zadání některých informací k žádosti o certifikát. Jelikož se jedná o certifikát podepsaný svým držitelem, záleží jen na vás, jak přesně údaje vyplníte. Zde je příklad

Název země (dvoumístný kód) [AU]: CA

Název státu nebo provincie (úplný název) [Některý stát]: Název lokality Britské Kolumbie (např. Město) : Název organizace ve Vancouveru (např. Společnost) [Internet Widgits Pty Ltd]: Název organizační jednotky Color Pi (např. Sekce) : Běžný název (např. FQDN serveru nebo VAŠE jméno) : color-pi E-mailová adresa : [email protected]

Heslo výzvy :

Volitelný název společnosti :

V tomto případě stačí stisknout klávesu Enter a nechat heslo výzvy prázdné

3. Vygenerujte certifikát

openssl x509 -req -dny 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem

4. Pro větší bezpečnost také vytvoříme soubor Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

To může trvat 15–20 minut

Krok 6: Zapojení obvodu

Zapojení obvodu
Zapojení obvodu
Zapojení obvodu
Zapojení obvodu
Zapojení obvodu
Zapojení obvodu
Zapojení obvodu
Zapojení obvodu

Napájení LED pásku

LED pásek je napájen 12 volty. Raspberry Pi má pouze výstup 3,3 V nebo 5 V a není schopen výstupu nikde poblíž zesilovačů potřebných k pohonu tolika LED diod.

Je důležité nepřipojovat 12 V napájecí zdroj k Raspberry Pi. N-kanálové tranzistory MOSFET se používají k oddělení 3,3 V na pinech RPi a 12 V napájecího zdroje LED.

MOSFET má tři piny Gate, Drain a Source. Pokud si nejste jisti, který je Google pro list použitého tranzistoru, např. IRL3303

Chystáme se připojit pin Raspberry Pi k bráně, vodič LED k odtoku a společnou zem ke zdroji. Když kolík stoupne, napětí mezi odtokem a zdrojem aktivuje bránu a spojí bránu se zdrojem.

Přes bránu a zdroj dáme také 10kΩ rezistory, takže když budeme mít kolík RPi vysoký, můžeme pin chránit tím, že snížíme proud, který jím prochází.

Další kroky provádějte na vlastní nebezpečí. Nepřijímám žádnou odpovědnost za cokoli, co se může pokazit

Nahoře je šumivý obraz a fotografie skutečného obvodu.

Doporučil bych to udělat, když je napájení pro RPi a LED pásek vypnuté

Nastavte tranzistorové obvody, jeden na barevný kanál

  1. Vložte jeden z tranzistorů do prkénka podle obrázku
  2. Vložte jeden z 10kΩ rezistorů přes vývody Drain a Source tranzistoru. Toto je první a poslední pin
  3. Pomocí nějakého vodiče připojte kolík zdroje (poslední kolík) k zemi na desce
  4. Opakujte kroky 1 - 3 ještě dvakrát, abyste měli tři sady - jednu pro každou barvu (červená, zelená a modrá)

Připojte piny RPi k desce

  1. Připojte kolík 16 ke kolíku brány (první kolík) prvního tranzistoru - toto bude kanál modré LED
  2. Připojte kolík 18 ke kolíku brány (první kolík) prvního tranzistoru - toto bude kanál červené LED
  3. Připojte kolík 20 k jednomu z uzemňovacích vedení na boku desky
  4. Připojte kolík 22 ke kolíku brány (první kolík) prvního tranzistoru - toto bude kanál zelené LED

Použil jsem odpovídající barvy vodičů k LED diodám: modrá, červená a zelená. Na zem jsem použil černou

Připojte hlavní konektor

  1. Připojte bílý vodič k + konci válcového konektoru
  2. Připojte černý vodič k - konci válcového konektoru
  3. Připojte černý vodič ke stejnému uzemňovacímu vodiči na desce, ke kterému byl připojen RPi Pin 20
  4. Připojte bílý vodič k + čáře na desce

Připojení LED pásku

Můj LED pásek byl dodáván s konektorem, který byl dostatečně dobrý, aby jej bylo možné dočasně zapojit do prkénka. Zatlačil jsem konektor v prkénku a zapojil ho do testu obvodu.

  1. První tranzistor připojený ke kolíku 16. Protáhl jsem modrý vodič od vypouštěcího kolíku (prostřední kolík) k modrému vodiči na konektoru LED pásku
  2. Druhý tranzistor připojen k pinu 18. Spustil jsem červený vodič od

    Vypusťte

    pin (prostřední pin) na červený vodič na konektoru LED pásku

  3. Třetí tranzistor připojený k pinu 22. Spustil jsem zelený vodič od

    Vypusťte

    pin (prostřední pin) na zelený vodič na konektoru LED pásku

  4. Nakonec jsem spustil bílý vodič z + vedení na prkénku, které bylo připojeno ke zdířce hlavně, k bílému vodiči na konektoru LED pásku.

Napájení

Po kontrole obvodu by vám mělo stačit zapnout Raspberry Pi a zapojit 12v napájení do barel jacku.

Krok 7: Kód na straně serveru

Kód na straně serveru
Kód na straně serveru

Spuštění kódu na straně serveru

cd /opt/com.jonhaydock/colour-pi

sudo npm start

Tím se spustí webový server a začne naslouchat požadavkům HTTPS a WSS.

POZNÁMKA: Nezapomeňte nejprve spustit pi-blaster

Proměnné prostředí

Výchozí port webu je 443, ale můžete to přepsat nastavením proměnné prostředí před spuštěním kódu. Například

export COLOUR_PI_PORT = 2443

Výchozí port webového soketu je 1443, ale můžete to přepsat nastavením proměnné prostředí před spuštěním kódu. Například

export COLOUR_PI_WSS_PORT = 3443

Poznámka: Jelikož webovou zásuvku zpracovává cylon.js a ne hlavní web, musí být na různých portech

Piny, které se používají pro modrý (kolík 16), zelený (kolík 18) a červený (kolík 22), lze také přepsat. Například

export COLOUR_PI_PIN_BLUE = 36

export COLOUR_PI_PIN_RED = 38 export COLOUR_PI_PIN_GREEN = 40

Poznámka: Tyto musí odpovídat fyzickým pinům, které jste použili. Pokud je změníte, budete také potřebovat aktualizovat GPIO definované v souboru/etc/default/pi-blaster. Například

DAEMON_OPTS =-gpio 16, 20, 21

Hlavní kód serveru najdete v souboru app.js. Tento soubor spouští webový server HTTPS a také prostřednictvím rámce Cylon.js používá socket.io k naslouchání požadavků webového soketu na samostatném portu.

Pro přístup na webovou stránku byste měli otevřít webový prohlížeč na hlavním počítači (testoval jsem to pouze v Chromu) a použít IP adresu Raspberry Pi, např.

10.0.1.2/

Svou IP adresu zjistíte z příkazového řádku Raspberry Pi.

ifconfig

Webový server bude poskytovat veškerý obsah ve veřejné složce. Ve výchozím nastavení se zobrazí stránka index.html.

Cylon.js vytvoří koncový bod, ke kterému můžete připojit Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Prostřednictvím soketu můžete poslat zprávu set_colour a nastavit hodnoty Red, Green a Blue

device.emit ('set_colour', r, g, b)

Který volá příkaz set_colour, který volá funkci setColour v app.js. Tato funkce nastavuje úrovně jasu pro každou z hodnot R, G a B mezi 0 a 255. Kde 0 je vypnuto a 255 je plně zapnuto.

např.

Červená r = 255, g = 0, b = 0

Zelená r = 0, g = 255, b = 0 modrá r = 0, g = 0, b = 255 bílá r = 255, g = 255, b = 255 černá / vypnuto r = 0, g = 0, b = 0

Krok 8: Kód webových stránek

Kód webových stránek
Kód webových stránek

Všeobecné

Web používá rozpoznávání hlasu k výběru barev z předdefinovaného seznamu. Chcete -li do seznamu přidat barvu, upravte soubor na serveru: public/data/colours.json

např.

"red": "#FF0000", Když je nalezena barva nebo vybrána z rozevíracího seznamu, výstupní pole bude nastaveno na tuto barvu a zpráva bude odeslána přes socket.io na Raspnerry Pi, která nastaví LED diody na stejnou barvu.

POZNÁMKA: v závislosti na tom, jak dobré jsou vaše LED diody, můžete nebo nemusíte vidět podobnou barvu. Některé lze snáze duplikovat než jiné

Při prvním načtení webu budete při používání SSL certifikátu podepsaného svým držitelem toto v prohlížeči potvrdit. Měli byste vidět bezpečnostní upozornění o certifikátu.

Hlasové rozpoznávání

Toto pole má ikonu mikrofonu. Pokud kliknete na ikonu, když je zelená, začne poslouchat barvy. Během poslechu zčervená. Bude to poslouchat na krátkou dobu a pak se zastaví. Klepnutím na ikonu mikrofonu, když je červená, se také zastaví poslech.

Jelikož tento web potřebuje přístup k vašemu mikrofonu, budete mu po výzvě muset udělit povolení

POZNÁMKA: K této části potřebujete mikrofon. Ten používám na své webové kameře.

Prozatímní přepis

Toto pole sleduje hádání slov, která říkáte, jak je říkáte.

Konečný přepis

Toto pole sleduje konečný odhad toho, co jste řekl.

Známé barvy

Toto je seznam všech barev, o kterých stránka ví. Je vytvořen ze souboru colours.json. Pokud vyberete jednu z těchto barev, stránka bude barvu vyslovovat a nastaví výstupní barvu.

POZNÁMKA: K poslechu řeči potřebujete reproduktory nebo sluchátka

Nalezené barvy

Tato webová stránka v současné době podporuje pouze shodu barvy. Pokud se slovo nebo slova, která jste vyslovili do mikrofonu, shodují s názvem známé barvy, nebo vyberete barvu ze seznamu Známá barva, bude zde přidáno jako protokol.

Výstup

Zde se zobrazí naposledy nalezená barva. Hodnota Color Hex (např. #7cb9e8) a hodnota RGB (např. 124, 185, 232) se zobrazí jako text a pozadí pole uprostřed se nastaví na skutečnou barvu.

Tato barva je také odeslána na Raspberry Pi a měli byste vidět změnu barvy LED pásku.

POZNÁMKA: pokud nevidíte změnu barvy LED, zkuste restartovat pi-blaster a/nebo aplikaci node.js

restartování služby sudo pi-blaster

sudo npm start

Známé hlasy

Toto pole zobrazuje seznam „Známých hlasů“z podporované syntézy řeči. Výběrem jednoho z těchto hlasů se změní hlas a jazyk, který uslyšíte, a bude vyslovovat název hlasu.

Rovněž se změní jazyk SpeechRecognition, aby byl stejný jako jazyk zvolený v seznamu.

Krok 9: Konečně

Image
Image

Zde je příklad toho, co byste měli vidět.

Dejte mi prosím vědět, pokud máte nějaký problém, a já mohu aktualizovat podle potřeby.

Doporučuje: