Mündəricat:

Melodiya: 8 addım (şəkillərlə)
Melodiya: 8 addım (şəkillərlə)

Video: Melodiya: 8 addım (şəkillərlə)

Video: Melodiya: 8 addım (şəkillərlə)
Video: Beyni sakitləşdirib yuxu gətirən yağış səsi və melodiya birlikdə 👼 2024, Iyul
Anonim
Image
Image
Axını anlamaq
Axını anlamaq

Evdən işləməyə imkan verən bir çox üstünlük və texnoloji həllə yanaşı, iş yoldaşları arasında həyat dəstəyi hazırlamaq və yaratmaq çətinliyi hələ də qalmaqdadır. MELODY, birgə qısa musiqi tıxacları yaratmağa imkan verən rəqəmsal-fiziki bir cihazdır. İş yoldaşları vaxtı koordinasiya edir və cihaz növbə və fərqli təsadüfi səslər ilə bir sıxışma seansı qurur. Birinci iştirakçı müəyyən bir ritm təyin edir, bundan sonra hər bir iştirakçı müəyyən edilmiş ritmə uyğun gələn öz musiqi hissəsini əlavə edir. Heç bir musiqi mənşəyi olmayan istifadəçilər üçün işini asanlaşdırmaq üçün proqram, kliklərini seçərək uyğun ritmə uyğunlaşdıraraq tempi saxlamağa kömək edir. Sessiya, bütün iştirakçılar hissələrini yazmağı bitirdikdən təxminən 3 dəqiqə sonra başa çatır.

Bu necə işləyir?

Melodiya, MQTT protokolu üzərindən Node-Red serveri ilə əlaqə quran ESP2866 aparatına əsaslanır. Cihaz, oyunçunun qeydlərini serverə və serverdən digər oyunçulara göndərilən bir sıra simvollara çevirir. Bu, hər kəsin şəbəkə bağlantısından kəsilmədən melodiyanı çalmasına və eşitməsinə imkan verir.

Melodiya iki əsas vizual göstəriciyə malikdir. Birincisi, oyunçunun Loopun nə vaxt başladığını və nə vaxt bitdiyini və oyunçunun növbəsinin olub olmadığını bildirən bir LED şeridi. İkincisi, məhsulun mərkəzində mövcud melodiyanı əyani şəkildə göstərmək üçün istifadə olunan LED displeydir. 3 -dən 1 -ə qədər bir geri sayma, oyunun başlamasını göstərir və vaxt ekranı istifadəçini qrupun Melodiyasına nə vaxt və necə töhfə vermək istədiyini istiqamətləndirir. Gələcək istifadə üçün qeyd avtomatik olaraq şirkətin buludunda saxlanılır.

Bu layihə, Herzliya (IDC) fənlərarası Mərkəzdəki Media innovasiya laboratoriyasında (MiLab) dörd tələbə tərəfindən hazırlanmışdır: Shahar Agassy, Eden Bar-Tov, Gal Eshchar və Gad Stern. Zvika Markfeld, Netta Ofer və Michal Leschinsky və Noa Morag və Oren Zuckermanın rəhbərliyi ilə.

Buradakı bəzi şeyləri necə həyata keçirəcəyimi öyrənməyimə kömək edən böyük bir təlimat verən yaratdığına görə Tom Granot'a təşəkkür edirəm (buradakı bəzi addımlar bu möhtəşəm dərsdən sonra modelləşdirilmişdir).

Təchizat

  • 3D printer
  • ESP8266
  • 7 düymə
  • 8X8 LED matris
  • WS2812B LED şeridi
  • I2S gücləndiricisi
  • Dişi 1/8 "(3.5mm) 4 Qütblü Audio Jak
  • 4X 1K müqavimət
  • 1X3K müqavimət

Addım 1: Axını anlayın

Axını anlamaq
Axını anlamaq
Axını anlamaq
Axını anlamaq

Bu layihədə bəzi problemləri həll etməyə çalışdıq:

  1. Oyunçuların eyni zamanda oynaya bilməsi üçün bunu necə onlayn edə bilərik?
  2. İnternet gecikmələrini necə gəzə bilərik və problemsiz bir təcrübə yarada bilərik?
  3. Musiqini musiqi təhsili olmayan insanlar üçün də necə yaxşı səsləndirə bilərik?

Musiqinin vaxtı və seriallaşdırılması

İlk problemi həll etmək üçün MIDI protokoluna baxdıq və ondan istifadə etməyə çalışdıq, amma əslində ehtiyac duyduğumuzdan daha möhkəm olduğunu gördük və həqiqətən də ilk iş prototipini qura bilmək üçün bunu sadə etmək istədik. Beləliklə, MIDI-dən ilham aldıq və musiqi döngəmizi oyunçuların döngə ölçüsündən (0-5 arası) bir sıra simlər ilə təmsil etdik (bütün musiqi riyaziyyatını daha sonra izah edəcəyik).

Musiqidə ritmləri musiqi çubuqlarına ayırırıq. Hər bir çubuq əsasən 4/4 (musiqi çubuğunda 4 vuruş deməkdir) istifadə etməyi seçdiyimiz kiçik bir seqmentdir - ən çox yayılmış.

Hər bir vuruş daha sonra 4 nümunə götürmə pəncərəsinə bölünür, belə ki, ifa olunan hər bir not avtomatik olaraq yaxşı bir mövqeyə uyğunlaşdırılacaq və eyni zamanda bir mahnını serverə göndəriləcək nömrələr simli kimi təqdim etməyimizə imkan verəcək.

Musiqi təhsili olmayan oyunçularla dost olmaq üçün üç şeyi etdik:

  1. Oyunçunu daha az seçimə yönəltmək üçün düymələrin sayını məhdudlaşdırın.
  2. Birlikdə yaxşı oynayan eyni ölçülü notlar seçdik ki, heç bir dissonans səsi olmayacaq.
  3. Hər mətbuat ritmin "pəncərəsinə" qoyulur, beləliklə oyunçu musiqisini ritmə yad edir

Ünsiyyət protokolları

Musiqinin arxasındakı məntiqi başa düşdükdən sonra bunu oyunçularımız arasında necə çatdıra bilərik?

Bunun üçün cihazlar arasında mesaj ötürən bir yayım-abunə şəbəkə protokolu olan MQTT-dən istifadə edirik.

hər oyunçu iki mövzuya abunə olur: döngə (ən son döngəni əldə et) və növbə (sinxronizasiya məqsədi ilə cari oyunçunun idini alır).

Öz növbəsində, bir oyunçu melodiyanı bitirdikdə, YUKARI düyməsini basacaq və döngə (yenilənmiş) MQTT brokerinə göndəriləcək və onu döngə kanalındakı bütün oyunçulara ötürəcək.

bu döngə, mövcud döngə çalınana qədər "hərəkətsiz" qalacaq və sonra onu əvəz edəcək. beləliklə oyunçu üçün şəffaf olacaq. yeni hal hazırda pleyer cihazında yerli olaraq saxlanıldığından musiqi üçün internet gecikməsi yoxdur və buna görə də ikinci məsələni həll etdik.

Addım 2: Serverin qurulması - Ngrok

Serverin qurulması - Ngrok
Serverin qurulması - Ngrok
Serverin qurulması - Ngrok
Serverin qurulması - Ngrok

ngrok bir tunel xidmətidir. Yerli olaraq işləyən bir xidməti (bizim vəziyyətimizdə Node -RED) xarici dünyaya açmağa imkan verir - server qurmaq və ya DNS qeydləri ilə məşğul olmaq. Sadəcə kompüterinizdə Node-RED-i işə salırsınız və sonra Ngode-RED-in işlədiyi eyni portda ngrok-u işə salırsınız.

