Talaan ng mga Nilalaman:

Kulay-pi: 9 Mga Hakbang
Kulay-pi: 9 Mga Hakbang

Video: Kulay-pi: 9 Mga Hakbang

Video: Kulay-pi: 9 Mga Hakbang
Video: TRVMATA - MATA ft. Guddhist, Illest Morena & Ghetto Gecko Prod. By Dony Van 2024, Oktubre
Anonim
Kulay-pi
Kulay-pi

Ipinapakita ng itinuturo na ito kung paano gumamit ng isang Raspberry Pi upang makontrol ang boses ng isang RGB LED strip, sa pamamagitan ng isang website, gamit ang Web Speech API Interfaces para sa SpeechRecognition at SpeechSynthesis.

Ipinapakita ng halimbawang ito kung paano

  • Lumikha ng isang pangunahing website gamit ang Node.js sa paglipas ng
  • Gumamit ng Mga Web Speech API Interfaces para sa SpeechRecognition at SpeechSynthesis.
  • Gamitin ang balangkas ng Cylon.js upang makontrol ang isang RGB LED strip sa isang Raspberry Pi
  • Makipag-usap sa paglipas ng WSS (Secure Web sockets) mula sa web page sa Cylon.js upang makontrol ang kulay para sa LED

Tandaan

  • Kakailanganin mo ang mga speaker o headphone upang marinig ang speech synthesizer
  • Kakailanganin mong bigyan ng access ang iyong mikropono upang gumana ang pagkilala sa boses
  • Dahil ang pag-access sa iyong mikropono ang site ay kailangang patakbuhin sa ilalim ng
  • Hindi sinusuportahan ng silid-silid-silid-aklatan ang https sa oras na ito. Mayroon akong isang kahilingan sa paghila na naghihintay na pagsamahin, ngunit hanggang sa gayon kailangan mong palitan ang /node_modules/cylon-api-socketio/lib/api.js sa file sa repository na ito
  • Kailangan ng pi-blaster upang maisagawa ito.

Hakbang 1: Kagamitan

  1. Raspberry Pi - Gumamit ako ng isang Raspberry Pi 2B na inilatag ko, ngunit maaari kang makakuha ng isang Raspberry Pi 3 Starter Kit para sa humigit-kumulang CAD 100
  2. RGB LED Strip Light - Naglalaro ako ng Minger LED Strip Light 32.8ft / 10M 600leds RGB SMD 5050. Ito ay may kasamang isang controller at isang power supply para sa halos CAD 40
  3. Barrel Jack Connector - Bumili ako ng isa sa aking lokal na electronics shop, tulad nito. Siguraduhin lamang kung umaangkop sa iyong supply ng kuryente
  4. Jumper Connectors / Wire - Nagkaroon ako ng ilang mga Kable ng konektor sa Babae at ilang 22 Gauge Solid hook up wire na nakahiga
  5. Breadboard Solderless Prototype PCB Board - katulad nito
  6. 3 x 10kΩ Mga Resistor
  7. 3 x N-channel MOSFETs para sa pagkontrol sa mga LED - Bumili ako ng ilang IRL3303's mula sa aking lokal na electronic shop. Mahalaga na ang boltahe ng threshold ng mga gate ay isang max. 3.3V upang maaari itong hinimok ng mga RPi pin; karaniwang tinukoy ng isang 'L' (Antas ng Logic) sa pangalan.

Hakbang 2: Pag-set up ng Raspberry Pi

Operating System

Karaniwan kong ginagamit ang pinakabagong Raspbian build. I-download ang imahe at isulat ito sa SD Card. Kung gumagamit ka ng isang Windows computer, maaari mong gamitin ang Win32 Disk Imager upang isulat ang imahe sa SD Card.

Node.js

I-install ang pinakabagong bersyon ng Node.js. Sa oras ng pagsulat ay gumagamit ako ng 8.9.1

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

sudo apt-get install nodejs

I-install ang Git

sudo apt-get install git

Hakbang 3: Pi-blaster

Pi-blaster
Pi-blaster

Pinapayagan ng pi-blaster ang PWM sa mga GPIO pin na hiniling mo sa isang Raspberry Pi. Ang pamamaraan na ginamit ay lubhang mahusay: hindi gumagamit ng CPU at nagbibigay ng matatag na pulso.

