Tartalomjegyzék:

Dallam: 8 lépés (képekkel)
Dallam: 8 lépés (képekkel)

Videó: Dallam: 8 lépés (képekkel)

Videó: Dallam: 8 lépés (képekkel)
Videó: Halász Judit - Boldog Születésnapot 2024, Július
Anonim
Image
Image
Az áramlás megértése
Az áramlás megértése

Az otthoni munkavégzést lehetővé tevő számos előny és technológiai megoldás mellett továbbra is nehézséget okoz a munkatársak körében az életmentés megfogalmazása és megteremtése. A MELODY egy digitális-fizikai eszköz, amely lehetővé teszi együttműködő rövid zenei lekvárok létrehozását. A munkatársak koordinálják az időt, és a készülék lekésett munkamenetet állít be fordulatokkal és különböző véletlenszerű hangokkal. Az első résztvevő meghatározott ritmust állít be, majd minden résztvevő hozzáadja a beállított ritmusnak megfelelő saját zenei szakaszt. Annak érdekében, hogy megkönnyítse a zenei háttérrel nem rendelkező felhasználók kényelmét, a szoftver segít nekik lépést tartani a kattintások mintavételezésével és a megfelelő ritmushoz való igazítással. Az ülés körülbelül 3 perc múlva fejeződik be, amikor minden résztvevő befejezte a felvételét.

Hogyan működik?

A Melody az ESP2866 hardverre épül, amely MQTT protokollon keresztül kommunikál egy Node-Red szerverrel. A készülék a játékos jegyzeteit karakterlánccá alakítja át, amelyet a szerver és a szerver visszaküld a többi játékosnak. Ez lehetővé teszi, hogy mindenki játszhasson és hallhassa a dallamot a hálózati kapcsolat megszakítása nélkül.

A dallamnak két fő vizuális mutatója van. Az első egy LED szalag, amely tájékoztatja a játékost, hogy mikor kezdődik és mikor fejeződik be a hurok, és jelzi, ha a játékoson a sor. A második egy LED kijelző a termék közepén, amely a meglévő dallam vizuális megjelenítésére szolgál. A 3 -tól 1 -ig terjedő visszaszámlálás jelzi a játék megkezdését, az időzítés pedig azt jelzi, hogy mikor és hogyan szeretne hozzájárulni a csoport dallamához. A felvétel automatikusan mentésre kerül a vállalat felhőjébe későbbi használatra.

Ezt a projektet a Herzliya interdiszciplináris Központ (IDC) Media Innovation Lab (MiLab) négy diákja tervezte: Shahar Agassy, Eden Bar-Tov, Gal Eshchar és Gad Stern. Zvika Markfeld, Netta Ofer és Michal Leschinsky közreműködésével, valamint Noa Morag és Oren Zuckerman útmutatásával.

köszönöm Tom Granotnak, hogy létrehozott egy nagyszerű utasítást, amely segített megtanulni, hogyan kell néhány dolgot megvalósítani (az itt leírt lépések némelyike ennek a nagyszerű utasításnak a mintájára készült).

Kellékek

  • 3d nyomtató
  • ESP8266
  • 7 gomb
  • 8X8 LED mátrix
  • WS2812B LED csík
  • I2S erősítő
  • Női 1/8 "(3,5 mm) 4 pólusú audio jack
  • 4X 1K ellenállás
  • 1X3K ellenállás

1. lépés: A folyamat megértése

Az áramlás megértése
Az áramlás megértése
Az áramlás megértése
Az áramlás megértése

Ebben a projektben néhány problémát próbáltunk megoldani:

  1. Hogyan tehetjük online elérhetővé, hogy a játékosok egyszerre játszhassanak?
  2. Hogyan kerülhetjük meg az internetes késleltetéseket és teremthetünk zökkenőmentes élményt?
  3. Hogyan tehetjük jóvá a zenét még a zenei háttér nélküli emberek számára is?

A zene időzítése és sorosítása

Az első probléma megoldása érdekében megvizsgáltuk a MIDI protokollt, és megpróbáltuk használni, de láttuk, hogy ez robusztusabb, mint amire valójában szükségünk volt, és valóban le akartuk egyszerűsíteni, hogy meg tudjuk építeni az első működő prototípust. Így inspirációt merítettünk a MIDI-ből, és a zenei hurkot számokkal (0-5-ször) reprezentáltuk a játékosok hurkok méretének idejével (a zenei matematikát később elmagyarázzuk).

A zenében a ritmusokat zenei sávokra osztottuk. Alapvetően minden sáv egy kis idejű szegmens, amelyet a 4/4 (azaz 4 ütés egy zenei sávban) használatához választunk - ez a leggyakoribb.