Budur - Node -RED -ə hansı şəbəkəyə qoşulduğundan asılı olmayaraq dünyanın hər yerindən daxil olmaq üçün istifadə edə biləcəyiniz bir URL əldə edəcəksiniz.

Quraşdırma və Konfiqurasiya

  1. Əməliyyat sisteminiz üçün ngrok proqramını buradan yükləyin.
  2. Yükləmə səhifəsindəki "Yanğın söndür" addımına qədər olan addımı izləyin.
  3. "Fire it up step" də, 80 -ni 1883 -ə və http -nı,./ngrok tcp 1883 -də olduğu kimi tcp ilə dəyişdirin.
  4. URL və port nömrəsini qeyd edin (şəkildə görüldü), daha sonra ehtiyacımız olacaq.

Addım 3: Serverin Qurulması - Node -Red

Serverin qurulması - Node -Red
Serverin qurulması - Node -Red

Layihənin Server məntiqi, Node-RED, müxtəlif proqram təminatlarını (və avadanlıqları!) Bağlamağa imkan verən vizual proqramlaşdırma mühitidir.

Burada bütün oyunçular arasındakı ünsiyyət məntiqini qurduq (döngələri paylaşmaq və almaq və dönüşləri əlaqələndirmək)

Node-Red quraşdırılması

Node-RED axını yerli kompüterinizə yükləmək üçün aşağıdakı adımları yerinə yetirin:

  1. Node-RED Node.js tələb edir, buradan quraşdırın
  2. Buradakı təlimatları istifadə edərək Node-RED-in özünü quraşdırın.

İndi Node-RED quraşdırıldıqdan sonra yuxarıdakı addımdakı təlimatları istifadə edərək işə salın və boş bir kətan səhifəsi görə biləcəyinizi təsdiqləyin. Http://127.0.0.1:1880 ünvanında yerləşməlidir

İndi bu layihə üçün istifadə etdiyimiz axını idxal etməlisiniz, burada tapa bilərsiniz və JSON faylını əlavə et və Deploy düyməsini basın.

Node-Red quraşdırılması:

Bu addıma əlavə olunan görüntüyə baxsanız, 2 əsas "hərəkətimiz" olduğunu görə bilərik, oyunçularımızdan birindən cari bir döngə alırıq və sonra onu digər oyunçulara ötürürük. əlavə olaraq, bütün oyunçulara yeni növbə yayımlayırıq. beləliklə oyun sinxron olaraq qalır.

Addım 4: Serverin qurulması - MQTT (Mosquitto)

Serverin qurulması - MQTT (Mosquitto)
Serverin qurulması - MQTT (Mosquitto)

Node-RED-in öz MQTT brokeri olmadığı üçün MQTT üzərindən sensorlar və aktivatorlarımızla əlaqə saxlamalı olacağıq, xüsusi bir MQTT brokerindən istifadə edəcəyik. Node-RED Mosquitto-nu tövsiyə etdiyi üçün istifadə edəcəyimiz budur. MQTT haqqında və IoT layihələrində niyə tez -tez istifadə edildiyi haqqında bəzi məlumatlar üçün bura baxın.

Quraşdırma və Konfiqurasiya

  1. Buradan Mosquitto'yu yükləyin və hamısını əməliyyat sisteminizə uyğun olaraq quraşdırın.
  2. Normalda, Node-RED-in Mosquitto'ya qoşulması üçün buradakı təlimatları izləməlisiniz. Ancaq axınımızı istifadə etmisinizsə, artıq sizin üçün əvvəlcədən qurulmuşdur. Axını və Mosquitrro -nu düzgün qurduğunuz müddətdə və Mosquitto 1883 portunda (standart olaraq işlədiyi) işlədikcə qutudan çıxmalıdır.
  3. Qeyd edək ki, bu, MQTT brokerinin və Node-RED serverinizin eyni maşında işlədiyi anlamına gəlir. Bu sistem daxilində ünsiyyəti asanlaşdırmaq üçün faydalıdır. Ətraflı məlumat üçün aşağıdakı nota baxın.