Pinapayagan ng Pulse Width Modulation na ito ang Raspberry Pi upang makontrol kung gaano maliwanag ang bawat Red, Green at Blue na mga channel para sa LED strip.

Una, i-clone ang repository

cd / opt /

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

Pagkatapos, bumuo at mag-install

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

Panghuli, i-configure kung aling mga pin ang nais mong gamitin

Sa ilalim ng root account, o gumagamit ng sudo, lumikha at i-edit ang file

/ etc / default / pi-blaster

Idagdag ang mga sumusunod na linya

DAEMON_OPTS = - gpio 23, 24, 25

Ang mga gpio pin na ito ay kailangang tumugma sa mga pin na ikinokonekta mo sa iyong LED strip.

TANDAAN: Mayroong pagkakaiba sa pagitan ng GPIO at numero ng pin. Ang halimbawang ito ay gumagamit ng sumusunod

LED - Blue, GPIO-23, Pin - 16

LED - Pula, GPIO-24, Pin - 18 LED - Green, GPIO-25, Pin - 22

Dagdag na pag-aayos

Simulan ang pi-blaster

sudo service pi-blaster start

I-restart ang pi-blaster

sudo service pi-blaster restart

Itigil ang pi-blaster

sudo service pi-blaster stop

Awtomatikong simulan ang pi-blaster sa oras ng pag-boot

sudo systemctl paganahin ang pi-blaster

Mga babala at iba pang mga pag-iingat

Ang mga pin na ginagamit ng pi-blaster ay ise-configure bilang mga output. Huwag mag-plug ng isang bagay sa isang input o maaari mo itong sirain! Ang daemon na ito ay gumagamit ng hardware PWM generator ng raspberry pi upang makakuha ng tumpak na oras. Maaari itong makagambala sa output ng iyong sound card.

Hakbang 4: Pag-set up ng Halimbawa ng Code

I-clone ang halimbawa ng code

1. Mag-set up ng isang base folder upang mai-install

cd / opt

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

2. I-clone ang halimbawa git repository

git clone

o

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

3. I-install ang mga dependance

cd color-pi

i-install

Maaaring tumagal ito ng 2-3 minuto

4. Ang proyektong ito ay kailangang makipag-usap sa HTTPS at WSS. Sa ngayon hindi suportado ng silon-api-socketio ang mga koneksyon sa SSL. Mayroong isang bukas na kahilingan sa paghila upang idagdag ang suporta na ito, ngunit hanggang sa na-merge iyon, mayroong isang file ng patch sa lalagyan na ito. Patakbuhin ang sumusunod na utos pagkatapos mag-install ng npm

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

Hakbang 5: Lumikha ng isang Sertipikadong SSL Sertipiko sa Sarili

1. Lumikha ng isang pribadong key file

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

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

2. Lumikha ng isang CSR (Hiling sa Pag-sign ng Certificate)

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

Sa puntong ito sasabihan ka para sa ilang impormasyon para sa kahilingan sa sertipiko. Dahil ito ay isang pirmadong nai-sign na sertipiko, nasa sa iyo kung gaano ka tumpak na pinupunan ang mga detalye. Narito ang isang halimbawa

Pangalan ng Bansa (2 titik ng code) [AU]: CA

Pangalan ng Estado o Lalawigan (buong pangalan) [Ilang-Estado]: Pangalan ng Lokal na British Columbia (hal, lungsod) : Pangalan ng Organisasyon ng Vancouver (hal, kumpanya) [Internet Widgits Pty Ltd]: Kulay Pi Pangalan ng Yunit ng Organisasyon (hal. Seksyon) : Karaniwang Pangalan (hal. Server FQDN o IYONG pangalan) : color-pi Email Address : [email protected]

Isang hamon na password :

Isang opsyonal na pangalan ng kumpanya :

Sa halimbawang ito, pindutin lamang ang bumalik upang iwanang blangko ang password ng hamon

3. Bumuo ng sertipiko

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

4. Para sa labis na seguridad lilikha rin kami ng isang file na Diffie Hellman Parameter

openssl dhparam -out dh_2048.pem 2048

Maaari itong tumagal ng 15-20 minuto

Hakbang 6: Pag-kable sa Paikot

Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit
Mga Kable Paakyat sa Circuit

Pagpapatakbo ng LED strip

Ang LED strip ay pinalakas ng 12 volts. Ang Raspberry Pi ay may kakayahang maglabas lamang ng 3.3v o 5v at hindi kayang mag-output kahit saan malapit sa mga amp na kinakailangan upang magmaneho ng napakaraming mga LED.

Mahalaga na huwag ikonekta ang 12 volt na supply ng kuryente sa Raspberry Pi. Ginagamit ang mga N-channel MOSFET transistors upang paghiwalayin ang 3.3v sa mga RPi pin at ang 12v ng LED power supply.

Ang MOSFET ay may tatlong pin na Gate, Drain at Source. Kung hindi ka sigurado tungkol sa alin sa google para sa data sheet ng transistor na iyong ginagamit, hal. IRL3303

Ikonekta namin ang Raspberry Pi Pin sa Gate, ang LED wire sa Drain at isang karaniwang lupa sa Pinagmulan. Kapag ang Pin ay mataas, ang boltahe sa pagitan ng Drain at ang Source ay magpapagana ng Gate at ikonekta ang gate sa Source.

Ilalagay din namin ang 10kΩ Resistors sa kabila ng Gate at ang Pinagmulan, upang kapag kami ang RPi pin ay mataas, mapoprotektahan namin ang pin sa pamamagitan ng pagbawas ng kasalukuyang dumadaan dito.

Gawin ang mga susunod na hakbang sa iyong sariling panganib. Hindi ako responsibilidad para sa anumang maaaring maging mali

Mayroong isang nakakagulat na imahe at isang larawan ng aktwal na circuit sa itaas.

Inirerekumenda kong gawin ito habang ang kapangyarihan ay naka-off para sa RPi at sa LED strip

I-set up ang mga circuit ng transistor, isa sa bawat kulay na channel

  1. Ipasok ang isa sa mga transistors sa breadboard tulad ng ipinakita sa diagram
  2. Ipasok ang isa sa 10kΩ Resistors sa buong Drain at ang Source pin ng transistor. Ito ang una at huling pin
  3. Gumamit ng ilang kawad upang ikonekta ang Source pin (huling pin) sa lupa sa breadboard
  4. Ulitin ang mga hakbang 1 - 3 dalawa pang oras, upang mayroon kang tatlong mga hanay - isa bawat kulay (Pula, berde at Asul)

Ikonekta ang mga pin ng RPi sa pisara

  1. Ikonekta ang Pin 16 sa Gate Pin (unang pin) ng unang transistor - Ito ang magiging Blue LED channel
  2. Ikonekta ang Pin 18 sa Gate Pin (unang pin) ng unang transistor - Ito ang magiging Red LED channel
  3. Ikonekta ang Pin 20 sa isa sa mga linya ng Ground sa gilid ng breadboard
  4. Ikonekta ang Pin 22 sa Gate Pin (unang pin) ng unang transistor - Ito ang magiging Green LED channel

Gumamit ako ng pagtutugma ng mga kulay ng kawad sa mga LED: Blue, Red at Green. Gumamit ako ng itim para sa lupa

Ikonekta ang Barrel Jack

  1. Ikonekta ang isang puting kawad sa + dulo ng jack jack
  2. Ikonekta ang isang itim na kawad sa - dulo ng jack jack
  3. Ikonekta ang itim na kawad sa parehong linya ng ground sa breadboard habang nakakonekta ang RPi Pin 20
  4. Ikonekta ang puting kawad sa linya na + sa breadboard

Pagkonekta sa LED strip

