Kazalo:
- Zaloge
- 1. korak: Razumevanje toka
- 2. korak: Nastavitev strežnika - Ngrok
- 3. korak: Nastavitev strežnika - Node -Red
- 4. korak: Nastavitev strežnika - MQTT (Mosquitto)
- 5. korak: Koda
- 6. korak: Natisnite model 3D
- 7. korak: Sestavljanje in varjenje
- 8. korak: Predvajajte nekaj zank s prijatelji
Video: Melodija: 8 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Poleg številnih prednosti in tehnoloških rešitev, ki omogočajo delo od doma, ostaja težava pri oblikovanju in ustvarjanju življenjske podpore med sodelavci. MELODY je digitalno-fizična naprava, ki omogoča ustvarjanje skupnih kratkih glasbenih zastojev. Sodelavci usklajujejo čas in naprava nastavi jam session z obračanjem in različnimi naključnimi zvoki. Prvi udeleženec nastavi določen ritem, nato pa vsak udeleženec doda svoj glasbeni odsek, ki ustreza nastavljenemu ritmu. Da bi olajšali uporabnike brez glasbenega ozadja, jim programska oprema pomaga vztrajati v koraku z vzorčenjem klikov in prilagajanjem ustreznemu ritmu. Seja se konča po približno 3 minutah, ko vsi udeleženci končajo snemanje svojega dela.
Kako deluje?
Melody temelji na strojni opremi ESP2866, ki prek protokola MQTT komunicira s strežnikom Node-Red. Naprava prevede igralčeve zapiske v niz znakov, ki se pošlje strežniku in s strežnika nazaj drugim igralcem. To vsem omogoča predvajanje in poslušanje melodije brez prekinitve omrežne povezave.
Melodija ima dva glavna vizualna kazalca. Prvi je LED trak, ki igralcu sporoči, kdaj se zanka začne in kdaj konča, ter označi, ali je na vrsti igralec. Drugi je LED zaslon v središču izdelka, ki se uporablja za vizualni prikaz obstoječe melodije. Odštevanje od 3 do 1 označuje začetek predvajanja, prikaz časa pa uporabnika usmeri, kdaj in kako želi prispevati k Melodiji skupine. Posnetek se samodejno shrani v oblak podjetja za nadaljnjo uporabo.
Ta projekt so oblikovali štirje študentje v laboratoriju za inovacije medijev (MiLab) v interdisciplinarnem centru Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar in Gad Stern. S pomočjo Zvike Markfeld, Nette Ofer in Michala Leschinskyja ter pod vodstvom Noe Morag in Orena Zuckermana.
hvala Tomu Granotu za ustvarjanje odličnega pouka, ki mi je pomagal naučiti se izvajati nekatere stvari tukaj (nekateri koraki so oblikovani po tem odličnem navodilu).
Zaloge
- 3D tiskalnik
- ESP8266
- 7 gumbov
- 8X8 LED matrika
- WS2812B LED trak
- Ojačevalnik I2S
- Samski 1/8 "(3,5 mm) 4 -polni avdio priključek
- 4X 1K upor
- 1X3K upor
1. korak: Razumevanje toka
V tem projektu smo poskušali rešiti nekaj vprašanj:
- Kako lahko to naredimo na spletu, da lahko igralci igrajo hkrati?
- Kako se lahko izognemo internetnim zamudam in ustvarimo brezhibno izkušnjo?
- Kako lahko naredimo glasbo dobro tudi za ljudi brez glasbene podlage?
Časovna razporeditev in zaporedje glasbe
Za rešitev prve težave smo si ogledali protokol MIDI in ga poskušali uporabiti, vendar smo videli, da je bolj robusten od tistega, kar smo dejansko potrebovali, prav tako pa smo ga želeli poenostaviti, da lahko izdelamo prvi delujoči prototip. Tako smo vzeli navdih iz MIDI-ja in našo glasbeno zanko predstavili z nizom številk (od 0-5) krat velikosti zank v času igralcev (vso glasbeno matematiko bomo razložili kasneje).
V glasbi ritme razdelimo na glasbene takte. Vsak stolpec je v bistvu majhen segment, za katerega se odločimo uporabiti 4/4 (kar pomeni 4 udarce v glasbeni vrstici) - najpogostejši.
Vsak utrip je nato razdeljen na 4 okna za vzorčenje, tako da bo vsaka predvajana nota samodejno poravnana v dobro pozicijo c in nam bo tudi omogočila, da pesem predstavimo kot niz številk za pošiljanje strežniku.
Da bi bili prijazni do igralcev brez glasbene podlage, smo naredili tri stvari:
- Omejite število tipk, da se bo predvajalnik osredotočil na manj možnosti.
- Izbrali smo note na isti lestvici, ki dobro igrajo skupaj, tako da ne bo nobenega disonantnega zvoka.
- Vsak pritisk je nastavljen na "okno" ritma, zato je glasba predvajalnika tuja
Komunikacijski protokoli
Ko torej razumemo logiko glasbe, kako jo lahko komuniciramo med igralci?
za to uporabljamo MQTT, omrežni protokol za objavo in naročanje, ki prenaša sporočila med napravami.
vsak igralec je naročen na dve temi: zanka (dobi najnovejšo zanko) in obrat (dobi ID trenutnega predvajalnika za namene sinhronizacije).
Ko igralec konča z igranjem melodije, pritisne gumb GOR in zanka (posodobljena) bo poslana posredniku MQTT, ki jo bo poslal nazaj vsem igralcem na kanalu zanke.
ta zanka bo ostala "mirujoča", dokler se trenutna zanka ne predvaja, nato pa jo bo zamenjala. tako bo za igralca pregleden. tudi ker je nova zanka trenutno shranjena lokalno na napravi predvajalnika, internetne zamude pri glasbi ni, zato smo rešili drugo vprašanje.
2. korak: Nastavitev strežnika - Ngrok
ngrok je storitev predora. Omogoča nam, da lokalno delujočo storitev (v našem primeru Node -RED) izpostavimo zunanjemu svetu - brez težav pri nastavitvi strežnika ali obravnavanju zapisov DNS. Node-RED preprosto zaženete v računalniku in nato zaženete ngrok na istih vratih, na katerih deluje Node-RED.
To je to - dobili boste URL, s katerim lahko dostopate do Node -RED od koder koli na svetu, ne glede na to, s katerim omrežjem je povezan.
Namestitev in konfiguracija
- Od tod prenesite ngrok za svoj operacijski sistem.
- Sledite korakom na strani za prenos, vse do koraka »Požari«.
- V koraku "Požari ga" zamenjajte 80 za 1883 - in http za tcp kot v./ngrok tcp 1883, odvisno od vašega
- shranite URL in številko vrat (prikazano na sliki), ki jih bomo potrebovali kasneje.
3. korak: Nastavitev strežnika - Node -Red
Strežniška logika projekta, Node-RED, je vizualno programsko okolje, ki vam omogoča povezovanje različne programske opreme (in strojne opreme!).
Tu smo naredili logiko komunikacije med vsemi igralci (deljenje in sprejemanje zank ter usklajevanje zavojev)
Namestitev Node-Red
sledite tem korakom, da naložite naš tok Node-RED v vaš lokalni računalnik:
- Node-RED zahteva Node.js, namestite ga od tu
- namestite Node-RED sami po navodilih tukaj.
Zdaj, ko imate nameščen Node-RED, ga zaženite po navodilih v zgornjem koraku in potrdite, da vidite prazno stran platna. Najti se mora na
Zdaj boste morali uvoziti tok, ki smo ga uporabili za ta projekt, najdete ga tukaj in samo pritisnite import, dodajte datoteko JSON in pritisnite Deploy.
Namestitev Node-Red:
če pogledate sliko, ki je priložena temu koraku, lahko vidite, da imamo 2 glavni "akciji", od enega od naših igralcev prejmemo trenutno zanko in jo nato posredujemo vsem ostalim igralcem. poleg tega pa smo vsem igralcem oddali nov obrat. tako igra ostane sinhronizirana.
4. korak: Nastavitev strežnika - MQTT (Mosquitto)
Ker Node-RED nima svojega posrednika MQTT in bomo morali komunicirati s svojimi senzorji in aktivatorji prek MQTT, bomo uporabili namenskega posrednika MQTT. Ker Node-RED priporoča Mosquitto, bomo uporabili tega. Tukaj si oglejte nekaj informacij o MQTT in zakaj se pogosto uporablja v projektih IoT.
Namestitev in konfiguracija
- Od tu prenesite Mosquitto in ga namestite, vse v skladu z vašim operacijskim sistemom.
- Običajno bi morali slediti tem navodilom za povezavo Node-RED z Mosquitto. Če pa ste uporabili naš tok, je za vas že vnaprej konfiguriran. Dokler pravilno namestite tok in Mosquitrro, Mosquitto pa deluje na vratih 1883 (na katerih deluje privzeto), bi moral delovati brez težav.
- Upoštevajte, da to pomeni, da posrednik MQTT in vaš strežnik Node-RED delujeta na istem računalniku. To je uporabno za poenostavitev komunikacije znotraj sistema. Za več informacij si oglejte spodnjo opombo.
Spremljanje prometa MQTT
Za spremljanje prometa sem uporabil MQTTfx, to je odlično orodje z zelo preprostim grafičnim vmesnikom.
5. korak: Koda
kodo najdete v GitHubu (z vsemi podatkovnimi datotekami in config.h)
Odvisnosti:
preden naložite kodo v esp2866, boste morali namestiti nekaj knjižnic:
- libmad-8266 (dekodiranje glasbe iz SPIFF v I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Naložite zvoke v ESP z uporabo SPIFF:
- sledite temu odličnemu navodilu.
- mapo s podatki dodajte v imenik izvorne kode.
- V Arduino IDE pod Orodja spremenite velikost Flash na "4 MB (FS: 3 MB TOA: ~ 512 KB)"
- Tudi pod Orodja Pritisnite ESP2866 Sketch Data Upload
Nastavitev parametrov:
nato pojdite v datoteko config.h in dodajte zahtevane podatke, kot so poverilnice WIFI ter URL in vrata ngrok iz prejšnjega koraka (za referenco preverite priloženo fotografijo).
p.s-Dodal sem še funkcijo samodejne povezave, ki vam bo pomagala nastaviti podatke WIFI in ngrok iz vašega pametnega telefona, saj je bil to le prvi dokaz koncepta, bi ga nekega dne dodal.
Nastavite želeno količino predvajalnika (ta igra najbolje deluje za 2-3 igralce in iz škatle je naložena vrsta zvokov za 2 igralca). vendar jih je mogoče enostavno prilagoditi za več:
za vsakega igralca dodajte še en tok v rdečem vozlišču, da objavite zanko v temi za uporabnika.
glasbeni zvok lahko uredite tudi tako, da ta niz prilagodite svojim zvokom po meri:
tukaj lahko vidite 3 vrste instrumentov (Chrods za igralca 0, Lead za igralca 1 in Bass za igralca 2)
const char* poti [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"};
6. korak: Natisnite model 3D
Za prvi korak prenesite STL in jih natisnite.
po odstranitvi nosilcev in morda malo brušenja (odvisno od ločljivosti tiskalnika)
pobarvaj v želeno barvo
7. korak: Sestavljanje in varjenje
Tako se v bistvu tukaj zgodi prava čarovnija.
lahko sledite tem shemam in vse skupaj zvarite.
Upoštevajte, da lahko spremenite položaj kode PIN, ne pozabite pa jo spremeniti tudi v kodi.
A0 in I2S sta precej pritrjena:
ker je A0 za uporniški most (z razliko v toku uporabimo, da vemo, kateri gumb od 5 je bil pritisnjen - podobno kot ta Instructables.
I2S ima posebno kodiranje, ki ga najdete tukaj
8. korak: Predvajajte nekaj zank s prijatelji
Priporočena:
Kako: Namestitev Raspberry PI 4 Headless (VNC) z Rpi-sliko in slikami: 7 korakov (s slikami)
Kako: Namestitev Raspberry PI 4 Headless (VNC) z Rpi-imagerjem in slikami: Ta Rapberry PI nameravam uporabiti v kopici zabavnih projektov v svojem blogu. Vabljeni, da to preverite. Želel sem se vrniti v uporabo Raspberry PI, vendar na novi lokaciji nisem imel tipkovnice ali miške. Nekaj časa je minilo, odkar sem nastavil malino
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Preprosta melodija melodije Arduino: 3 koraki
Enostavna melodija melodije Arduino: Enostavna melodija melodije Arduino je način za začetek pri projektih Arduino, ker boste kodo naložili neposredno iz programske opreme Arduino, ne da bi morali pisati nič
Budilka: Posebna melodija zvonjenja, zelo učinkovita: 3 koraki
Budilka: Posebna melodija zvonjenja, zelo učinkovita: Pozdravljeni vsi! Zame prvič objavljam navodila, se opravičujem za nizko stopnjo v angleščini :) Tukaj je prebujenje, ki pomaga tistim, ki zjutraj zaspijo. Načelo je precej preprosto, namesto da bi vas zbudil zvonjenje ali
Kako razstaviti računalnik z enostavnimi koraki in slikami: 13 korakov (s slikami)
Kako z enostavnimi koraki in slikami razstaviti računalnik: To navodilo za razstavljanje računalnika. Večina osnovnih komponent je modularnih in jih je enostavno odstraniti. Vendar je pomembno, da ste glede tega organizirani. To vam bo pomagalo preprečiti izgubo delov in tudi pri ponovni montaži