Ezután minden ütemet 4 mintavételi ablakra osztanak fel, így minden lejátszott hang automatikusan egy jó pozícióba kerül, és lehetővé teszi számunkra, hogy egy dalt a szervernek küldendő számsorként ábrázoljunk.

Annak érdekében, hogy barátságosak legyünk a zenei háttér nélküli játékosokkal, három dolgot tettünk:

  1. Korlátozza a gombok számát, hogy a játékos kevesebb lehetőségre összpontosítson.
  2. Ugyanazon a skálán vettünk fel hangokat, amelyek jól játszanak együtt, így nem lesz disszonancia hang.
  3. Minden egyes megnyomás a ritmus "ablakához" van beállítva, így a játékos zenéje a ritmustól idegen

Kommunikációs protokollok

Tehát miután megértettük a zene logikáját, hogyan kommunikálhatjuk azt a játékosok között?

ehhez az MQTT-t használjuk, egy közzététel-előfizetés hálózati protokollt, amely üzeneteket továbbít az eszközök között.

minden játékos két témára van feliratkozva: a ciklusra (a legfrissebb ciklus lekérésére) és a körre (szinkronizálás céljából megkapja az aktuális játékos azonosítóját).

Amikor a játékos befejezi a dallam lejátszását, megnyomja a FEL gombot, és a hurok (a frissített) elküldésre kerül az MQTT brókernek, amely visszaküldi azt a hurokcsatorna összes játékosának.

ez a ciklus "alvó" marad, amíg az aktuális ciklus lejátszása befejeződik, majd lecseréli. így átlátható lesz a játékos számára. mivel az új ciklus jelenleg a lejátszó eszközén helyben van mentve, nincs internetes késleltetés a zenéhez, így megoldottuk a második problémát.

2. lépés: A kiszolgáló beállítása - Ngrok

A kiszolgáló beállítása - Ngrok
A kiszolgáló beállítása - Ngrok
A kiszolgáló beállítása - Ngrok
A kiszolgáló beállítása - Ngrok

Az ngrok egy alagút szolgáltatás. Lehetővé teszi számunkra, hogy egy helyben futó szolgáltatást (esetünkben Node -RED) a külvilág elé tárjunk - anélkül, hogy gondot okozna a szerver beállítása vagy a DNS -rekordok kezelése. Egyszerűen futtassa a Node-RED-t a számítógépén, majd futtassa az ngrok-t ugyanazon a porton, amelyen a Node-RED fut.

Ennyi - kap egy URL -t, amellyel elérheti a Node -RED -t a világ bármely pontjáról, függetlenül attól, hogy milyen hálózathoz van csatlakoztatva.

Telepítés és konfigurálás

  1. Innen töltse le az ngrok -t az operációs rendszeréhez.
  2. Kövesse a letöltési oldal lépéseit a „Tűz felgyújtása” lépésig.
  3. A „Gyújtsd fel” lépésben cseréld le a 80 -at 1883 -ra - és a http -t tcp -re, ahogy az./ngrok tcp 1883 -ban van, attól függően, hogy
  4. mentse az URL -t és a portszámot (látható a képen), szükségünk lesz a későbbiekre.

3. lépés: A kiszolgáló beállítása - piros csomópont

A szerver beállítása - csomópont -piros
A szerver beállítása - csomópont -piros

A projekt szerverlogikája, a Node-RED egy vizuális programozási környezet, amely lehetővé teszi különféle szoftverek (és hardverek!) Csatlakoztatását.

Itt megteremtettük az összes játékos közötti kommunikáció logikáját (a hurkok megosztása és fogadása, valamint a fordulók koordinálása)

A Node-Red telepítése

kövesse az alábbi lépéseket a Node-RED folyamat feltöltéséhez a helyi számítógépre:

  1. A Node-RED megköveteli a Node.js fájlt, telepítse innen
  2. telepítse magát a Node-RED-et az itt található utasítások szerint.

Most, hogy a Node-RED telepítve van, futtassa a fenti lépésben leírtak szerint, és ellenőrizze, hogy üres vászonlapot lát. A https://127.0.0.1:1880 címen kell lennie

Most importálnia kell a projekthez használt folyamatot, itt megtalálhatja, és csak nyomja meg az import gombot, adja hozzá a JSON fájlt, majd nyomja meg a Telepítés gombot.

A Node-Red telepítése:

ha megnézi az ehhez a lépéshez csatolt képet, láthatja, hogy két fő "akciónk" van, egy áramkört kapunk az egyik játékosunktól, majd továbbítjuk az összes többi játékosnak. ezen kívül minden játékosnak közvetítjük az új kört. így a játék szinkronban marad.

4. lépés: A kiszolgáló beállítása - MQTT (Mosquitto)

A szerver beállítása - MQTT (Mosquitto)
A szerver beállítása - MQTT (Mosquitto)

Mivel a Node-RED nem rendelkezik saját MQTT-közvetítővel, és az MQTT-n keresztül kommunikálnunk kell érzékelőinkkel és aktivátorainkkal, ezért dedikált MQTT-közvetítőt fogunk használni. Mivel a Node-RED a Mosquitto-t ajánlja, ezt fogjuk használni. Itt talál néhány információt az MQTT -ről és arról, hogy miért használják gyakran az IoT -projektekben.

Telepítés és konfigurálás

  1. Töltse le innen a Mosquitto alkalmazást, és telepítse, mindezt az operációs rendszerének megfelelően.
  2. Általában az itt található utasításokat kell követnie a Node-RED és a Mosquitto csatlakoztatásához. Ha azonban a folyamatunkat használta, az már előre konfigurálva van az Ön számára. Mindaddig, amíg megfelelően telepíti az áramlást és a Mosquitrro -t, és a Mosquitto az 1883 -as porton fut (amelyen alapértelmezés szerint fut), addig működnie kell.
  3. Vegye figyelembe, hogy ez azt jelenti, hogy az MQTT bróker és a Node-RED szervere ugyanazon a gépen fut. Ez hasznos a rendszeren belüli kommunikáció egyszerűsítéséhez. További információért tekintse meg az alábbi megjegyzést.

Az MQTT forgalom figyelése

Az MQTTfx -et használtam a forgalom figyelésére, ez egy remek eszköz nagyon egyszerű GUI -val.

5. lépés: A kód

A kód
A kód

megtalálja a kódot a GitHub -ban (az összes adatfájllal és a config.h -val)

Függőségek:

Mielőtt betöltené a kódot az esp2866 -ba, telepítenie kell néhány könyvtárat:

  1. libmad-8266 (a zene dekódolása SPIFF-ből I2S-be)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Töltse fel a hangokat az ESP -re az SPIFF használatával:

  1. kövesse ezt a nagyszerű utasítást.
  2. adja hozzá az adatmappát a forráskód könyvtárhoz.
  3. Az Arduino IDE Eszközök alatt módosítsa a Flash méretét "4 MB -ra (FS: 3 MB TOA: ~ 512 KB)"
  4. Szintén az Eszközök alatt Nyomja meg az ESP2866 Vázlatadatok feltöltése gombot

A paraméterek beállítása:

ezután lépjen a config.h fájlba, és adja hozzá a szükséges adatokat, például a WIFI hitelesítő adatokat, valamint az ngrok URL -t és portot az előző lépésből (ellenőrizze a mellékelt fényképet).

p.s-Még hozzáadtam egy automatikus csatlakozás funkciót, amely segít beállítani a WIFI- és ngrok-adatokat okostelefonjáról, mivel ez csak a koncepció első bizonyítéka volt, szeretném egyszer hozzáadni.

Állítsa be a kívánt játékosmennyiséget (ez a játék 2-3 játékos számára működik a legjobban, és a dobozból kirakva számos hangot tartalmaz 2 játékos számára). de könnyen beállítható többre:

minden játékoshoz adjon hozzá egy másik folyamatot a csomópont vörösben, hogy cikket tegyen közzé egy felhasználóspecifikus témában.

továbbá szerkesztheti a zenei hangzást úgy, hogy ezt a tömböt egyéni hangjaira vágja:

itt 3 féle hangszert láthat (Chrods a 0 játékosnak, Lead az 1 játékosnak és Bass a 2 játékosnak)

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"};

6. lépés: Nyomtassa ki a 3D modellt

Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt
Nyomtassa ki a 3D modellt

Első lépésként töltse le és nyomtassa ki az STL -t.

a támaszok eltávolítása és egy kis csiszolás után (a nyomtató felbontásától függően)

festeni a kívánt színre

7. lépés: Összeszerelés és hegesztés

Összeszerelés és hegesztés
Összeszerelés és hegesztés

Tehát alapvetően itt történik az igazi varázslat.

követheti ezeket a rajzokat, és mindent összehegeszthet.

ne feledje, hogy megváltoztathatja a PIN -kódok helyzetét, csak ne felejtse el megváltoztatni a kódban is.

az A0 és az I2S a helyén van rögzítve:

mivel az A0 az ellenálláshídra vonatkozik (az áramkülönbséget használjuk, hogy megtudjuk, melyik gombot nyomtuk meg az 5 -ből - hasonlóan ehhez az utasításhoz.

az I2S rendelkezik egy speciális kódolással, amelyet itt talál

8. lépés: Játssz néhány hurkot barátaiddal

Ajánlott: