Talaan ng mga Nilalaman:
- Hakbang 1: Kagamitan
- Hakbang 2: Pag-set up ng Raspberry Pi
- Hakbang 3: Pi-blaster
- Hakbang 4: Pag-set up ng Halimbawa ng Code
- Hakbang 5: Lumikha ng isang Sertipikadong SSL Sertipiko sa Sarili
- Hakbang 6: Pag-kable sa Paikot
- Hakbang 7: Server Side Code
- Hakbang 8: Website Code
- Hakbang 9: Panghuli
Video: Kulay-pi: 9 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
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
- 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
- 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
- Barrel Jack Connector - Bumili ako ng isa sa aking lokal na electronics shop, tulad nito. Siguraduhin lamang kung umaangkop sa iyong supply ng kuryente
- Jumper Connectors / Wire - Nagkaroon ako ng ilang mga Kable ng konektor sa Babae at ilang 22 Gauge Solid hook up wire na nakahiga
- Breadboard Solderless Prototype PCB Board - katulad nito
- 3 x 10kΩ Mga Resistor
- 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
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
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
- Ipasok ang isa sa mga transistors sa breadboard tulad ng ipinakita sa diagram
- Ipasok ang isa sa 10kΩ Resistors sa buong Drain at ang Source pin ng transistor. Ito ang una at huling pin
- Gumamit ng ilang kawad upang ikonekta ang Source pin (huling pin) sa lupa sa breadboard
- 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
- Ikonekta ang Pin 16 sa Gate Pin (unang pin) ng unang transistor - Ito ang magiging Blue LED channel
- Ikonekta ang Pin 18 sa Gate Pin (unang pin) ng unang transistor - Ito ang magiging Red LED channel
- Ikonekta ang Pin 20 sa isa sa mga linya ng Ground sa gilid ng breadboard
- 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
- Ikonekta ang isang puting kawad sa + dulo ng jack jack
- Ikonekta ang isang itim na kawad sa - dulo ng jack jack
- Ikonekta ang itim na kawad sa parehong linya ng ground sa breadboard habang nakakonekta ang RPi Pin 20
- 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.
- 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
- 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
- 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
- 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
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
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
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:
Kumikinang na Kulay na Nagbabago ng Kulay: 49 Mga Hakbang (na may Mga Larawan)
Kumikinang na Kulay na Nagbabago ng Kulay: Sa kaharian ng bato at gumulong mahalaga na ihiwalay ang sarili. Sa milyun-milyong mga tao sa mundong ito na maaaring tumugtog ng gitara, ang simpleng pagtugtog ng maayos ay hindi ito puputol. Kailangan mo ng isang dagdag na bagay upang bumangon bilang isang rock god. Isaalang-alang ang gu
Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Tunay na Mga Bagay sa Buhay: 7 Mga Hakbang (na may Mga Larawan)
Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Mga Bagay na Tunay na Buhay: Madaling pumili ng mga kulay mula sa mga pisikal na bagay gamit ang tagapili ng kulay na RGB na batay sa Arduino, na nagbibigay-daan sa iyo upang muling likhain ang mga kulay na nakikita mo sa mga totoong bagay sa iyong pc o mobile phone. Itulak lamang ang isang pindutan upang i-scan ang kulay ng object gamit ang isang murang TCS347
Mga Kulay ng Pagnanakaw ng Kulay Sa Circuit Playground Express: 4 na Hakbang
Mga Kulay ng Pagnanakaw ng Kulay Sa Circuit Playground Express: Ang mga napapanahong mittens ay ginawa mula sa guwantes, naramdaman, Sequin at string na may kulay na pagnanakaw ng CPX na may mga baterya na nakatago sa loob nito. Ito ay isang mabilis at murang proyekto (sa ilalim ng 25 euro). Upang makumpleto ito dapat kang magkaroon ng mga pangunahing kasanayan sa pagtahi, kung
Mga Kulay ng Pagbabago ng Kulay ng Box na May LED-strips at Arduino: 5 Hakbang (na may Mga Larawan)
Mga Kulay ng Pagbabago ng Kulay ng Kahon Sa Mga LED-strip at Arduino: Nagsimula ito nang kailangan ko ng dagdag na imbakan sa susunod at sa itaas ng isang mesa, ngunit nais kong bigyan ito ng ilang espesyal na disenyo. Bakit hindi mo gamitin ang mga kamangha-manghang mga LED strip na maaaring isa-isang matugunan at kumuha ng anumang kulay? Nagbibigay ako ng ilang mga tala tungkol sa istante mismo sa
Mga Kulay ng Pagbabago ng Kulay at Demo ng Security ng Bluetooth: 7 Hakbang (na may Mga Larawan)
Mga Kulay ng Pagbabago ng Kulay at Demo ng Security ng Bluetooth: Sa Instructable na ito, ipapaliwanag ko kung paano lumikha ng isang pagpapalit ng ilaw na nagpapakita ng kulay na kontrolado nang malayuan sa pamamagitan ng Bluetooth gamit ang isang Android (Samsung, Google, atbp.) O Apple smartphone o tablet. Ito ay isang mura proyekto, mahusay para sa mga kabataan,