Ang aking LED strip ay dumating na may isang konektor na isang sapat na mahusay na sukat na maaari itong pansamantalang mai-plug sa breadboard. Itinulak ko ang konektor sa breadboard at wired ito sa pagsubok ng circuit.

  1. Ang unang transistor na konektado sa Pin 16. Nagpatakbo ako ng isang asul na kawad mula sa Drain pin (gitnang pin) sa asul na kawad sa LED strip konektor
  2. Ang pangalawang transistor na konektado sa Pin 18. Nagpagana ako ng isang pulang kawad mula sa

    Maubos

    pin (gitnang pin) sa pulang kawad sa LED strip konektor

  3. Ang pangatlong transistor na konektado sa Pin 22. Nagpatakbo ako ng isang berdeng kawad mula sa

    Maubos

    pin (gitnang pin) sa berdeng kawad sa LED strip konektor

  4. Sa wakas, nagpatakbo ako ng isang puting kawad mula sa linya + sa breadboard na konektado sa bareng jack, sa puting kawad sa konektor ng LED strip.

Lakas

Matapos suriin ang circuit, dapat kang maging mahusay sa pag-power sa Raspberry Pi at i-plug ang 12v na supply sa barrel jack.

Hakbang 7: Server Side Code

Server Side Code
Server Side Code

Pagpapatakbo ng code sa gilid ng server

cd /opt/com.jonhaydock/colour-pi

sudo npm magsimula

Sisimulan nito ang web server at magsisimulang makinig para sa mga kahilingan sa HTTPS at WSS.

TANDAAN: Tandaan na magpatakbo muna ng pi-blaster

Mga variable sa kapaligiran

Ang default na port ng website ay 443, ngunit maaari mo itong i-override sa pamamagitan ng pagtatakda ng variable ng kapaligiran bago simulan ang code. Halimbawa

i-export ang COLOUR_PI_PORT = 2443

Ang default na web socket port ay 1443, ngunit maaari mo itong i-override sa pamamagitan ng pagtatakda ng variable ng kapaligiran bago simulan ang code. Halimbawa

i-export ang COLOUR_PI_WSS_PORT = 3443

Tandaan: Tulad ng web socket ay hawakan ng cilon.js at hindi ang pangunahing website, ang mga ito ay dapat na nasa iba't ibang mga port

Ang mga pin na ginamit para sa Blue (pin 16), Green (pin 18) at Red (pin 22) ay maaari ring mai-override. Halimbawa

i-export ang COLOUR_PI_PIN_BLUE = 36

i-export ang COLOUR_PI_PIN_RED = 38 i-export ang COLOUR_PI_PIN_GREEN = 40

Tandaan: Ang mga ito ay kailangang tumugma sa mga pisikal na pin na ginamit mo. Kung binago mo ang mga ito, kakailanganin mo ring i-update ang mga GPIO na tinukoy sa / etc / default / pi-blaster file. Halimbawa

DAEMON_OPTS = - gpio 16, 20, 21

Ang pangunahing server code ay matatagpuan sa file ng app.js. Sinisimulan ng file na ito ang HTTPS web server at din, sa pamamagitan ng balangkas ng Cylon.js, gumagamit ng socket.io upang makinig para sa mga kahilingan sa web socket sa isang hiwalay na port.

Upang ma-access ang website, dapat mong buksan ang isang web browser sa iyong pangunahing computer (Sinubukan ko lang ito sa Chrome) at gamitin ang IP address ng Raspberry Pi, hal.

10.0.1.2/

Maaari mong malaman ang iyong IP address mula sa linya ng utos ng Raspberry Pi.

ifconfig

Maghahatid ang web server ng anumang nilalaman sa ilalim ng pampublikong folder. Nagde-default ito upang ipakita ang pahina ng index.html.

Lumilikha ang Cylon.js ng isang end point na maaari mong ikonekta ang Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Maaari kang magpadala ng isang set_colour na mensahe sa pamamagitan ng socket upang maitakda ang mga halagang Pula, berde at Asul

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

Alin ang tumatawag sa set_colour command, na tumatawag sa setColour function sa app.js. Itinatakda ng pagpapaandar na ito ang mga antas ng ningning, para sa bawat isa sa mga halagang R, G at B, sa pagitan ng 0 at 255. Kung saan naka-off ang 0 at ang 255 ay ganap na nakabukas.

hal.

Pula r = 255, g = 0, b = 0

Green r = 0, g = 255, b = 0 Blue r = 0, g = 0, b = 255 White r = 255, g = 255, b = 255 Black / Off r = 0, g = 0, b = 0

Hakbang 8: Website Code

Code ng Website
Code ng Website

Pangkalahatan

Gumagamit ang website ng pagkilala sa boses upang pumili ng mga kulay mula sa isang paunang natukoy na listahan. Upang magdagdag ng isang kulay sa listahan, i-edit ang file sa server: publiko / data / colours.json

hal.

"pula": "# FF0000",

Kapag ang isang kulay ay natagpuan, o napili mula sa drop down, ang Output box ay maitatakda sa kulay na iyon at isang mensahe ay ipapadala sa pamamagitan ng socket.io sa Raspnerry Pi, na magtatakda ng mga LED sa parehong kulay.

TANDAAN: nakasalalay sa kung gaano kabuti ang iyong mga LED maaari ka o hindi makakita ng isang katulad na kulay. Ang ilan ay mas madaling madoble kaysa sa iba

Kapag na-load mo muna ang website, habang gumagamit ka ng isang self-sign na sertipiko ng SSL kakailanganin mong kilalanin ito sa browser. Dapat kang makakita ng isang alerto sa seguridad tungkol sa sertipiko.

Pagkilala sa Boses

Ang kahon na ito ay may isang icon na mikropono. Kung na-click mo ang icon kapag berde, magsisimula itong makinig para sa mga kulay. Habang nakikinig ito, mamumula ito. Makikinig ito para sa isang maikling dami ng oras at pagkatapos ay titigil. Ang pag-click sa icon ng mikropono kapag pula ay titigil din sa pakikinig.

Tulad ng pag-access ng site na ito sa iyong mikropono, kakailanganin mong bigyan ito ng pahintulot kapag na-prompt

TANDAAN: Kailangan mo ng isang mikropono para sa bahaging ito. Ginagamit ko ang isa sa aking web camera.

Pansamantalang Transcript

Sinusubaybayan ng kahon na ito ang mga hula ng mga salitang sinasabi mo, habang sinasabi mo ang mga ito.

Pangwakas na Transcript

Sinusubaybayan ng kahon na ito ang panghuling hulaan kung ano ang sinabi mo.

Mga Kilalang Kulay

Ito ay isang listahan ng lahat ng mga kulay na alam ng pahina. Nilikha ito mula sa colours.json file. Kung pipiliin mo ang isa sa mga kulay na ito, magsasalita ang pahina ng kulay at itatakda ang kulay ng output.

TANDAAN: Kailangan mo ng mga speaker o headphone upang mapakinggan ang pagsasalita

Natagpuan Mga Kulay

Kasalukuyang sinusuportahan lamang ng web page na ito ang pagtutugma ng kulay. Kung ang salita o salitang sinabi mo sa mikropono ay tumutugma sa pangalan ng isang kilalang kulay, o pumili ka ng isang kulay mula sa listahan ng Kilalang Kulay, idaragdag ito dito bilang isang log.

Paglabas

Ang huling natagpuang kulay ay ipapakita dito. Ang halagang Kulay Hex (hal. # 7cb9e8) at ang halagang RGB (hal. 124, 185, 232) ay ipapakita bilang teksto at ang background ng kahon sa gitna ay itatakda sa aktwal na kulay.

Ang kulay na ito ay ipinadala rin sa Raspberry Pi at dapat mong makita ang kulay ng pagbabago ng LED strip.

TANDAAN: kung hindi mo nakikita ang pagbabago ng kulay ng LED, subukang i-restart ang pi-blaster at / o ang node.js app

sudo service pi-blaster restart

sudo npm magsimula

Mga Kilalang Boses

Ipinapakita ng kahon na ito ang isang listahan ng "Kilalang Mga Tinig" mula sa suportadong speechSynthesis. Ang pagpili ng isa sa mga tinig na ito ay magbabago ng boses at ng wikang maririnig mo, at magsasalita ito ng pangalan ng boses.

Babaguhin din nito ang wika ng pagkilala sa SpeechRecognition upang maging kapareho ng napili sa listahan.

Hakbang 9: Panghuli

Image
Image

Narito ang isang halimbawa ng kung ano ang dapat mong makita.

Mangyaring ipaalam sa akin kung mayroon kang anumang isyu at maaari kong i-update kung kinakailangan.

Inirerekumendang: