Sisukord:
- Tarvikud
- 1. samm: voo mõistmine
- 2. samm: serveri seadistamine - Ngrok
- 3. samm: serveri seadistamine - sõlm punane
- 4. samm: serveri seadistamine - MQTT (Mosquitto)
- Samm: kood
- Samm: printige 3D -mudel
- Samm: kokkupanek ja keevitamine
- 8. samm: mängige oma sõpradega mõnda silmust
Video: Meloodia: 8 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Lisaks paljudele eelistele ja tehnoloogilistele lahendustele, mis võimaldavad kodust tööd teha, on endiselt raskusi töökaaslaste seas elutoe formuleerimise ja loomisega. MELODY on digitaalne-füüsiline seade, mis võimaldab luua koostööl põhinevaid lühikesi muusikalisi moose. Töökaaslased koordineerivad aega ja seade määrab pöörete ja erinevate juhuslike helidega moosiseansi. Esimene osaleja määrab kindla rütmi, misjärel lisab iga osaleja oma muusikalise lõigu, mis vastab määratud rütmile. Muusikalise taustaga kasutajate hõlbustamiseks aitab tarkvara neil sammu pidada, proovides klikke ja kohanedes sobiva rütmiga. Seanss lõpeb umbes 3 minuti pärast, kui kõik osalejad on oma osa salvestamise lõpetanud.
Kuidas see töötab?
Melody põhineb riistvaral ESP2866, mis suhtleb sõlmpunase serveriga üle MQTT protokolli. Seade teisendab mängija märkmed tähemärkideks, mis saadetakse serverisse ja serverist tagasi teistele mängijatele. See võimaldab kõigil mängida ja kuulda meloodiat ilma võrguühenduseta.
Meloodial on kaks peamist visuaalset indikaatorit. Esimene on LED -riba, mis annab mängijale teada, millal Loop algab ja millal see lõpeb, ning näitab, kas on mängija kord. Teine on toote keskel olev LED -ekraan, mida kasutatakse olemasoleva viisi visuaalseks kuvamiseks. Pöördloendus 3 -st 1 -ni viitab mängimise alustamisele ja ajastusekraan suunab kasutajat, millal ja kuidas ta soovib rühma meloodiasse panustada. Salvestis salvestatakse automaatselt ettevõtte pilve edaspidiseks kasutamiseks.
Selle projekti kavandasid neli tudengit meediauuenduslaboris (MiLab) interdistsiplinaarses keskuses Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar ja Gad Stern. Zvika Markfeldi, Netta Oferi ja Michal Leschinsky abiga ning Noa Moragi ja Oren Zuckermani juhendamisel.
aitäh Tom Granotile suurepärase juhendatava loomise eest, mis aitas mul õppida mõningaid asju siin rakendama (mõned siinsed sammud on selle suurepärase juhendatava järgi modelleeritud).
Tarvikud
- 3D printer
- ESP8266
- 7 nuppu
- 8x8 LED maatriks
- WS2812B LED -riba
- I2S võimendi
- Naiste 1/8 "(3,5 mm) 4 -pooline helipistik
- 4X 1K takisti
- 1X3K takisti
1. samm: voo mõistmine
Selle projektiga püüdsime lahendada mõningaid probleeme:
- Kuidas saaksime selle võrgus teha, et mängijad saaksid samal ajal mängida?
- Kuidas saaksime Interneti latentsusaegadest mööda minna ja sujuva kogemuse luua?
- Kuidas saame panna muusika kõlama hästi ka ilma muusikalise taustata inimestele?
Muusika ajastus ja serialiseerimine
Esimese probleemi lahendamiseks vaatasime MIDI -protokolli ja proovisime seda kasutada, kuid nägime, et see on tugevam kui see, mida tegelikult vajame, samuti tahtsime selle lihtsaks muuta, et saaksime luua esimese töötava prototüübi. Nii et saime inspiratsiooni MIDI-st ja tegime oma muusikalise silmuse numbrite jadaga (0–5), mis on mängijate silmuste suuruse kordne (me selgitame kogu muusikalise matemaatika hiljem).
Muusikas jagasime rütmid muusikalisteks ribadeks. Iga riba on põhimõtteliselt väikese aja segment, mida me kasutame 4/4 (see tähendab 4 lööki muusikalises taktis) - kõige tavalisem.
Seejärel jagatakse iga löök neljaks proovivõtuaknaks, nii et iga mängitav noot joondatakse automaatselt heale positsioonile ja võimaldab meil ka laulu esitada numbrina, mida serverisse saata.
Selleks, et olla muusikataustaga mängijate suhtes sõbralikud, tegime kolm asja:
- Piirake klahvide arvu, et mängija keskenduks vähematele võimalustele.
- Valisime sama skaalaga noote, mis mängivad hästi koos, nii et dissonantsi ei teki.
- Iga vajutus on seatud rütmi "aknale", seega on mängija muusika rütmist võõras
Suhtlusprotokollid
Niisiis, kui oleme muusika loogikast aru saanud, kuidas saame seda oma mängijate vahel suhelda?
selleks kasutame võrguprotokolli MQTT, mis edastab sõnumeid seadmete vahel.
iga mängija on tellinud kaks teemat: tsükkel (saada uusim silmus) ja kord (saab sünkroonimise eesmärgil praeguse mängija ID).
Kui mängija on viimistluse lõpetanud, vajutab ta omakorda nuppu ÜLES ja silmus (uuendatud) saadetakse MQTT maaklerile, kes edastab selle tagasi kõigile silmusekanali mängijatele.
see tsükkel jääb seisma, kuni praegune tsükkel on mängitud ja asendab selle. seega on see mängijale läbipaistev. ka kuna uus tsükkel salvestatakse praegu mängija seadmesse kohalikult, pole muusika Interneti -latentsusaega ja seega lahendasime teise probleemi.
2. samm: serveri seadistamine - Ngrok
ngrok on tunneliteenus. See võimaldab meil paljastada kohapeal töötava teenuse (meie puhul Node -RED) välismaailmale - ilma probleemideta serveri seadistamise või DNS -kirjetega tegelemisega. Lihtsalt käivitage oma arvutis Node-RED ja seejärel käivitage ngrok samas pordis, kus Node-RED töötab.
See on kõik - saate URL -i, mille abil saate Node -RED -i juurde pääseda kõikjal maailmas, olenemata sellest, millisesse võrku see on ühendatud.
Paigaldamine ja seadistamine
- Laadige siit alla oma operatsioonisüsteemi jaoks ngrok.
- Järgige allalaadimislehe juhiseid kuni sammuni „Käivita see”.
- Vahetage "Käivita üles" etapis 80 väärtuseks 1883 - ja http tcp -ks, nagu on./ngrok tcp 1883 sõltuvalt teie
- salvestage URL ja pordi number (on pildil näha), vajame hiljem.
3. samm: serveri seadistamine - sõlm punane
Projekti serveriloogika Node-RED on visuaalne programmeerimiskeskkond, mis võimaldab ühendada erinevat tarkvara (ja riistvara!).
Siin tegime kõigi mängijate vahelise suhtluse loogika (silmuste jagamine ja vastuvõtmine ning käikude koordineerimine)
Punase sõlme paigaldamine
meie Node-RED voo laadimiseks kohalikku arvutisse järgige järgmisi samme:
- Node-RED nõuab Node.js, installige see siit
- installige Node-RED ise, kasutades siin toodud juhiseid.
Nüüd, kui olete installinud Node-RED, käivitage see ülaltoodud juhiste järgi ja kinnitage, et näete tühja lõuendilehte. See peaks asuma aadressil
Nüüd peate importima voo, mida me selle projekti jaoks kasutasime. Selle leiate siit ja vajutage lihtsalt nuppu Import, lisage JSON -fail ja vajutage Juuruta.
Punase sõlme installimine:
kui vaatate sellele sammule lisatud pilti, näete, et meil on kaks peamist "toimingut", saame ühelt mängijalt vooluringi ja seejärel edastame selle kõigile teistele mängijatele. lisaks edastasime uue pöörde kõigile mängijatele. nii et mäng jääb sünkroonis.
4. samm: serveri seadistamine - MQTT (Mosquitto)
Kuna Node-RED-il pole oma MQTT-vahendajat ja peame suhtlema oma andurite ja aktiveerijatega MQTT-i kaudu, kasutame spetsiaalset MQTT-maaklerit. Kuna Node-RED soovitab Mosquitto, kasutame seda. Siit leiate teavet MQTT ja selle kohta, miks seda sageli IoT -projektides kasutatakse.
Paigaldamine ja seadistamine
- Laadige Mosquitto siit alla ja installige see kõik vastavalt oma opsüsteemile.
- Tavaliselt peate Node-RED ühendamiseks Mosquittoga järgima siin toodud juhiseid. Kui aga kasutasite meie voogu, on see teie jaoks juba eelseadistatud. Niikaua kui installite voo ja Mosquitrro korralikult ning Mosquitto töötab pordis 1883 (millel see vaikimisi töötab), peaks see karbist välja töötama.
- Pange tähele, et see tähendab, et MQTT maakler ja teie Node-RED server töötavad samas masinas. See on kasulik süsteemisisese suhtluse lihtsustamiseks. Lisateabe saamiseks vaadake allolevat märkust.
MQTT liikluse jälgimine
Kasutasin liikluse jälgimiseks MQTTfxi, see on suurepärane tööriist väga lihtsa GUI -ga.
Samm: kood
koodi leiate GitHubist (koos kõigi andmefailide ja konfiguratsiooniga h)
Sõltuvused:
enne koodi esp2866 laadimist peate installima mõned teegid:
- libmad-8266 (dekodeerige muusika SPIFF-ist I2S-i)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Laadige helid ESP -sse üles SPIFF -i abil:
- järgige seda suurepärast juhendit.
- lisage andmekaust lähtekoodi kataloogi.
- Muutke Arduino IDE -s Tööriistad välklambi suuruseks "4 MB (FS: 3 MB TOA: ~ 512 KB)"
- Ka tööriistade all Vajutage ESP2866 Sketch Data Upload
Parameetrite seadistamine:
pärast seda minge faili config.h ja lisage nõutavad andmed, nagu WIFI mandaat ning eelmise sammu ngrok URL ja port (vaadake lisatud fotot).
p.s-Olen veel lisanud automaatse ühendamise funktsiooni, mis aitab teil nutitelefonist WIFI- ja ngrok-andmeid seadistada, kuna see oli alles esimene kontseptsiooni tõestus, tahaksin selle mõnel päeval lisada.
Määrake soovitud mängija hulk (see mäng sobib kõige paremini 2-3 mängijale ja karbist välja laaditakse see kahe mängija jaoks erinevate helidega). kuid seda saab hõlpsasti reguleerida rohkemateks:
iga mängija jaoks lisage sõlme punasesse teise voog, et avaldada silmust kasutajapõhises teemas.
Samuti saate muusikalist heli muuta, koondades selle massiivi oma kohandatud helideks:
siin näete kolme tüüpi instrumente (Chrods mängijale 0, Lead mängijale 1 ja Bass mängijale 2)
const char* paths [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"};
Samm: printige 3D -mudel
Esimese sammuna laadige alla STL ja printige need.
pärast tugede eemaldamist ja võib -olla natuke lihvimist (olenevalt printeri eraldusvõimest)
värvige see soovitud värviga
Samm: kokkupanek ja keevitamine
Nii et põhimõtteliselt siin toimub tõeline maagia.
saate neid skeeme järgida ja kõik kokku keevitada.
pidage meeles, et saate muuta PIN -koodide asukohta, lihtsalt pidage meeles, et muutke seda ka koodis.
A0 ja I2S on üsna paigas:
kuna A0 on takisti silla jaoks (me kasutame voolu erinevust, et teada saada, millist nuppu viiest vajutati - sarnaselt selle juhendiga.
I2S -il on konkreetne kodeering, mille leiate siit
8. samm: mängige oma sõpradega mõnda silmust
Soovitan:
DIY 37 LED Arduino ruleti mäng: 3 sammu (piltidega)
DIY 37 Leds Arduino rulett Mäng: Rulett on kasiinomäng, mis on nime saanud prantsuse sõna järgi, mis tähendab väikest ratast
Kuidas: Raspberry PI 4 peata (VNC) installimine RPI-pildistaja ja piltidega: 7 sammu (koos piltidega)
Kuidas: Raspberry PI 4 peata (VNC) installimine Rpi-pildistaja ja piltidega: kavatsen seda Rapsberry PI-d kasutada oma blogis hunniku lõbusate projektide jaoks. Vaadake seda julgelt. Tahtsin uuesti oma Raspberry PI kasutamist alustada, kuid mul polnud uues asukohas klaviatuuri ega hiirt. Vaarika seadistamisest oli tükk aega möödas
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
Arvuti demonteerimine lihtsate sammude ja piltidega: 13 sammu (piltidega)
Arvuti demonteerimine lihtsate sammude ja piltidega: see on juhis arvuti demonteerimiseks. Enamik põhikomponente on modulaarsed ja kergesti eemaldatavad. Siiski on oluline, et oleksite selles osas organiseeritud. See aitab vältida osade kaotamist ja ka kokkupanekut