Satura rādītājs:

Krāsu pi: 9 soļi
Krāsu pi: 9 soļi

Video: Krāsu pi: 9 soļi

Video: Krāsu pi: 9 soļi
Video: Почему здесь ПИ? И почему оно в квадрате? Геометрическое решение Базельской задачи 2024, Septembris
Anonim
Krāsu pi
Krāsu pi

Šī pamācība parāda, kā lietot Raspberry Pi, lai balss vadītu RGB LED sloksni, izmantojot vietni, izmantojot Web Speech API saskarnes runas atpazīšanai un runas sintēzei.

Šis piemērs parāda, kā to izdarīt

  • Izveidojiet pamata vietni, izmantojot Node.js, izmantojot
  • Izmantojiet Web Speech API saskarnes runas atpazīšanai un runas sintēzei.
  • Izmantojiet Cylon.js ietvaru, lai vadītu RGB LED sloksni Raspberry Pi
  • Sazinieties, izmantojot WSS (drošas tīmekļa ligzdas) no tīmekļa lapas uz vietni Cylon.js, lai kontrolētu gaismas diodes krāsu

Piezīme

  • Lai dzirdētu runas sintezatoru, jums būs nepieciešami skaļruņi vai austiņas
  • Lai balss atpazīšana darbotos, jums būs jāpiešķir piekļuve mikrofonam
  • Tā kā šī piekļuve jūsu mikrofonam ir nepieciešama, vietne ir jādarbina, izmantojot
  • Bibliotēka cylon-api-socketio pašlaik neatbalsta https. Man ir vilkšanas pieprasījums, kas gaida apvienošanu, bet līdz tam /node_modules/cylon-api-socketio/lib/api.js jāaizstāj ar failu šajā krātuvē.
  • pi-blaster ir nepieciešams, lai veiktu šo darbu.

1. solis: aprīkojums

  1. Raspberry Pi - es izmantoju Raspberry Pi 2B, kas bija man apkārt, bet jūs varat iegādāties Raspberry Pi 3 sākuma komplektu par aptuveni 100 CAD
  2. RGB LED sloksnes gaisma - es spēlēju ar Minger LED sloksnes gaismu 32.8ft/10M 600leds RGB SMD 5050. Tas nāk ar kontrolieri un barošanas avotu apmēram CAD 40
  3. Barrel Jack Connector - es nopirku vienu no sava vietējā elektronikas veikala, kaut kas līdzīgs šim. Vienkārši pārliecinieties, vai tas atbilst jūsu barošanas avotam
  4. Džempera savienotāji / vads - man bija daži savienotāju kabeļi no sievietes līdz vīrietim un daži 22 gabarīta cietie savienojuma vadi, kas atrodas apkārt
  5. Breadboard Solderless Prototype PCB Board - kaut kas līdzīgs šim
  6. 3 x 10 kΩ rezistori
  7. 3 x N -kanālu MOSFET gaismas diodes kontrolei - es nopirku dažus IRL3303 no sava vietējā elektroniskā veikala. Ir svarīgi, lai vārtu sliekšņa spriegums būtu maks. 3.3V, lai to varētu vadīt ar RPi tapām; parasti nosaukumā apzīmē ar “L” (loģikas līmenis).

2. darbība. Raspberry Pi iestatīšana

Operētājsistēma

Es parasti izmantoju jaunāko Raspbian būvējumu. Lejupielādējiet attēlu un ierakstiet to SD kartē. Ja izmantojat Windows datoru, attēla ierakstīšanai SD kartē varat izmantot Win32 Disk Imager.

Node.js

Instalējiet jaunāko Node.js versiju. Rakstīšanas laikā es izmantoju 8.9.1

čokurošanās -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

Instalējiet Git

sudo apt-get instalēt git

3. solis: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster iespējo PWM GPIO tapās, kuras pieprasāt no Raspberry Pi. Izmantotā tehnika ir ārkārtīgi efektīva: neizmanto CPU un dod ļoti stabilus impulsus.

Šī impulsa platuma modulācija ļauj Raspberry Pi kontrolēt, cik spilgti katrs LED sloksnes sarkanais, zaļais un zilais kanāls ir.

Vispirms klonējiet krātuvi

cd /opt /

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

Pēc tam izveidojiet un instalējiet

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

Visbeidzot, konfigurējiet, kuras tapas vēlaties izmantot

Zem saknes konta vai izmantojot sudo, izveidojiet un rediģējiet failu

/etc/default/pi-blaster

Pievienojiet šādas rindas

DAEMON_OPTS =-gpio 23, 24, 25

Šīm gpio tapām jāatbilst tapām, kuras pievienojat savai LED sloksnei.

PIEZĪME. Pastāv atšķirība starp GPIO un pin numuru. Šajā piemērā tiek izmantots šāds

LED - zils, GPIO -23, tapa - 16

LED - sarkans, GPIO -24, tapa - 18 LED - zaļa, GPIO -25, tapa - 22

Papildu pielāgojumi

Sāciet pi-blaster

sudo servisa pi-blaster start

Restartējiet pi-blaster

sudo pakalpojuma pi-blaster restartēšana

Beidz pi-blaster

sudo servisa pi-blaster pietura

Sākt pi-blaster automātiski sāknēšanas laikā

sudo systemctl iespējo pi-blaster

Brīdinājumi un citi brīdinājumi

Pi-blaster izmantotās tapas tiks konfigurētas kā izejas. Nepievienojiet kaut ko ieejai, pretējā gadījumā jūs to varat iznīcināt! Šis dēmons izmanto aveņu pi aparatūras PWM ģeneratoru, lai iegūtu precīzu laiku. Tas var traucēt skaņas kartes izvadi.

4. darbība: parauga koda iestatīšana

Klonējiet parauga kodu

1. Iestatiet bāzes mapi, kurā instalēt

cd /opt

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

2. Klonējiet git repozitoriju

git klons

vai

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

3. Instalējiet atkarības

cd krāsa-pi

npm instalēt

Tas var aizņemt 2-3 minūtes

4. Šim projektam ir jāsazinās, izmantojot HTTPS un WSS. Pašlaik cylon-api-socketio neatbalsta SSL savienojumus. Pastāv atklāts pieprasījums pievienot šo atbalstu, taču līdz brīdim, kad tas ir apvienots, šajā krātuvē atrodas ielāpa fails. Pēc npm instalēšanas palaidiet šādu komandu

git izrakstīšanās node_modules/cylon-api-socketio/lib/api.js

5. darbība: izveidojiet pašparakstītu SSL sertifikātu

1. Izveidojiet privātas atslēgas failu

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

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

2. Izveidojiet CSR (sertifikāta parakstīšanas pieprasījumu)

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

Šajā brīdī jums tiks piedāvāta informācija par sertifikāta pieprasījumu. Tā kā šis ir pašparakstīts sertifikāts, tas ir atkarīgs no jums, cik precīzi jūs aizpildāt informāciju. Šeit ir piemērs

Valsts nosaukums (divu burtu kods) [AU]: CA

Štata vai provinces nosaukums (pilns nosaukums) [Dažas valstis]: Britu Kolumbijas apgabala nosaukums (piemēram, pilsēta) : Vankūveras organizācijas nosaukums (piemēram, uzņēmums) [Internet Widgits Pty Ltd]: Krāsa Pi Organizācijas vienības nosaukums (piemēram, sadaļa)) : Parastais nosaukums (piemēram, servera FQDN vai JŪSU vārds) : color-pi E-pasta adrese : [email protected]

Izaicinājuma parole :

Neobligāts uzņēmuma nosaukums :

Šajā piemērā vienkārši nospiediet atgriešanās pogu, lai atstātu izaicinājuma paroli tukšu

3. Izveidojiet sertifikātu

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

4. Papildu drošībai mēs izveidosim arī Difija Helmena parametru failu

openssl dhparam -out dh_2048.pem 2048

Tas var aizņemt 15-20 minūtes

6. solis: ķēdes savienošana

Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana
Ķēdes savienošana

LED sloksnes barošana

LED sloksni darbina 12 volti. Raspberry Pi spēj izvadīt tikai 3.3v vai 5v, un to nevar izvadīt nekur pie pastiprinātājiem, kas nepieciešami, lai darbinātu tik daudz gaismas diodes.

Ir svarīgi nepievienot 12 voltu barošanas avotu Raspberry Pi. N-kanālu MOSFET tranzistori tiek izmantoti, lai atdalītu 3.3v uz RPi tapām un 12V no LED barošanas avota.

MOSFET ir trīs tapas Gate, Drain un Source. Ja neesat pārliecināts par to, kurš google izmanto jūsu izmantotā tranzistora datu lapu, piem. IRL3303

Mēs pievienosim Raspberry Pi tapu vārtiem, LED vadu kanalizācijai un kopēju zemi avotam. Kad tapa kļūst augsta, spriegums starp kanalizāciju un avotu aktivizēs vārtus un savienos vārtus ar avotu.

Mēs arī ievietosim 10kΩ rezistorus pāri vārtiem un avotam, lai, kad mēs RPi tapa būtu augsta, mēs varētu aizsargāt tapu, samazinot caur to plūstošo strāvu.

Veiciet nākamos soļus uz savu risku. Es neuzņemos atbildību par visu, kas var notikt nepareizi

Augšpusē ir satriecošs attēls un faktiskās ķēdes fotoattēls.

Es ieteiktu to darīt, kamēr RPi un LED sloksnei ir izslēgta strāva

Iestatiet tranzistora shēmas pa vienam katrā krāsu kanālā

  1. Ievietojiet vienu no tranzistoriem maizes dēļā, kā parādīts diagrammā
  2. Ievietojiet vienu no 10 kΩ rezistoriem pāri kanalizācijai un tranzistora avota tapām. Šī ir pirmā un pēdējā tapa
  3. Izmantojiet kādu vadu, lai savienotu avota tapu (pēdējo tapu) ar zemi uz maizes dēļa
  4. Atkārtojiet 1. - 3. darbību vēl divas reizes, lai jums būtu trīs komplekti - viens katrai krāsai (sarkans, zaļš un zils)

Pievienojiet RPi tapas pie tāfeles

  1. Savienojiet tapu 16 ar pirmā tranzistora vārtu tapu (pirmo tapu) - tas būs zilais LED kanāls
  2. Savienojiet tapu 18 ar pirmā tranzistora vārtu tapu (pirmo tapu) - tas būs sarkanais LED kanāls
  3. Pievienojiet tapu 20 vienai no zemes līnijām maizes dēļa sānos
  4. Savienojiet tapu 22 ar pirmā tranzistora vārtu tapu (pirmo tapu) - tas būs zaļais LED kanāls

Gaismas diodēm esmu izmantojis atbilstošas vadu krāsas: zilu, sarkanu un zaļu. Zemei esmu izmantojis melno

Pievienojiet mucas ligzdu

  1. Pievienojiet baltu vadu mucas ligzdas + galam
  2. Pievienojiet melnu vadu mucas ligzdas galam
  3. Pievienojiet melno vadu pie tās pašas maizes līnijas zemējuma līnijas, kurai tika pievienots RPi Pin 20
  4. Pievienojiet balto vadu + līnijai uz maizes dēļa

LED sloksnes savienošana

Manai LED sloksnei bija savienotājs, kas bija pietiekami labs, lai to varētu īslaicīgi pievienot elektrotīklam. I Iespiedu savienotāju maizes dēļā un pievienoju to ķēdes pārbaudei.

  1. Pirmais tranzistors savienots ar tapu 16. Es vadīju zilu vadu no iztukšošanas tapas (vidējā tapa) līdz zilajam vadam uz LED sloksnes savienotāja
  2. Otrs tranzistors savienots ar Pin 18. Es vadīju sarkanu vadu no

    Drenāžas

    tapu (vidējo tapu) līdz sarkanajam vadam uz LED sloksnes savienotāja

  3. Trešais tranzistors savienots ar Pin 22. Es vadīju zaļo vadu no

    Drenāžas

    tapu (vidējo tapu) līdz zaļajam vadam uz LED sloksnes savienotāja

  4. Visbeidzot, es vadīju baltu vadu no + līnijas uz maizes dēļa, kas bija savienots ar mucas ligzdu, līdz baltajam vadam uz LED sloksnes savienotāja.

Jauda

Pēc ķēdes pārbaudes jums vajadzētu labi ieslēgt Raspberry Pi un pieslēgt 12 voltu barjeru mucas ligzdai.

7. darbība: servera puses kods

Servera puses kods
Servera puses kods

Tiek palaists servera puses kods

cd /opt/com.jonhaydock/colour-pi

sudo npm sākums

Tas sāks tīmekļa servera darbību un sāks klausīties HTTPS un WSS pieprasījumus.

PIEZĪME. Atcerieties, ka vispirms jāieslēdz pi-blaster

Vides mainīgie

Noklusējuma vietnes ports ir 443, taču to var ignorēt, pirms koda palaišanas iestatot vides mainīgo. Piemēram

eksportēt COLOUR_PI_PORT = 2443

Noklusējuma tīmekļa ligzdas ports ir 1443, taču to var ignorēt, pirms koda palaišanas iestatot vides mainīgo. Piemēram

eksportēt COLOUR_PI_WSS_PORT = 3443

Piezīme. Tā kā tīmekļa ligzdu apstrādā cilon.js, nevis galvenā vietne, tām ir jābūt dažādās ostās

Tapas, kas tiek izmantotas zilajam (16. tapa), zaļajam (18. tapa) un sarkanajam (22. tapa), var arī ignorēt. Piemēram

eksportēt COLOUR_PI_PIN_BLUE = 36

eksportēt COLOUR_PI_PIN_RED = 38 eksportēt COLOUR_PI_PIN_GREEN = 40

Piezīme: tiem jāatbilst jūsu izmantotajām fiziskajām tapām. Ja tos mainīsit, jums būs jāatjaunina arī GPIO, kas definēti failā/etc/default/pi-blaster. Piemēram

DAEMON_OPTS =-gpio 16, 20, 21

Galveno servera kodu var atrast failā app.js. Šis fails palaiž HTTPS tīmekļa serveri, kā arī izmantojot Cylon.js ietvaru, izmanto socket.io, lai atsevišķā portā noklausītos tīmekļa ligzdu pieprasījumus.

Lai piekļūtu vietnei, galvenajā datorā ir jāatver tīmekļa pārlūkprogramma (esmu to pārbaudījis tikai pārlūkā Chrome) un jāizmanto Raspberry Pi IP adrese, piem.

10.0.1.2/

Jūs varat uzzināt savu IP adresi no Raspberry Pi komandrindas.

ifconfig

Tīmekļa serveris apkalpos jebkuru saturu publiskajā mapē. Pēc noklusējuma tiek parādīta lapa index.html.

Cylon.js izveido beigu punktu, ar kuru var savienot Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Izmantojot kontaktligzdu, varat nosūtīt ziņojumu set_colour, lai iestatītu sarkanās, zaļās un zilās vērtības

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

Kurš izsauc komandu set_colour, kas izsauc funkciju setColour lietotnē app.js. Šī funkcija nosaka spilgtuma līmeņus katrai R, G un B vērtībai no 0 līdz 255. Kur 0 ir izslēgts un 255 ir pilnībā ieslēgts.

piem.

Sarkans r = 255, g = 0, b = 0

Zaļš r = 0, g = 255, b = 0 Zils r = 0, g = 0, b = 255 Balts r = 255, g = 255, b = 255 Melns / izslēgts r = 0, g = 0, b = 0

8. darbība: vietnes kods

Vietnes kods
Vietnes kods

Vispārīgi

Vietne izmanto balss atpazīšanu, lai atlasītu krāsas no iepriekš definēta saraksta. Lai sarakstam pievienotu krāsu, rediģējiet failu serverī: public/data/colours.json

piem.

"sarkans": "#FF0000", Kad tiek atrasta krāsa vai tā tiek atlasīta nolaižamajā izvēlnē, lodziņā Izvade tiks iestatīta šī krāsa, un ziņojums tiks nosūtīts caur socket.io uz Raspnerry Pi, kas iestatīs gaismas diodes tādā pašā krāsā.

PIEZĪME. Atkarībā no gaismas diodes kvalitātes jūs varat redzēt vai neredzēt līdzīgu krāsu. Dažus ir vieglāk dublēt nekā citus

Pirmo reizi ielādējot vietni, izmantojot pašparakstītu SSL sertifikātu, jums tas būs jāatzīst pārlūkprogrammā. Jums vajadzētu redzēt drošības brīdinājumu par sertifikātu.

Balss atpazīšana

Šajā lodziņā ir mikrofona ikona. Ja noklikšķināsit uz ikonas, kad tā ir zaļa, tā sāks klausīties krāsas. Klausoties, tas kļūs sarkans. Tas klausīsies īsu laiku un pēc tam apstāsies. Noklikšķinot uz mikrofona ikonas, kad tā ir sarkana, tiks pārtraukta arī klausīšanās.

Tā kā šai vietnei ir jāpiekļūst jūsu mikrofonam, jums būs jāpiešķir tai atļauja, kad tas tiek prasīts

PIEZĪME. Šai daļai ir nepieciešams mikrofons. Es izmantoju to, kas atrodas manā tīmekļa kamerā.

Pagaidu stenogramma

Šajā lodziņā tiek izsekoti jūsu teikto vārdu minējumi, kā jūs tos sakāt.

Galīgais atšifrējums

Šajā lodziņā tiek izsekots pēdējais minējums, ko jūs teicāt.

Zināmās krāsas

Šis ir saraksts ar visām lapai zināmajām krāsām. Tas ir izveidots no faila colours.json. Ja izvēlaties kādu no šīm krāsām, lapa izrunās krāsu un iestatīs izvades krāsu.

PIEZĪME. Lai dzirdētu runu, jums ir nepieciešami skaļruņi vai austiņas

Atrastās krāsas

Šī tīmekļa lapa pašlaik atbalsta tikai krāsas saskaņošanu. Ja vārds vai vārdi, ko runājāt mikrofonā, atbilst zināmas krāsas nosaukumam vai atlasāt krāsu sarakstā Zināma krāsa, tā tiks pievienota šeit kā žurnāls.

Izeja

Šeit tiks parādīta pēdējā atrastā krāsa. Krāsu heksadecimālā vērtība (piemēram, #7cb9e8) un RGB vērtība (piemēram, 124, 185, 232) tiks parādīta kā teksts, un vidū esošā lodziņa fons tiks iestatīts uz faktisko krāsu.

Šī krāsa tiek nosūtīta arī uz Raspberry Pi, un jums vajadzētu redzēt, kā mainās LED sloksnes krāsa.

PIEZĪME: ja neredzat LED krāsas maiņu, mēģiniet restartēt pi-blaster un/vai lietotni node.js

sudo pakalpojuma pi-blaster restartēšana

sudo npm sākums

Zināmās balsis

Šajā lodziņā tiek parādīts saraksts ar zināmajām balsīm no atbalstītās runas sintēzes. Izvēloties vienu no šīm balsīm, tiks mainīta balss un valoda, ko dzirdēsit, un tā runās balss nosaukumu.

Tas arī mainīs runas atpazīšanas valodu uz to pašu, kas izvēlēta sarakstā.

9. solis: Visbeidzot

Image
Image

Šeit ir piemērs tam, kas jums jāredz.

Lūdzu, dariet man zināmu, ja jums ir kāda problēma, un es varu atjaunināt, ja nepieciešams.

Ieteicams: