Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pag-unawa sa Daloy
- Hakbang 2: Pagtatakda ng Server - Ngrok
- Hakbang 3: Pagtatakda ng Server - Node-Red
- Hakbang 4: Pagtatakda ng Server - MQTT (Mosquitto)
- Hakbang 5: Ang Code
- Hakbang 6: I-print ang 3D Model
- Hakbang 7: Assembling at Welding
- Hakbang 8: Maglaro ng Ilang Loops Sa Iyong Mga Kaibigan
Video: Melody: 8 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Sa tabi ng maraming mga pakinabang at teknolohikal na solusyon na nagpapahintulot sa trabaho mula sa bahay, mananatili ang kahirapan sa pagbubuo at paglikha ng suporta sa buhay sa mga katrabaho. Ang MELODY ay isang digital-pisikal na aparato na nagbibigay-daan sa paglikha ng magkakasamang maikling musika na jam. Ang mga katrabaho ay nag-uugnay ng oras at ang aparato ay nagtatakda ng isang session ng jam na may mga pagliko at iba't ibang mga random na tunog. Ang unang kalahok ay nagtatakda ng isang tukoy na ritmo, pagkatapos kung saan ang bawat kalahok ay nagdaragdag ng kanilang sariling seksyon ng musikal na naaayon sa itinakdang ritmo. Upang gawing mas madali para sa mga gumagamit na walang background sa musikal, tinutulungan sila ng software na makasabay sa pamamagitan ng pag-sample ng kanilang mga pag-click at pagsasaayos sa naaangkop na ritmo. Nagtatapos ang sesyon pagkalipas ng halos 3 minuto kapag natapos na ng lahat ng mga kalahok ang pag-record ng kanilang bahagi.
Paano ito gumagana?
Ang Melody ay batay sa hardware ng ESP2866, na nakikipag-usap sa isang Node-Red server sa paglipas ng MQTT protocol. Isasalin ng aparato ang mga tala ng manlalaro sa isang string ng mga character na ipinadala sa server at mula sa server pabalik sa iba pang mga manlalaro. Pinapayagan nitong maglaro at pakinggan ang lahat nang walang pag-abala mula sa kanilang koneksyon sa network.
Si Melody ay may dalawang pangunahing mga tagapagpahiwatig ng visual. Ang una ay isang LED strip na ipaalam sa manlalaro kung kailan nagsisimula ang Loop at kung kailan ito magtatapos at ipahiwatig kung turn ng player. Ang pangalawa ay isang LED display sa gitna ng produkto, na ginagamit upang maipakita nang biswal ang mayroon nang tune. Ang isang countdown mula 3 hanggang 1 ay nagsasaad na magsimulang maglaro at isang display ng timings ang magdidirekta sa gumagamit kung kailan at kung paano niya nais mag-ambag sa Melody ng pangkat. Awtomatikong nai-save ang recording sa ulap ng kumpanya para magamit sa hinaharap.
Ang proyektong ito ay dinisenyo ng apat na mag-aaral sa Media inovasi lab (MiLab) sa interdisciplinary Center Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar, at Gad Stern. Sa tulong ni Zvika Markfeld, Netta Ofer at Michal Leschinsky at ng patnubay nina Noa Morag at Oren Zuckerman.
salamat kay Tom Granot para sa paglikha ng isang mahusay na itinuro na nakatulong sa akin na malaman kung paano ipatupad ang ilan sa mga bagay dito (ang ilan sa mga hakbang dito ay na-modelo pagkatapos ng mahusay na itinuro na ito).
Mga gamit
- 3d printer
- ESP8266
- 7 mga pindutan
- 8X8 LED matrix
- WS2812B LED Strip
- I2S amplifier
- Babae 1/8 "(3.5mm) 4 Pole Audio Jack
- 4X 1K risistor
- Resistor ng 1X3K
Hakbang 1: Pag-unawa sa Daloy
Sa proyektong ito sinubukan naming harapin ang ilang mga isyu:
- Paano namin ito magagawa sa online, upang ang mga manlalaro ay maaaring maglaro nang sabay?
- Paano tayo makakaligid sa mga latency ng internet at lumikha ng isang seamless na karanasan?
- Paano namin gagawing maganda ang tunog ng musika kahit para sa mga taong walang background sa musikal?
Oras at serialization ng musika
Upang malutas ang unang isyu tiningnan namin ang MIDI protocol at sinubukan itong gamitin, ngunit nakita namin na mas matatag ito kung gayon ang talagang kailangan namin ay talagang nais naming gawing simple upang mabuo namin ang unang gumaganang prototype. Kaya kumuha kami ng inspirasyon mula sa MIDI at ginawa ang aming loop ng musikal na kinakatawan ng isang string ng mga numero (mula 0-5) beses sa laki ng mga loop na oras ng mga manlalaro (ipapaliwanag namin ang lahat ng matematika ng musika sa paglaon).
Sa musika, pinaghiwalay namin ang mga ritmo sa mga musikang bar. Ang bawat bar ay karaniwang isang maliit na oras na segment na pipiliin naming gumamit ng 4/4 (nangangahulugang 4 na beats sa isang musikal na bar) - ang pinakakaraniwan.
Ang bawat pagtalo ay nahahati sa 4 na mga sampling window upang ang bawat tala na nilalaro ay awtomatikong nakahanay sa isang magandang posisyon at payagan din kaming kumatawan sa isang kanta bilang isang string ng mga numero upang ipadala sa server.
Upang maging palakaibigan sa mga manlalaro nang walang background sa musika gumawa kami ng tatlong bagay:
- Limitahan ang bilang ng mga susi upang mag-focus ang player sa mas kaunting mga pagpipilian.
- Pinili namin ang mga tala sa parehong sukat na mahusay na tumutugtog nang sa gayon ay walang anumang tunog ng hindi pagkakasundo.
- Ang bawat pindutin ay nakatakda sa "window" ng ritmo sa gayon alien ang musika ng manlalaro sa ritmo
Mga protocol sa komunikasyon
Kaya pagkatapos nating maunawaan ang lohika sa likod ng musika, paano natin ito maikakausap sa pagitan ng aming mga manlalaro?
para doon, gumagamit kami ng MQTT, isang publish-subscribe network protocol na nagdadala ng mga mensahe sa pagitan ng mga aparato.
ang bawat manlalaro ay naka-subscribe sa dalawang mga paksa: ang loop (makuha ang pinaka-kasalukuyang loop) at ang pagliko (nakakakuha ng id ng kasalukuyang manlalaro para sa mga layunin sa pag-sync).
Sa kanilang turn kapag ang isang manlalaro ay tapos na sa pag-play ng tune ay pipindutin niya ang UP button at ang loop (ang na-update) ay ipapadala sa MQTT broker, na ibabalik ito sa lahat ng mga manlalaro sa loop channel.
ang loop na ito ay mananatiling "tulog" hanggang sa ang kasalukuyang loop ay tapos na sa paglalaro at pagkatapos ay papalitan ito. sa gayon ito ay magiging transparent sa player. Gayundin dahil ang bagong loop ay kasalukuyang nai-save nang lokal sa aparato ng manlalaro walang latency sa internet para sa musika kaya nalutas namin ang pangalawang isyu.
Hakbang 2: Pagtatakda ng Server - Ngrok
ang ngrok ay isang serbisyo sa tunneling. Pinapayagan kaming mailantad ang isang lokal na serbisyo na nagpapatakbo (sa aming kaso, Node-RED) sa labas ng mundo - nang walang abala sa pag-set up ng isang server o pakikitungo sa mga tala ng DNS. Pinapatakbo mo lang ang Node-RED sa iyong computer, at pagkatapos ay patakbuhin ang ngrok sa parehong port na tumatakbo ang Node-RED.
Iyon lang - makakakuha ka ng isang URL na magagamit mo upang ma-access ang Node-RED mula sa kahit saan sa mundo, hindi alintana kung anong network ito nakakonekta.
Pag-install at Pag-configure
- Mag-download ng ngrok para sa iyong operating system mula rito.
- Sundin ang hakbang sa pahina ng pag-download, hanggang sa hakbang na "Sunugin ito".
- Sa "Fire it up step", palitan ang 80 para sa 1883 - at ang http sa tcp tulad ng,./ngrok tcp 1883 depende sa iyong
- i-save ang URL at numero ng port (nakita sa imahe) kakailanganin namin ang, sa paglaon.
Hakbang 3: Pagtatakda ng Server - Node-Red
Ang lohika ng Server ng proyekto, ang Node-RED ay isang kapaligiran sa visual na programa na nagbibigay-daan sa iyo upang ikonekta ang iba't ibang mga software (at hardware!).
Ginawa namin dito ang lohika ng komunikasyon sa pagitan ng lahat ng mga manlalaro (pagbabahagi at pagtanggap ng mga loop at pag-uugnay ng mga pagliko)
Pag-install ng Node-Red
sundin ang mga sumusunod na hakbang upang mai-load ang aming daloy ng Node-RED sa iyong lokal na computer:
- Nangangailangan ang Node-RED ng Node.js, i-install ito mula rito
- i-install ang Node-RED mismo gamit ang mga tagubilin dito.
Ngayon na na-install mo ang Node-RED, patakbuhin ito gamit ang mga tagubilin sa hakbang sa itaas at patunayan na maaari mong makita ang isang walang laman na pahina ng canvas. Dapat itong matatagpuan sa
Kakailanganin mo ngayon i-import ang daloy na ginamit namin para sa proyektong ito, mahahanap mo ito dito at pindutin lamang ang pag-import idagdag ang JSON file at pindutin ang I-deploy.
Pag-install ng Node-Red:
kung titingnan mo ang imahe na naka-attach sa hakbang na ito maaari mong makita na mayroon kaming 2 pangunahing "mga pagkilos" nakakatanggap kami ng isang kasalukuyang loop mula sa isa sa aming mga manlalaro at pagkatapos ay maihatid namin ito sa lahat ng iba pang mga manlalaro. bilang karagdagan, nai-broadcast namin ang bagong pagliko sa lahat ng mga manlalaro. kaya't ang laro ay mananatiling naka-sync.
Hakbang 4: Pagtatakda ng Server - MQTT (Mosquitto)
Dahil ang Node-RED ay walang sariling MQTT broker, at kakailanganin naming makipag-usap sa aming mga sensor at activator sa MQTT, gagamit kami ng isang nakatuong MQTT broker. Dahil inirerekumenda ng Node-RED si Mosquitto, ito ang gagamitin namin. Tingnan dito para sa ilang impormasyon tungkol sa MQTT at kung bakit ito madalas ginagamit sa mga proyekto ng IoT.
Pag-install at Pag-configure
- Mag-download ng Mosquitto mula rito at i-install ito, lahat ayon sa iyong operating system.
- Karaniwan, kailangan mong sundin ang mga tagubilin dito upang ikonekta ang Node-RED sa Mosquitto. Gayunpaman, kung ginamit mo ang aming daloy, naka-pre-configure na ito para sa iyo. Hangga't na-install mo nang maayos ang daloy at Mosquitrro, at tumatakbo ang Mosquitto sa port 1883 (kung saan ito tumatakbo bilang default), dapat itong gumana sa kahon.
- Tandaan na nangangahulugan ito na ang MQTT broker at ang iyong Node-RED server ay tumatakbo sa parehong machine. Kapaki-pakinabang ito para sa pagpapagaan ng komunikasyon sa loob ng system. Tingnan ang tala sa ibaba para sa karagdagang impormasyon.
Pagsubaybay sa trapiko ng MQTT
Gumamit ako ng MQTTfx upang subaybayan ang trapiko, ito ay isang mahusay na tool na may isang napaka-simpleng GUI.
Hakbang 5: Ang Code
mahahanap mo ang code sa GitHub (kasama ang lahat ng mga file ng data at ang config.h)
Mga dependency:
bago i-load ang code sa esp2866 kakailanganin mong mag-install ng ilang mga aklatan:
- libmad-8266 (i-decode ang musika mula sa SPIFF at sa I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
I-upload ang mga tunog sa ESP gamit ang SPIFF:
- sundin ang mahusay na itinuturo na ito.
- idagdag ang folder ng data sa direktoryo ng source code.
- Sa Arduino IDE sa ilalim ng Mga Tool baguhin ang laki ng Flash sa "4MB (FS: 3MB TOA: ~ 512KB)"
- Sa ilalim din ng Tools Press ESP2866 Sketch Data Upload
Pagtatakda ng mga parameter:
pagkatapos nito pumunta sa config.h file at idagdag ang kinakailangang data tulad ng mga kredensyal ng WIFI at ang ngrok URL at port mula sa nakaraang hakbang (suriin ang nakalakip na larawan para sa sanggunian).
p.s - Nagdagdag pa ako ng tampok na awtomatikong kumonekta upang matulungan kang itakda ang WIFI at ngrok data mula sa iyong smart-phone, dahil ito ay isang unang katibayan lamang ng konsepto, nais kong idagdag ito sa ilang araw.
Itakda ang halaga ng manlalaro na nais mo (ang larong ito ay pinakamahusay na gumagana para sa 2-3 mga manlalaro at sa labas ng kahon na ito ay puno ng isang hanay ng mga tunog para sa 2 mga manlalaro). ngunit maaaring madaling ayusin para sa higit pa:
para sa bawat manlalaro magdagdag ng isa pang daloy sa node-red upang mai-publish ang isang loop sa ilalim ng isang paksa na tukoy sa gumagamit.
Gayundin, maaari mong i-edit ang tunog ng musikal sa pamamagitan ng canging ng array na ito sa iyong pasadyang mga tunog:
dito makikita mo ang 3 mga uri ng mga instrumento (Chrods para sa player 0, Lead para sa player 1, at Bass para sa player 2)
const char * path [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};
Hakbang 6: I-print ang 3D Model
Para sa unang hakbang, i-download ang STL at i-print ang mga ito.
pagkatapos alisin ang mga suporta at marahil kaunting sanding (depende sa resolusyon ng printer)
pintura ito sa nais na kulay
Hakbang 7: Assembling at Welding
Kaya karaniwang narito kung saan nangyayari ang totoong mahika.
maaari mong sundin ang mga iskema na ito at magkasama ang lahat.
isipin na maaari mong baguhin ang posisyon ng mga PIN tandaan lamang na baguhin ito sa code din.
ang A0 at ang I2S ay medyo maayos sa lugar:
dahil ang A0 ay para sa tulay ng resistor (ginagamit namin ang pagkakaiba sa kasalukuyan upang malaman kung aling pindutan mula sa 5 ang pinindot - katulad ng mga Instructable na ito.
ang I2S ay may isang tukoy na pag-coding maaari mo itong makita dito
Hakbang 8: Maglaro ng Ilang Loops Sa Iyong Mga Kaibigan
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.
Melody Box: 4 Hakbang (na may Mga Larawan)
Melody Box: Kamusta diyan! Gumawa ako ng isang kahon na may 3 mga pindutan sa bawat isa ay magkakaibang himig. Ang bawat himig ay may iba't ibang kulay na LED at nagpapatuloy kapag pinatugtog ang isang tala. Kailan mo itulak ang " pasulong " ang pindutan ng himig ay magiging mas mabilis. Ang mga bagay na kailangan mo: -