MQTT trafikinin monitorinqi

Trafiği izləmək üçün MQTTfx istifadə etdim, çox sadə bir GUI ilə əla bir vasitədir.

Addım 5: Kod

Kod
Kod

kodu GitHub -da tapa bilərsiniz (bütün məlumat faylları və config.h ilə)

Asılılıqlar:

kodu esp2866 -ya yükləməzdən əvvəl bir neçə kitabxana qurmalısınız:

  1. libmad-8266 (musiqini SPIFF-dən və I2S-ə deşifr edin)
  2. EspMQTTClient
  3. ESP8266 Wi -Fi
  4. Adafruit_NeoPixel

Səsləri SPIFF istifadə edərək ESP -ə yükləyin:

  1. bu böyük təlimatı izləyin.
  2. məlumat qovluğunu mənbə kodu qovluğuna əlavə edin.
  3. Alətlər altındakı Arduino IDE -də Flash ölçüsünü "4MB (FS: 3MB TOA: ~ 512KB)" olaraq dəyişdirin.
  4. Həm də Alətlər altında ESP2866 Sketch Məlumat Yükləmə düyməsini basın

Parametrlərin təyin edilməsi:

bundan sonra config.h faylına gedin və əvvəlki addımdakı WIFI etimadnaməsi, ngrok URL və port kimi lazımi məlumatları əlavə edin (istinad üçün əlavə olunmuş fotoşəkili yoxlayın).

p.s-Ağıllı telefonunuzdan WIFI və ngrok məlumatlarını təyin etməyinizə kömək etmək üçün hələ bir avtomatik əlaqə xüsusiyyəti əlavə etdim, çünki bu, konsepsiyanın ilk sübutudur, bir gün əlavə etmək istərdim.

İstədiyiniz oyunçu miqdarını təyin edin (bu oyun 2-3 oyunçu üçün daha yaxşı işləyir və qutudan kənarda 2 oyunçu üçün bir sıra səslər yüklənir). lakin daha çox şey üçün asanlıqla tənzimlənə bilər:

hər bir oyunçu üçün istifadəçi üçün xüsusi bir mövzu altında bir döngə dərc etmək üçün node-red başqa bir axını əlavə edin.

Ayrıca, bu sıra xüsusi səslərinizə uyğunlaşdıraraq musiqi səsini düzəldə bilərsiniz:

Burada 3 növ alət görə bilərsiniz (0 oyunçu üçün Chrods, 1 -ci oyunçu üçün qurğuşun və 2 -ci oyunçu üçün Bass)

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

Addım 6: 3D Modelini çap edin

3D modeli çap edin
3D modeli çap edin
3D modeli çap edin
3D modeli çap edin
3D modeli çap edin
3D modeli çap edin
3D modeli çap edin
3D modeli çap edin

İlk addım üçün STL yükləyin və çap edin.

dayaqları çıxardıqdan və bir az zımpara etdikdən sonra (printerin qətnaməsindən asılı olaraq)

istədiyiniz rəngə boyayın

Addım 7: Montaj və Qaynaq

Qaynaq və montaj
Qaynaq və montaj

Əslində burada əsl sehrin baş verdiyi yerdir.

bu sxemləri izləyə və hər şeyi birlikdə qaynaqlaya bilərsiniz.

PİN -lərin yerini dəyişə biləcəyinizi unutmayın, sadəcə kodda dəyişdirməyi unutmayın.

A0 və I2S olduqca sabitdir:

A0 rezistor körpüsü üçün olduğu üçün (bu Təlimatlara bənzər 5 düymədən hansı düymənin basıldığını bilmək üçün cərəyandakı fərqdən istifadə edirik.

I2S -in xüsusi bir kodlaşdırması var, burada tapa bilərsiniz

Addım 8: Dostlarınızla bir neçə döngə oynayın

Tövsiyə: