Obsah:
- Krok 1: Zařízení
- Krok 2: Nastavení Raspberry Pi
- Krok 3: Pi-blaster
- Krok 4: Nastavení ukázkového kódu
- Krok 5: Vytvořte certifikát SSL podepsaný svým držitelem
- Krok 6: Zapojení obvodu
- Krok 7: Kód na straně serveru
- Krok 8: Kód webových stránek
- Krok 9: Konečně
Video: Color-pi: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
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í
- 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
- 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
- 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
- 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čů
- Breadboard Solderless Prototype PCB Board - něco takového
- Rezistory 3 x 10 kΩ
- 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 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
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
- Vložte jeden z tranzistorů do prkénka podle obrázku
- Vložte jeden z 10kΩ rezistorů přes vývody Drain a Source tranzistoru. Toto je první a poslední pin
- Pomocí nějakého vodiče připojte kolík zdroje (poslední kolík) k zemi na desce
- 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
- Připojte kolík 16 ke kolíku brány (první kolík) prvního tranzistoru - toto bude kanál modré LED
- Připojte kolík 18 ke kolíku brány (první kolík) prvního tranzistoru - toto bude kanál červené LED
- Připojte kolík 20 k jednomu z uzemňovacích vedení na boku desky
- 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
- Připojte bílý vodič k + konci válcového konektoru
- Připojte černý vodič k - konci válcového konektoru
- Připojte černý vodič ke stejnému uzemňovacímu vodiči na desce, ke kterému byl připojen RPi Pin 20
- 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.
- 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
-
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
-
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
- 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
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
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ě
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:
Jak používat Detect Color TCS3200 s SkiiiD: 9 kroků
Jak používat Detect Color TCS3200 se SkiiiD: Návod k vývoji Detect Color TCS3200 s skiiiD
DIY Arduino LED Color Organ 2.0: 5 kroků
DIY Arduino LED Color Organ 2.0: V tomto projektu vám ukážu, jak postavit Arduino LED Color Organ, který reaguje na různá frekvenční pásma ve vaší hudbě světelnými show. V mém případě červené světlo představuje basy, zelené střední frekvence a modré je vysoký tón
Macintosh Classic II Color Hackintosh: 7 kroků (s obrázky)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150 postavený v roce 1992), Příběh Hackintoshe Classic II. Dostal jsem se do vlastnictví ročníku Mac Classic II z roku 1992 a myslel jsem si, že to bude skvělá konverze. Po dlouhém hledání hledaného LCD panelu správné velikosti, který chcete vyměnit
Semafor / Feu Tri-Color!: 11 kroků
Traffic Light / Feu Tri-Color!: Aujourd'hui nous allons construire un Feu de distribution programator and Arduino! Pour ce faire nous aurons besoin de: -Plaques de bois de 3 mm d'épaisseur-Papiers Calques épais-Colle-Perceuse- Arduino-Fiche Male -Cable électrique-Kit soudure-Un ordina
Arduino Brick Color Sorter Project: 5 kroků
Arduino Brick Color Sorter Project: V tomto Arduino tutoriálu se naučíme, jak detekovat barvy mé cihly pomocí Arduina a barevného senzoru TCS3200. Další podrobnosti si můžete přečíst níže v písemném tutoriálu. Materiály: Arduino Leonardo x 1TCS3200 x 1 Mnoho kartonu180 servo