Talaan ng mga Nilalaman:
- Hakbang 1: Kagamitan
- Hakbang 2: Pag-set up ng Raspberry Pi
- Hakbang 3: Pag-set up ng Halimbawa ng Code
- Hakbang 4: Lumikha ng isang Sertipikadong SSL Sertipiko sa Sarili
- Hakbang 5: Pagkonekta sa Hardware
- Hakbang 6: Server Side Code
- Hakbang 7: Website Code
- Hakbang 8: Panghuli
Video: Disco-pi: 8 Hakbang (na may Mga Larawan)
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 isang kulay na LED strip, batay sa musika na pinatugtog mula sa isang web browser.
Ipinapakita nito kung paano lumikha ng isang pangunahing website gamit ang Node.js sa paglipas ng HTTPS at gumamit ng socket.io sa paglipas ng WSS (Secure Websocket).
Ang website ay may isang solong pahina na kung saan ay may isang napaka-pangunahing layout. Ang webpage ay pumupuno sa isang drop down list na may mga file ng musika, na matatagpuan sa publiko / audio folder sa server. Ang pagpili ng isang pagpipilian sa listahan ay nagpe-play ng file ng musika sa webpage gamit ang HTML 5 audio element. Habang pinapatugtog ang file ng musika, ginagamit ng webpage ang interface ng AudioContext upang pag-aralan ang musika, na pagkatapos ay ipinadala sa server sa isang ligtas na koneksyon sa websocket.
Ang server na tumatakbo sa isang Raspberry Pi ay gumagamit ng library ng Node RPI WS281x Native (pambalot ang library ng WS281X ni Jeremy Garff) upang baguhin ang mga kulay ng LEDs sa isang WS2811 LED strip, batay sa data na ipinadala sa pamamagitan ng websocket.
Ang halimbawa ng code ay matatagpuan dito: disco-pi
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
- WS2811 LED Strip - Naglalaro ako ng ALITOVE 16.4ft 150 Pixels WS2811. Ito ay mayroong isang controller at isang power supply para sa halos CAD 45-50
- 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
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 git
sudo apt-get install git
Hakbang 3: 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 https://github.com/haydockjp/disco-pi.git"
o
git clone [email protected]: haydockjp / disco-pi.git
3. I-install ang mga dependance
cd disco-pi
i-install
Maaaring tumagal ito ng 2-3 minuto
Hakbang 4: Lumikha ng isang Sertipikadong SSL Sertipiko sa Sarili
1. Lumikha ng isang pribadong key file
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Lumikha ng isang CSR (Hiling sa Pag-sign ng Certificate)
openssl req -new -key disco-pi-key.pem -out disco-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]: Disco Pi Pangalan ng Yunit ng Organisasyon (hal. Seksyon) : Karaniwang Pangalan (hal. Server FQDN o IYONG pangalan) : disco-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 -sa disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-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 5: Pagkonekta sa Hardware
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.
Ang aking strip ay mayroon ding mga karagdagang mga wire ng kuryente na konektado sa strip sa alinman sa dulo. Iminumungkahi kong i-tape mo ang mga ito upang hindi sila makipag-ugnay sa alinman sa iyong iba pang mga kagamitan.
Gawin ang mga susunod na hakbang sa iyong sariling panganib. Hindi ako responsibilidad para sa anumang maaaring maging mali.
LED Strip
Ang aking LED strip ay may tatlong mga wire:
PULA - +12 Volts
BLACK - Ground
GREEN - Data
TANDAAN: mayroong isang Din at isang Dout - Data In at Data Out. Tiyaking nagtatrabaho ka sa pagtatapos ng LED strip na nagsasabing Din.
Tinitiyak na ang Barrel Jack ay hindi nakakonekta sa power supply
1. Ikonekta ang pulang kawad mula sa LED strip sa + gilid ng Barrel Jack.
Gumamit ako ng puting 22 gauge hook up wire.
Ilagay ang kawad sa + puwang sa bareng jack at i-tornilyo ito sa lugar.
Itulak ang kabilang dulo ng kawad sa socket sa LED. Tiyaking nakakakonekta ka sa pulang kawad.
2. Ikonekta ang Itim na kawad mula sa LED strip sa - gilid ng Barrel Jack.
Gumamit ako ng isang itim na 22 gauge hook up wire.
Ilagay ang kawad sa - puwang sa bareng jack. Sa puntong ito ilagay din ang male end ng isa sa mga cable ng konektor (brown wire sa larawan) sa parehong butas at i-tornilyo ang dalawa sa lugar.
Itulak ang kabilang dulo ng itim na kawad sa socket sa LED.
Tiyaking kumokonekta ka sa itim na kawad.
3. Ikonekta ang berdeng kawad mula sa LED strip
Dalhin ang isa sa mga femal sa mga lalaking konektor na kable. Sa aking mga larawan ito ang berdeng kawad.
Ilagay ang dulo ng lalaki sa LED socket gamit ang berdeng kawad.
Ito ang data cable.
Raspberry Pi
1. Kunin ang berdeng cable ng konektor at ikonekta ito sa Raspberry Pi GPIO.
Kailangan mong ikonekta ito sa PCM_CLK (Pin 12 / GPIO 18)
2. Kunin ang itim na cable ng konektor at ikonekta ito sa Raspberry Pi GPIO.
Kailangan mong ikonekta ito sa isa sa mga bakuran. Iminumungkahi kong gumamit ka ng pin 14, ngunit maaari mo ring gamitin ang pin 6, 9, 20, 25, 30, 34 o 39.
TANDAAN: upang gumana ito ang mapagkukunan ng LED power at ang Raspberry Pi ay dapat magkaroon ng isang karaniwang batayan. Tandaan din na hindi mo dapat ikonekta ang 12 Volt + (Red wire) sa Raspberry Pi.
LED Power
Hindi mo dapat maiugnay ang iyong 12 volt na supply ng kuryente sa bareng jack
Ang lahat ng mga LED sa iyong LED strip ay dapat na sindihan ng Puti
Hakbang 6: Server Side Code
Pagpapatakbo ng code sa gilid ng server
cd /opt/com.jonhaydock/disco-pi
sudo npm magsimula
Sisimulan nito ang web server at magsisimulang makinig para sa mga kahilingan sa HTTPS at WSS.
Ang default port ay 443, ngunit maaari mo itong i-override sa pamamagitan ng pagtatakda ng variable ng kapaligiran bago simulan ang code. Halimbawa
i-export ang DISCO_PI_PORT = 1443
Ang aking LED strip ay may 150 LEDs. Kinokontrol ang mga ito sa mga pangkat ng tatlo. Nangangahulugan ito na hindi ko makontrol ang bawat LED nang paisa-isa, at kailangan kong magpadala ng sapat na impormasyon upang makontrol ang 50.
Kung ang iyong LED ay may higit pa o mas kaunti maaari mong i-override ang bilang ng mga LED na iyong kinokontrol sa pamamagitan ng pagpasa sa isang parameter sa pagsisimula. Halimbawa, kung makokontrol mo lamang ang 10 LEDs
sudo npm simulan ang 10
Ang pangunahing server code ay matatagpuan sa file ng app.js. Sinisimulan ng file na ito ang HTTPS web server at nagdaragdag din sa socket.io upang makinig para sa mga kahilingan sa websocket sa parehong 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 webserver ng anumang nilalaman sa ilalim ng pampublikong folder. Nagde-default ito upang ipakita ang pahina ng index.html.
Mayroon itong isang dulo ng API - / api / audio. Ang puntong ito ay naghahanap para sa anumang mga file sa ilalim ng publiko / audio folder at ibabalik ang listahan. Halimbawa
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What You Came For (feat. Rihanna).mp3"]
Upang magdagdag ng musika bilang isang pagpipilian, kopyahin ang mga file sa folder na ito. Personal kong ginagamit ang Filezilla sa paglipas ng ssh. Ang folder na nais mong idagdag ang mga file ay /opt/com.jonhaydock/disco-pi/public/audio
Hakbang 7: Website Code
Kapag na-hit mo ang website dapat mong makita ang isang bagay tulad nito.
Kung nakakita ka ng babala sa seguridad ito ay dahil gumagamit kami ng isang self-sign na sertipiko ng SSL. Maaari mo itong balewalain o idagdag ito bilang isang pagbubukod.
Sa pagpili ng isang pangalan ng file, ang mapagkukunan para sa HTML 5 audio element. itatakda sa file na iyon. Kapag handa na, magsisimulang tumugtog ang musika. Kapag natapos na ang kanta ay titigil ang musika.
Kung pipiliin mo ang opsyong Wala, ang musika ay titigil sa pagtugtog.
Habang pinapatugtog ang file ng musika, ginagamit ng webpage ang interface ng AudioContext upang pag-aralan ang musika, na pagkatapos ay ipinadala sa server sa isang ligtas na koneksyon sa websocket.
Ang mensahe ay ang uri na ang socket.io sa server ay na-set up upang makinig para sa "ws2811". Naglalaman ito ng isang hanay ng 50 mga elemento, na nasa pagitan ng 0 at 255.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
Gumagamit ang server ng Node RPI WS281x Native library (pambalot na aklatan ni Jeremy Garff's WS281X) upang baguhin ang mga kulay ng LEDs sa isang WS2811 LED strip, batay sa data na ipinadala sa pamamagitan ng websocket.
Hakbang 8: Panghuli
Dapat mong makita ang mga LED sa kulay ng pagbabago ng strip sa musika, batay sa pag-aaral ng Mabilis na Fourier Transform na tapos na sa web page.
Inaasahan kong nasiyahan ka dito. Ipaalam sa akin kung ano ang ginagawa mo dito!
TANDAAN: Kung mayroon kang anumang mga isyu
Dahil ang library na ito at ang onboard na Raspberry Pi audioboth ay gumagamit ng PWM, hindi sila maaaring magamit nang magkasama.
Maaaring kailanganin mong i-blacklist ang Broadcom audio kernel module sa pamamagitan ng paglikha ng isang file /etc/modprobe.d/snd-blacklist.conf kasama ang
blacklist snd_bcm2835
Kung ang aparato ng audio ay naglo-load pa rin pagkatapos ng blacklisting, maaaring kailangan mo ring puna ito sa file na / etc / modules. Sa mga system na walang ulo ay maaaring kailanganin mo ring pilitin ang audio sa pamamagitan ng HDMI
I-edit ang config.txt at idagdag:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Kinakailangan ang isang pag-reboot upang magkabisa ang pagbabagong ito
Inirerekumendang:
Paano Mag-disassemble ng isang Computer Na May Madaling Hakbang at Mga Larawan: 13 Hakbang (na may Mga Larawan)
Paano Mag-disassemble ng isang Computer Na May Madaling Mga Hakbang at Larawan: Ito ay isang tagubilin tungkol sa kung paano i-disassemble ang isang PC. Karamihan sa mga pangunahing sangkap ay modular at madaling matanggal. Gayunpaman mahalaga na maging maayos ka tungkol dito. Makakatulong ito upang maiwasan ka sa pagkawala ng mga bahagi, at sa paggawa din ng muling pagsasama
Ang Laser Pointer na naka-mount sa spectacle para sa Mga Taong May Mga Kapansanan sa Locomotor: 9 Mga Hakbang (na may Mga Larawan)
Ang Laser Pointer na naka-mount sa spectacle para sa Mga Taong May Kapansanan sa Locomotor: Ang mga taong may malubhang mga kapansanan sa lokomotor tulad ng mga sanhi ng cerebral palsy ay madalas na may mga kumplikadong pangangailangan sa komunikasyon. Maaaring kailanganin silang gumamit ng mga board na may alpabeto o karaniwang ginagamit na mga salitang nakalimbag sa kanila upang makatulong sa komunikasyon. Gayunpaman, marami
Pag-hack sa TV Tuner upang Basahin ang Mga Larawan sa Daigdig Mula sa Mga Satellite: 7 Mga Hakbang (na may Mga Larawan)
Pag-hack sa TV Tuner upang Basahin ang Mga Larawan sa Daigdig Mula sa Mga Satellite: Mayroong maraming mga satellite sa itaas ng aming mga ulo. Alam mo ba, na ang paggamit lamang ng Iyong computer, TV Tuner at simpleng DIY antena Maaari mong matanggap ang mga pagpapadala mula sa kanila? Halimbawa ng mga real time na larawan ng mundo. Ipapakita ko sa iyo kung paano. Kakailanganin mo ang: - 2 w
Pasadyang Arduino upang Panatilihing MAAARI ang Mga Pindutan sa Mga Manibela na May Bagong Car Stereo: 9 Mga Hakbang (na may Mga Larawan)
Pasadyang Arduino upang Panatilihin ang CAN Steering Wheel Buttons Sa Bagong Car Stereo: Napagpasyahan kong palitan ang orihinal na stereo ng kotse sa aking Volvo V70 -02 ng isang bagong stereo upang masisiyahan ako sa mga bagay tulad ng mp3, bluetooth at handsfree. Ang aking kotse ay may ilang mga kontrol sa manibela para sa stereo na nais kong magamit pa rin.
Album ng Mga Litrato ng Mga Bata Na May Komersyal ng Flashcard: 8 Mga Hakbang (na may Mga Larawan)
Kids Photo Album With Flashcard Commercial: Ipinapakita ng mga itinuturo na ito kung paano gumawa ng isang awtomatikong pag-update ng photo album ng WiFi bilang karagdagan sa mga tampok sa komersyal na flash card