Satura rādītājs:
- Piegādes
- 1. darbība: plūsmas izpratne
- 2. darbība: servera iestatīšana - Ngrok
- 3. solis: servera iestatīšana - mezgls sarkans
- 4. solis: servera iestatīšana - MQTT (Mosquitto)
- 5. darbība: kods
- 6. darbība: izdrukājiet 3D modeli
- 7. solis: salikšana un metināšana
- 8. solis: spēlējiet dažas cilpas ar draugiem
Video: Melodija: 8 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Līdztekus daudzajām priekšrocībām un tehnoloģiskajiem risinājumiem, kas ļauj strādāt no mājām, joprojām ir grūti formulēt un radīt dzīvības atbalstu kolēģu vidū. MELODY ir digitāli fiziska ierīce, kas ļauj izveidot īsus sadarbības mūzikas sastrēgumus. Kolēģi koordinē laiku, un ierīce iestata ievārījuma sesiju ar pagriezieniem un dažādām nejaušām skaņām. Pirmais dalībnieks nosaka noteiktu ritmu, pēc kura katrs dalībnieks pievieno savu muzikālo sadaļu, kas atbilst noteiktajam ritmam. Lai atvieglotu lietotājiem, kuriem nav muzikālās pieredzes, programmatūra palīdz viņiem iet kopsolī, izlasot klikšķus un pielāgojoties atbilstošajam ritmam. Sesija beidzas pēc apmēram 3 minūtēm, kad visi dalībnieki ir pabeiguši savas daļas ierakstīšanu.
Kā tas darbojas?
Melodijas pamatā ir aparatūra ESP2866, kas sazinās ar Node-Red serveri, izmantojot MQTT protokolu. Ierīce pārvērš atskaņotāja piezīmes rakstzīmju virknē, kas tiek nosūtīta uz serveri un no servera atpakaļ citiem spēlētājiem. Tas ļauj ikvienam spēlēt un dzirdēt melodiju bez pārtraukuma no tīkla savienojuma.
Melodijai ir divi galvenie vizuālie rādītāji. Pirmais ir LED sloksne, kas ļauj spēlētājam uzzināt, kad sākas cilpa un kad tā beidzas, un norāda, vai ir spēlētāja kārta. Otrais ir LED displejs produkta centrā, kas tiek izmantots, lai vizuāli parādītu esošo melodiju. Atpakaļskaitīšana no 3 līdz 1 norāda, ka jāsāk spēlēt, un laika displejs norāda lietotājam, kad un kā viņa vēlas dot ieguldījumu grupas melodijā. Ieraksts tiek automātiski saglabāts uzņēmuma mākonī turpmākai lietošanai.
Šo projektu izstrādāja četri studenti Mediju inovāciju laboratorijā (MiLab) starpnozaru centrā Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar un Gad Stern. Ar Zvika Markfelda, Netta Ofer un Michal Leschinsky palīdzību un Noa Morag un Oren Cuckerman vadībā.
paldies Tomam Granotam par lielisku pamācību izveidi, kas palīdzēja man iemācīties ieviest dažas lietas šeit (daži soļi šeit ir veidoti pēc šīs lieliskās pamācības).
Piegādes
- 3D printeris
- ESP8266
- 7 pogas
- 8X8 LED matrica
- WS2812B LED sloksne
- I2S pastiprinātājs
- Sieviešu 1/8 collu (3,5 mm) 4 polu audio ligzda
- 4X 1K rezistors
- 1X3K rezistors
1. darbība: plūsmas izpratne
Šajā projektā mēs centāmies risināt dažas problēmas:
- Kā mēs varam to izveidot tiešsaistē, lai spēlētāji varētu spēlēt vienlaikus?
- Kā mēs varam apiet interneta aizkavēšanos un radīt nevainojamu pieredzi?
- Kā mēs varam likt mūzikai skanēt pat cilvēkiem bez muzikālās pieredzes?
Mūzikas laiks un sērijveidošana
Lai atrisinātu pirmo problēmu, mēs apskatījām MIDI protokolu un mēģinājām to izmantot, taču redzējām, ka tas ir daudz izturīgāks nekā tas, kas mums patiešām bija vajadzīgs, un mēs patiešām vēlējāmies to padarīt vienkāršu, lai mēs varētu izveidot pirmo darba prototipu. Tāpēc mēs iedvesmojāmies no MIDI un izveidojām savu muzikālo cilpu, ko attēlo skaitļu virkne (no 0 līdz 5) reizes lielāka par atskaņotāju cilpu lielumu (mēs visu mūzikas matemātiku paskaidrosim vēlāk).
Mūzikā mēs sadalījām ritmus mūzikas bāros. Katrs stienis būtībā ir neliela laika segments, kuru izvēlamies izmantot 4/4 (tas nozīmē 4 sitieni mūzikas joslā) - visizplatītāko.
Katrs sitiens pēc tam tiek sadalīts 4 paraugu ņemšanas logos, lai katra atskaņotā nota tiktu automātiski izlīdzināta c labā stāvoklī, kā arī ļautu mums attēlot dziesmu kā skaitļu virkni, ko nosūtīt uz serveri.
Lai būtu draudzīgi spēlētājiem bez muzikālās pieredzes, mēs darījām trīs lietas:
- Ierobežojiet taustiņu skaitu, lai spēlētājs koncentrētos uz mazākām iespējām.
- Mēs izvēlējāmies tādā pašā mērogā notis, kas labi spēlē kopā, tāpēc nebūs disonanse.
- Katrs spiediens ir iestatīts uz ritma "logu", tādējādi atskaņotāja mūzika ritmā ir sveša
Komunikācijas protokoli
Tātad, kad mēs sapratām mūzikas loģiku, kā mēs varam to sazināties starp mūsu spēlētājiem?
šim nolūkam mēs izmantojam MQTT-publicēšanas un abonēšanas tīkla protokolu, kas pārraida ziņojumus starp ierīcēm.
katrs spēlētājs ir abonējis divas tēmas: cilpa (iegūstiet visjaunāko cilpu) un kārta (iegūst pašreizējā atskaņotāja ID sinhronizācijas nolūkos).
Savukārt, kad spēlētājs ir pabeidzis melodijas atskaņošanu, viņš/viņa nospiedīs pogu UZ AUGŠU, un cilpa (atjauninātā) tiks nosūtīta MQTT brokerim, kurš to nosūtīs atpakaļ visiem cilpas kanāla spēlētājiem.
šī cilpa paliks "neaktīva", līdz pašreizējā cilpa tiks atskaņota un pēc tam to aizstās. tādējādi spēlētājam tas būs caurspīdīgs. arī, tā kā jaunā cilpa pašlaik tiek lokāli saglabāta atskaņotāja ierīcē, mūzikai nav interneta latentuma, tāpēc mēs atrisinājām otro problēmu.
2. darbība: servera iestatīšana - Ngrok
ngrok ir tunelēšanas pakalpojums. Tas ļauj mums pakļaut ārējai pasaulei vietējā līmenī strādājošu pakalpojumu (mūsu gadījumā Node -RED) - bez grūtībām izveidot serveri vai rīkoties ar DNS ierakstiem. Vienkārši palaidiet Node-RED savā datorā un pēc tam palaidiet ngrok tajā pašā portā, kurā darbojas Node-RED.
Tieši tā - jūs iegūsit URL, kuru varēsit izmantot, lai piekļūtu mezglam -RED no jebkuras vietas pasaulē neatkarīgi no tā, ar kādu tīklu tas ir savienots.
Uzstādīšana un konfigurēšana
- Lejupielādējiet ngrok savai operētājsistēmai no šejienes.
- Izpildiet lejupielādes lapā norādīto darbību līdz brīdim, kad tiek aktivizēta darbība.
- Sadaļā “Uzliesmojiet” mainiet 80 uz 1883 - un http uz tcp, kā norādīts./ngrok tcp 1883 atkarībā no jūsu
- saglabājiet URL un porta numuru (redzams attēlā), kas mums būs vajadzīgs vēlāk.
3. solis: servera iestatīšana - mezgls sarkans
Projekta servera loģika Node-RED ir vizuālās programmēšanas vide, kas ļauj savienot dažādu programmatūru (un aparatūru!).
Šeit mēs izveidojām saziņas loģiku starp visiem spēlētājiem (cilpu koplietošana un saņemšana un pagriezienu koordinēšana)
Sarkanā mezgla uzstādīšana
rīkojieties šādi, lai vietējā datorā ielādētu Node-RED plūsmu:
- Node-RED ir nepieciešams Node.js, instalējiet to no šejienes
- instalējiet Node-RED, izmantojot šeit sniegtos norādījumus.
Tagad, kad esat instalējis Node-RED, palaidiet to, izmantojot iepriekš norādītās darbības, un pārbaudiet, vai redzat tukšu audekla lapu. Tam vajadzētu atrasties vietnē
Tagad jums būs jāimportē plūsma, ko izmantojām šim projektam. Jūs to varat atrast šeit un vienkārši nospiediet importēt, pievienojiet JSON failu un nospiediet Izvietot.
Sarkanā mezgla instalēšana:
ja paskatās uz attēlu, kas pievienots šim solim, jūs varat redzēt, ka mums ir 2 galvenās "darbības", mēs saņemam pašreizējo cilpu no viena no mūsu spēlētājiem un pēc tam pārsūtām to visiem pārējiem spēlētājiem. turklāt mēs pārraidām jauno pagriezienu visiem spēlētājiem. tāpēc spēle paliek sinhronizēta.
4. solis: servera iestatīšana - MQTT (Mosquitto)
Tā kā Node-RED nav sava MQTT brokera, un mums būs jāsazinās ar mūsu sensoriem un aktivatoriem, izmantojot MQTT, mēs izmantosim īpašu MQTT brokeri. Tā kā Node-RED iesaka Mosquitto, mēs to izmantosim. Skatiet šeit, lai iegūtu informāciju par MQTT un kāpēc to bieži izmanto IoT projektos.
Uzstādīšana un konfigurēšana
- Lejupielādējiet Mosquitto no šejienes un instalējiet to atbilstoši savai operētājsistēmai.
- Parasti, lai savienotu Node-RED ar Mosquitto, jums jāievēro šeit sniegtie norādījumi. Tomēr, ja izmantojāt mūsu plūsmu, tā jums jau ir iepriekš konfigurēta. Kamēr jūs pareizi instalējat plūsmu un Mosquitrro un Mosquitto darbojas portā 1883 (kurā tas darbojas pēc noklusējuma), tam vajadzētu darboties bez kastes.
- Ņemiet vērā, ka tas nozīmē, ka MQTT brokeris un jūsu Node-RED serveris darbojas vienā datorā. Tas ir noderīgi, lai vienkāršotu saziņu sistēmas iekšienē. Plašāku informāciju skatiet zemāk esošajā piezīmē.
MQTT trafika uzraudzība
Satiksmes uzraudzībai izmantoju MQTTfx, tas ir lielisks rīks ar ļoti vienkāršu GUI.
5. darbība: kods
kodu varat atrast vietnē GitHub (ar visiem datu failiem un konfigurāciju h)
Atkarības:
pirms koda ielādes esp2866, jums jāinstalē dažas bibliotēkas:
- libmad-8266 (atšifrējiet mūziku no SPIFF un I2S)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Augšupielādējiet skaņas ESP, izmantojot SPIFF:
- izpildiet šo lielisko pamācību.
- pievienojiet datu mapi avota koda direktorijai.
- Arduino IDE sadaļā Rīki mainiet zibspuldzes lielumu uz "4 MB (FS: 3 MB TOA: ~ 512 KB)"
- Arī sadaļā Rīki Nospiediet ESP2866 Sketch Data Upload
Parametru iestatīšana:
pēc tam dodieties uz failu config.h un pievienojiet nepieciešamos datus, piemēram, WIFI akreditācijas datus, un ngrok URL un portu no iepriekšējās darbības (pārbaudiet pievienoto fotoattēlu).
p.s-Es vēl esmu pievienojis automātiskā savienojuma funkciju, lai palīdzētu iestatīt WIFI un ngrok datus no sava viedtālruņa, jo tas bija tikai pirmais koncepcijas pierādījums, es vēlos to pievienot kādu dienu.
Iestatiet vēlamo spēlētāju skaitu (šī spēle vislabāk darbojas 2-3 spēlētājiem, un no kastes tā tiek ielādēta ar skaņu masīvu 2 spēlētājiem). bet var viegli pielāgot vairāk:
katram spēlētājam pievienojiet vēl vienu plūsmu mezgla sarkanā krāsā, lai publicētu cilpu lietotāja specifiskā tēmā.
varat arī rediģēt mūzikas skaņu, apvienojot šo masīvu ar savām pielāgotajām skaņām:
šeit jūs varat redzēt 3 veidu instrumentus (Chrods 0 spēlētājam, Lead 1 spēlētājam un Bass 2 spēlētājam)
const char* ceļi [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. darbība: izdrukājiet 3D modeli
Vispirms lejupielādējiet STL un izdrukājiet tos.
pēc balstu noņemšanas un varbūt nedaudz slīpēšanas (atkarībā no printera izšķirtspējas)
krāsojiet to vēlamajā krāsā
7. solis: salikšana un metināšana
Tātad būtībā šeit notiek īstā maģija.
jūs varat sekot šīm shēmām un sametināt visu kopā.
ņemiet vērā, ka varat mainīt PIN atrašanās vietu, neaizmirstiet to mainīt arī kodā.
A0 un I2S ir diezgan fiksēti vietā:
tā kā A0 ir paredzēts rezistoru tiltam (mēs izmantojam strāvas starpību, lai uzzinātu, kura poga no 5 tika nospiesta - līdzīgi kā šajā instrukcijā.
I2S ir īpašs kodējums, kuru varat atrast šeit
8. solis: spēlējiet dažas cilpas ar draugiem
Ieteicams:
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar RPI attēlu un attēliem: 7 soļi (ar attēliem)
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar Rpi-imager un Pictures: Es plānoju izmantot šo Rapsberry PI daudzos jautros projektos savā emuārā. Jūtieties brīvi to pārbaudīt. Es gribēju atkal izmantot savu aveņu PI, bet manā jaunajā vietā nebija tastatūras vai peles. Pagāja laiks, kopš es izveidoju aveņu
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Vienkārša Arduino toņu melodija: 3 soļi
Vienkārša Arduino toņu melodija: Vienkārša Arduino toņu melodija ir veids, kā sākt ar Arduino projektiem, jo jūs augšupielādēsit kodu tikai no Arduino programmatūras, neko nerakstot
Skrūve - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): 6 soļi (ar attēliem)
Bolt - DIY bezvadu uzlādes nakts pulkstenis (6 soļi): Induktīvās uzlādes (pazīstamas arī kā bezvadu uzlāde vai bezvadu uzlāde) ir bezvadu enerģijas pārneses veids. Tas izmanto elektromagnētisko indukciju, lai nodrošinātu elektroenerģiju pārnēsājamām ierīcēm. Visizplatītākā lietojumprogramma ir Qi bezvadu uzlādes st
Kamera atvieglotiem laika intervāla attēliem: 22 soļi (ar attēliem)
Kamera atvieglotiem laika intervāla attēliem: es pārbaudīju vienu no citām instrukcijām par laika nobīdes filmu veidošanu. Viņš diezgan labi aptvēra filmas daļu. Viņš pastāstīja par bezmaksas programmatūru, kuru varat lejupielādēt, lai izveidotu filmas. Es sev teicu: domāju, ka redzēšu, vai varu