Përmbajtje:

Melodi: 8 hapa (me fotografi)
Melodi: 8 hapa (me fotografi)

Video: Melodi: 8 hapa (me fotografi)

Video: Melodi: 8 hapa (me fotografi)
Video: DON XHONI - DILEMA (SHAH MAT) 2024, Nëntor
Anonim
Image
Image
Kuptimi i Rrjedhes
Kuptimi i Rrjedhes

Krahas avantazheve të shumta dhe zgjidhjeve teknologjike që lejojnë punën nga shtëpia, vështirësia e formulimit dhe krijimit të mbështetjes për jetën midis bashkëpunëtorëve mbetet. MELODY është një pajisje dixhitale-fizike që mundëson krijimin e bllokimeve muzikore të shkurtra bashkëpunuese. Bashkëpunëtorët koordinojnë kohën dhe pajisja cakton një sesion bllokimi me kthesa dhe tinguj të ndryshëm të rastit. Pjesëmarrësi i parë vendos një ritëm specifik, pas së cilës secili pjesëmarrës shton pjesën e tij muzikore që korrespondon me ritmin e caktuar. Për ta bërë më të lehtë për përdoruesit pa sfond muzikor, softueri i ndihmon ata të mbajnë ritmin duke marrë mostrat e klikimeve të tyre dhe duke u përshtatur me ritmin e duhur. Sesioni përfundon pas rreth 3 minutash kur të gjithë pjesëmarrësit kanë përfunduar regjistrimin e pjesës së tyre.

Si punon?

Melody bazohet në harduerin ESP2866, i cili komunikon me një server Node-Red mbi protokollin MQTT. Pajisja përkthen shënimet e lojtarit në një varg karakteresh që dërgohet në server dhe nga serveri përsëri te lojtarët e tjerë. Kjo i lejon të gjithë të luajnë dhe të dëgjojnë melodinë pa ndërprerje nga lidhja e tyre në rrjet.

Melodi ka dy tregues kryesorë vizualë. E para është një shirit LED që i lejon lojtarit të dijë kur Loop fillon dhe kur përfundon dhe tregon nëse është radha e lojtarit. E dyta është një ekran LED në qendër të produktit, i cili përdoret për të shfaqur vizualisht melodinë ekzistuese. Një numërim mbrapsht nga 3 në 1 tregon që të filloni të luani dhe një shfaqje e orarit drejton përdoruesin kur dhe si dëshiron të kontribuojë në Melodinë e grupit. Regjistrimi ruhet automatikisht në cloud të kompanisë për përdorim në të ardhmen.

Ky projekt u hartua nga katër studentë në laboratorin e inovacionit Media (MiLab) në Qendrën ndërdisiplinore Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar dhe Gad Stern. Me ndihmën e Zvika Markfeld, Netta Ofer dhe Michal Leschinsky dhe udhëzimin e Noa Morag dhe Oren Zuckerman.

faleminderit Tom Granot për krijimin e një udhëzimi të shkëlqyeshëm që më ndihmoi të mësoj se si të zbatoj disa nga gjërat këtu (disa nga hapat këtu janë modeluar sipas këtij udhëzimi të mrekullueshëm).

Furnizimet

  • Printer 3D
  • ESP8266
  • 7 butona
  • Matricë LED 8X8
  • Rrip LED WS2812B
  • Përforcues I2S
  • Fole Femër 1/8 "(3.5mm) 4 Pol Audio Jack
  • Rezistencë 4X 1K
  • Rezistencë 1X3K

Hapi 1: Kuptimi i Rrjedhes

Kuptimi i Rrjedhes
Kuptimi i Rrjedhes
Kuptimi i Rrjedhes
Kuptimi i Rrjedhes

Në këtë projekt ne u përpoqëm të trajtonim disa çështje:

  1. Si mund ta bëjmë atë në internet, në mënyrë që lojtarët të luajnë në të njëjtën kohë?
  2. Si mund të kapërcejmë vonesat e internetit dhe të krijojmë një përvojë pa probleme?
  3. Si mund ta bëjmë muzikën të tingëllojë mirë edhe për njerëzit pa prejardhje muzikore?

Koha dhe serializimi i muzikës

Për të zgjidhur çështjen e parë, ne shikuam protokollin MIDI dhe u përpoqëm ta përdorim atë, por ne pamë se është më e fortë se ajo për të cilën ne në të vërtetë kishim nevojë, me të vërtetë donim ta bënim atë të thjeshtë në mënyrë që të mund të ndërtonim prototipin e parë të punës. Kështu që ne morëm frymëzim nga MIDI dhe bëmë lakun tonë muzikor të përfaqësuar nga një varg numrash (nga 0-5) sa madhësia e sytheve sa koha e lojtarëve (të gjitha matematikat muzikore do t'i shpjegojmë më vonë).

Në muzikë, ne i ndajmë ritmet në bare muzikore. Çdo bar është në thelb një segment i vogël, ne zgjedhim të përdorim 4/4 (që do të thotë 4 rrahje në një shirit muzikor) - më i zakonshmi.

Çdo rrahje ndahet më pas në 4 dritare të marrjes së mostrave, kështu që çdo notë e luajtur do të rreshtohet automatikisht në një pozicion të mirë c dhe gjithashtu do të na lejojë të përfaqësojmë një këngë si një varg numrash për t'i dërguar në server.

Për të qenë miqësorë me lojtarët pa sfond muzikor, ne bëmë tre gjëra:

  1. Kufizoni numrin e çelësave për ta bërë lojtarin të përqëndrohet në më pak opsione.
  2. Ne zgjodhëm shënime në të njëjtën shkallë që luajnë mirë së bashku, kështu që nuk do të ketë ndonjë tingull disonancë.
  3. Çdo shtypje është vendosur në "dritaren" e ritmit, kështu që e tjetërson muzikën e muzikantit me ritmin

Protokollet e komunikimit

Pra, pasi e kuptuam logjikën prapa muzikës, si mund ta komunikojmë atë midis lojtarëve tanë?

për këtë, ne përdorim MQTT, një protokoll publikimi-abonimi të rrjetit që transporton mesazhe midis pajisjeve.

secili lojtar është i regjistruar në dy tema: lak (merrni lakin më aktual) dhe turn (merr id -në e lojtarit aktual për qëllime sinkronizimi).

Nga ana e tyre kur një lojtar të ketë përfunduar duke luajtur melodinë ai/ajo do të shtypë butonin UP dhe laku (ai i përditësuari) do t'i dërgohet ndërmjetësit MQTT, i cili do t'ia transmetojë atë përsëri të gjithë lojtarëve në kanalin e lakut.

ky lak do të qëndrojë "i fjetur" derisa loopi aktual të ketë përfunduar duke luajtur dhe pastaj do ta zëvendësojë atë. kështu do të jetë transparente për lojtarin. gjithashtu meqenëse lak i ri aktualisht ruhet në vend në pajisjen e luajtësit nuk ka vonesë në internet për muzikën, kështu që ne zgjidhëm çështjen e dytë.

Hapi 2: Vendosja e Serverit - Ngrok

Vendosja e serverit - Ngrok
Vendosja e serverit - Ngrok
Vendosja e serverit - Ngrok
Vendosja e serverit - Ngrok

ngrok është një shërbim tunelesh. Kjo na lejon të ekspozojmë një shërbim që funksionon në vend (në rastin tonë, Node -RED) në botën e jashtme - pa sherr të krijimit të një serveri ose trajtimit të regjistrimeve DNS. Ju thjesht ekzekutoni Node-RED në kompjuterin tuaj dhe më pas drejtoni ngrokun në të njëjtin port Node-RED po funksionon.

Kaq është - do të merrni një URL që mund ta përdorni për të hyrë në Node -RED nga kudo në botë, pavarësisht se në cilin rrjet është i lidhur.

Instalimi & Konfigurimi

  1. Shkarkoni ngrok për sistemin tuaj operativ nga këtu.
  2. Ndiqni hapin në faqen e shkarkimit, deri në hapin "Fire it up".
  3. Në "Fire it up up step", ndërro 80 me 1883 - dhe http to tcp si në,./ngrok tcp 1883 në varësi të modelit tënd
  4. ruani URL -në dhe numrin e portit (është parë në imazh) do të na duhet, më vonë.

Hapi 3: Vendosja e Serverit - Nyja -Kuqe

Vendosja e serverit - Nyja -Kuqe
Vendosja e serverit - Nyja -Kuqe

Logjika Server e projektit, Node-RED është një mjedis programimi vizual që ju lejon të lidhni programe të ndryshme (dhe harduer!).

Këtu kemi bërë logjikën e komunikimit midis të gjithë lojtarëve (ndarja dhe marrja e sytheve dhe koordinimi i kthesave)

Instalimi i Node-Red

ndiqni hapat e mëposhtëm për të ngarkuar rrjedhën tonë Node-RED në kompjuterin tuaj lokal:

  1. Node-RED kërkon Node.js, instalojeni nga këtu
  2. instaloni vetë Node-RED duke përdorur udhëzimet këtu.

Tani që keni instaluar Node-RED, ekzekutoni atë duke përdorur udhëzimet në hapin e mësipërm dhe vërtetoni se mund të shihni një faqe të zbrazët të kanavacës. Duhet të gjendet në

Tani do t'ju duhet të importoni rrjedhën që kemi përdorur për këtë projekt, mund ta gjeni këtu dhe thjesht shtypni import shtoni skedarin JSON dhe shtypni Deploy.

Instalimi i Nyjes-Kuq:

nëse shikoni imazhin që i bashkëngjitet këtij hapi mund të shihni që kemi 2 "veprime" kryesore ne marrim një lak aktual nga njëri prej lojtarëve tanë dhe më pas e transmetojmë atë tek të gjithë lojtarët e tjerë. përveç kësaj, ne transmetojmë kthesën e re për të gjithë lojtarët. kështu që loja mbetet në sinkron.

Hapi 4: Vendosja e Serverit - MQTT (Mosquitto)

Vendosja e serverit - MQTT (Mosquitto)
Vendosja e serverit - MQTT (Mosquitto)

Meqenëse Node-RED nuk ka ndërmjetësin e vet MQTT, dhe do të na duhet të komunikojmë me sensorët dhe aktivizuesit tanë mbi MQTT, ne do të përdorim një ndërmjetës të dedikuar MQTT. Meqenëse Node-RED rekomandon Mosquitto, ky është ai që ne do të përdorim. Shih këtu për disa informacione rreth MQTT dhe pse përdoret shpesh në projektet IoT.

Instalimi & Konfigurimi

  1. Shkarkoni Mosquitto nga këtu dhe instalojeni, të gjitha sipas sistemit tuaj operativ.
  2. Normalisht, do të duhet të ndiqni udhëzimet këtu për të lidhur Node-RED me Mosquitto. Sidoqoftë, nëse keni përdorur rrjedhën tonë, ajo tashmë është para-konfiguruar për ju. Për sa kohë që instaloni rrjedhën dhe Mosquitrro siç duhet, dhe Mosquitto funksionon në portin 1883 (në të cilin funksionon si parazgjedhje), duhet të funksionojë jashtë kutisë.
  3. Vini re se kjo do të thotë që ndërmjetësi MQTT dhe serveri juaj Node-RED funksionojnë në të njëjtën makinë. Kjo është e dobishme për thjeshtimin e komunikimit brenda sistemit. Shih shënimin më poshtë për më shumë informacion.

Monitorimi i trafikut MQTT

Kam përdorur MQTTfx për të monitoruar trafikun, është një mjet i shkëlqyeshëm me një GUI shumë të thjeshtë.

Hapi 5: Kodi

Kodi
Kodi

mund ta gjeni kodin në GitHub (me të gjithë skedarët e të dhënave dhe konfigurimin.h)

Varësitë:

para se të ngarkoni kodin në esp2866 do t'ju duhet të instaloni disa biblioteka:

  1. libmad-8266 (deshifroni muzikën nga SPIFF dhe në I2S)
  2. Klienti EspMQTTC
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Ngarko tingujt në ESP duke përdorur SPIFF:

  1. ndiqni këtë udhëzues të madh.
  2. shtoni dosjen e të dhënave në drejtorinë e kodit burimor.
  3. Në Arduino IDE nën Tools ndryshoni madhësinë e Flash -it në "4MB (FS: 3MB TOA: ~ 512KB)"
  4. Gjithashtu nën Mjetet Shtypni ESP2866 Sketch Upload Data

Vendosja e parametrave:

pas kësaj shkoni në skedarin config.h dhe shtoni të dhënat e kërkuara si kredencialet WIFI dhe URL -në e ngrokut dhe portin nga hapi i mëparshëm (kontrolloni foton e bashkangjitur për referencë).

p.s-Unë kam shtuar akoma një veçori të lidhjes automatike për t'ju ndihmuar të vendosni të dhënat WIFI dhe ngrok nga telefoni juaj i mençur, pasi ishte vetëm një provë e parë e konceptit, do të doja ta shtoja një ditë.

Vendosni sasinë e lojtarit që dëshironi (kjo lojë funksionon më mirë për 2-3 lojtarë dhe jashtë kutisë është e ngarkuar me një sërë tingujsh për 2 lojtarë). por mund të rregullohet lehtësisht për më shumë:

për secilin lojtar shtoni një rrjedhë tjetër në nyjen e kuqe për të publikuar një lak në një nën një temë specifike të përdoruesit.

gjithashtu, mund të redaktoni tingullin muzikor duke e ndryshuar këtë grup në tingujt tuaj të personalizuar:

këtu mund të shihni 3 lloje instrumentesh (Chrods për lojtarin 0, Lead për lojtarin 1 dhe Bas për lojtarin 2)

const char* shtigjet [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"};

Hapi 6: Shtypni Modelin 3D

Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D
Shtypni modelin 3D

Për hapin e parë, shkarkoni STL dhe shtypni ato.

pas heqjes së mbështetësve dhe ndoshta pak lëmimit (në varësi të rezolucionit të printerit)

lyejeni atë në ngjyrën e dëshiruar

Hapi 7: Montimi dhe Saldimi

Montimi dhe Saldimi
Montimi dhe Saldimi

Pra, në thelb këtu është vendi ku ndodh magjia e vërtetë.

ju mund të ndiqni këto skema dhe të bashkoni gjithçka së bashku.

kini parasysh që ju mund të ndryshoni pozicionin e PIN -eve vetëm mos harroni ta ndryshoni edhe në kod.

A0 dhe I2S janë mjaft të fiksuara në vend:

meqenëse A0 është për urën e rezistencës (ne përdorim ndryshimin në rrymë për të ditur se cili buton nga 5 është shtypur - i ngjashëm me këtë Instructables.

I2S ka një kodim specifik që mund ta gjeni këtu

Hapi 8: Luani disa sythe me miqtë tuaj

Recommended: