Мазмұны:

Әуен: 8 қадам (суреттермен)
Әуен: 8 қадам (суреттермен)

Бейне: Әуен: 8 қадам (суреттермен)

Бейне: Әуен: 8 қадам (суреттермен)
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Image
Image
Ағынды түсіну
Ағынды түсіну

Үйде жұмыс жасауға мүмкіндік беретін көптеген артықшылықтар мен технологиялық шешімдермен қатар, әріптестер арасында өмірлік қолдауды қалыптастыру мен құру қиындығы сақталуда. MELODY-бұл қысқа музыкалық джемдер құруға мүмкіндік беретін сандық-физикалық құрылғы. Әріптестер уақытты үйлестіреді, ал құрылғы бұрылыстар мен әр түрлі кездейсоқ дыбыстармен кептелу сеансын орнатады. Бірінші қатысушы белгілі бір ырғақты қояды, содан кейін әр қатысушы белгіленген ырғаққа сәйкес келетін өзінің музыкалық бөлімін қосады. Музыкалық білімі жоқ пайдаланушыларға жеңілдету үшін бағдарламалық жасақтама олардың шертулерін іріктеп алу және сәйкес ырғаққа бейімделу арқылы жылдамдықты сақтауға көмектеседі. Сеанс барлық қатысушылар өз бөлігін жазып алғаннан кейін шамамен 3 минуттан кейін аяқталады.

Бұл қалай жұмыс істейді?

Әуен ESP2866 аппараттық құралына негізделген, ол MQTT протоколы бойынша Node-Red серверімен байланысады. Құрылғы ойыншының жазбаларын серверге және серверден басқа ойыншыларға жіберілетін кейіпкерлер қатарына аударады. Бұл барлығына әуенді желіге қосылусыз үзіліссіз ойнауға және естуге мүмкіндік береді.

Мелодияда екі негізгі визуалды көрсеткіш бар. Біріншісі - жарық диодты жолақ, ол ойыншыға Loop басталатын және аяқталатын уақытты білуге мүмкіндік береді және ойыншыға кезек келетінін көрсетеді. Екіншісі - өнімнің ортасындағы жарықдиодты дисплей, ол бар әуенді визуалды түрде көрсету үшін қолданылады. 3 -тен 1 -ге дейінгі кері санақ ойнауды бастауды көрсетеді және уақыт дисплейі пайдаланушыға топтың әуеніне қашан және қалай үлес қосқысы келетінін көрсетеді. Жазба болашақта пайдалану үшін автоматты түрде компанияның бұлтына сақталады.

Бұл жобаны Herzliya (IDC) пәнаралық орталығындағы Media инновациялық зертханасының (MiLab) төрт студенті жасаған: Шахар Агасси, Эден Бар-Тов, Гал Эшчар және Гад Штерн. Звика Маркфелд, Нетта Офер мен Михал Лечинскийдің көмегімен және Ноа Мораг пен Орен Цукерманның басшылығымен.

Том Гранотқа маған мұнда кейбір нәрселерді қалай жүзеге асыруды үйренуге көмектесетін керемет нұсқаулық құрғаны үшін рахмет (мұндағы кейбір қадамдар осы керемет нұсқаулықтан үлгі алады).

Жабдықтар

  • 3D принтері
  • ESP8266
  • 7 түйме
  • 8X8 жарықдиодты матрица
  • WS2812B жарық диодты жолағы
  • I2S күшейткіші
  • Әйел 1/8 дюйм (3,5 мм) 4 полюсті аудио ұяшығы
  • 4X 1K резисторы
  • 1X3K резисторы

1 -қадам: Ағынды түсіну

Ағынды түсіну
Ағынды түсіну
Ағынды түсіну
Ағынды түсіну

Бұл жобада біз кейбір мәселелерді шешуге тырыстық:

  1. Ойыншылар бір уақытта ойнай алатындай, біз оны онлайн режимінде қалай жасай аламыз?
  2. Қалай біз интернет кідірістерін айналып өтіп, үздіксіз тәжірибе жасай аламыз?
  3. Музыкалық білімі жоқ адамдарға да музыканы қалай жақсы шығара аламыз?

Музыканың уақыты мен сериялануы

Бірінші мәселені шешу үшін біз MIDI протоколына қарадық және оны қолдануға тырыстық, бірақ біз оның неғұрлым берік екенін көрдік, біз шынымен қажет ететін нәрсені жасадық, сондықтан біз бірінші жұмыс прототипін құрастыру үшін оны қарапайым еткіміз келді. Осылайша, біз MIDI-ден шабыт алып, музыкалық циклды ойыншылардың циклінен (0-5-ке дейін) сандар түрінде ұсындық (біз барлық музыкалық математиканы кейінірек түсіндіреміз).

Музыкада біз ырғақты музыкалық барларға бөлдік. Әр жолақ - бұл кішкене уақыт сегменті, біз 4/4 (музыкалық барда 4 соққыны білдіреді) қолдануды таңдаймыз - ең жиі кездесетіні.

Әр соққы 4 іріктеу терезесіне бөлінеді, осылайша ойнатылған әр жазба автоматты түрде жақсы орынға реттеледі, сонымен қатар бізге әнді серверге жіберілетін сандар тізбегі ретінде ұсынуға мүмкіндік береді.

Музыкалық білімі жоқ ойыншыларға мейірімді болу үшін біз үш нәрсені жасадық:

  1. Ойнатқышты аз опцияларға шоғырландыру үшін кілттер санын шектеңіз.
  2. Біз бір масштабта жақсы ойнайтын жазбаларды таңдадық, сондықтан диссонанс дыбысы болмайды.
  3. Әр басу ритмнің «терезесіне» орнатылады, осылайша ойыншы музыкасын ырғаққа жат етеді

Байланыс хаттамалары

Музыканың логикасын түсінгеннен кейін, оны ойыншылар арасында қалай жеткізуге болады?

ол үшін біз MQTT-құрылғылар арасында хабарламаларды тасымалдайтын жариялауға жазылу желісінің протоколын қолданамыз.

әр ойыншы екі тақырыпқа жазылады: цикл (ең соңғы циклды алу) және бұрылыс (синхрондау мақсатында ағымдағы ойнатқыштың идентификаторын алады).

Өз кезегінде, ойыншы әуенді ойнауды аяқтаған кезде, ол UP түймесін басады, ал цикл (жаңартылған) MQTT брокеріне жіберіледі, ол оны циклдегі барлық ойыншыларға жібереді.

бұл цикл ағымдағы цикл ойнағанға дейін «ұйықтап» қалады, содан кейін оны ауыстырады. бұл ойыншы үшін ашық болады. жаңа цикл қазіргі уақытта ойнатқыш құрылғысында жергілікті түрде сақталғандықтан, музыканың интернетке кідірісі жоқ, сондықтан біз екінші мәселені шештік.

2 -қадам: Серверді орнату - Ngrok

Серверді орнату - Ngrok
Серверді орнату - Ngrok
Серверді орнату - Ngrok
Серверді орнату - Ngrok

ngrok - бұл туннельдік қызмет. Бұл бізге жергілікті жұмыс істейтін қызметті (біздің жағдайда, Node -RED) сыртқы әлемге шығаруға мүмкіндік береді - серверді орнату немесе DNS жазбаларымен жұмыс істеу қиындықсыз. Сіз жай ғана Node-RED компьютерінде іске қосасыз, содан кейін ngrok Node-RED жұмыс істейтін портта іске қосасыз.

Бұл - сіз Node -RED -ке әлемнің кез келген нүктесінен қатынасу үшін пайдалануға болатын URL аласыз, ол қандай желіге қосылғанына қарамастан.

Орнату және конфигурация

  1. Осы жерден операциялық жүйеге ngrok жүктеп алыңыз.
  2. Жүктеу бетіндегі қадамды орындаңыз, оны «отқа түсіру» қадамына дейін.
  3. «Жану қадамында» 80 -ді 1883 -ке ауыстырыңыз - және http -ді tcp -ге,./ngrok tcp 1883 -ге сәйкес.
  4. URL және порт нөмірін сақтаңыз (суретте көрсетілген) бізге кейінірек қажет болады.

3 -қадам: Серверді орнату - түйін -қызыл

Серверді орнату - түйін -қызыл
Серверді орнату - түйін -қызыл

Жобаның серверлік логикасы, Node-RED-бұл әр түрлі бағдарламалық қамтамасыз етуді (және аппараттық құралдарды!) Қосуға мүмкіндік беретін визуалды бағдарламалау ортасы.

Мұнда біз барлық ойыншылар арасындағы қарым -қатынастың логикасын жасадық (ілмектерді бөлісу және алу, бұрылыстарды үйлестіру)

Қызыл түйіннің орнатылуы

Жергілікті компьютерге Node-RED ағынын жүктеу үшін келесі қадамдарды орындаңыз:

  1. Node-RED Node.js талап етеді, оны осы жерден орнатыңыз
  2. Node-RED-ді осы жерде берілген нұсқауларды қолданып орнатыңыз.

Енді сізде Node-RED орнатылған болса, оны жоғарыдағы қадамдар бойынша орындаңыз және растаңыз, кенептің бос бетін көре аласыз. Ол https://127.0.0.1:1880 мекенжайында орналасуы керек

Енді сізге осы жоба үшін қолданылған ағынды импорттау қажет болады, сіз оны осы жерден таба аласыз және импорттауды басып, JSON файлын қосып, Deploy түймесін басыңыз.

Қызыл түйіннің орнатылуы:

егер сіз осы қадамға бекітілген суретке қарасаңыз, бізде 2 негізгі «әрекет» бар екенін көре аласыз, біз ойыншылардың бірінен ағымдағы циклды аламыз, содан кейін біз оны басқа ойыншыларға жібереміз. Сонымен қатар, біз барлық ойыншыларға жаңа кезеңді таратамыз. сондықтан ойын синхронда болады.

4 -қадам: Серверді орнату - MQTT (Mosquitto)

Серверді орнату - MQTT (Mosquitto)
Серверді орнату - MQTT (Mosquitto)

Node-RED-те өзінің MQTT брокері болмағандықтан, біз MQTT арқылы сенсорлармен және активаторлармен байланысуымыз қажет болғандықтан, біз арнайы MQTT брокерін қолданамыз. Node-RED Mosquitto ұсынғандықтан, бұл біз қолданатын құрал. MQTT туралы және оның IoT жобаларында жиі қолданылуы туралы кейбір ақпаратты мына жерден қараңыз.

Орнату және конфигурация

  1. Mosquitto -ны осы жерден жүктеп алып, оны операциялық жүйеге сәйкес орнатыңыз.
  2. Әдетте, Node-RED-ті Mosquitto-ға қосу үшін мұнда берілген нұсқауларды орындау қажет. Алайда, егер сіз біздің ағынды қолдансаңыз, ол сіз үшін алдын ала конфигурацияланған. Егер сіз ағын мен Mosquitrro -ны дұрыс орнатсаңыз және Mosquitto 1883 портында жұмыс жасаса (ол әдепкі бойынша жұмыс істейді), ол қораптан шығуы керек.
  3. Бұл MQTT брокері мен Node-RED сервері бір машинада жұмыс істейтінін білдіреді. Бұл жүйе ішіндегі байланысты жеңілдету үшін пайдалы. Қосымша ақпарат алу үшін төмендегі жазбаны қараңыз.

MQTT трафигін бақылау

Мен трафикті бақылау үшін MQTTfx қолдандым, бұл өте қарапайым GUI бар тамаша құрал.

5 -қадам: Кодекс

Кодекс
Кодекс

сіз кодты GitHub -тан таба аласыз (барлық деректер файлдары мен config.h)

Тәуелділіктер:

esp2866 кодын жүктемес бұрын сізге бірнеше кітапхананы орнату қажет:

  1. libmad-8266 (музыканы SPIFF және I2S форматында декодтау)
  2. EspMQTTClient
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Дыбыстарды ESP -ке SPIFF көмегімен жүктеңіз:

  1. осы үлкен нұсқаулықты орындаңыз.
  2. деректер қалтасын бастапқы код каталогына қосыңыз.
  3. Arduino IDE -де Tools астында Flash өлшемін «4MB (FS: 3MB TOA: ~ 512KB)» етіп өзгертіңіз.
  4. Сонымен қатар, құралдар астында ESP2866 деректерді жүктеудің эскизін басыңыз

Параметрлерді орнату:

Содан кейін config.h файлына өтіңіз және WIFI тіркелгі деректері мен ngrok URL және алдыңғы қадамдағы порт сияқты қажетті деректерді қосыңыз (сілтеме үшін берілген суретті тексеріңіз).

p.s-мен әлі де смартфоннан WIFI мен ngrok деректерін орнатуға көмектесу үшін автоматты қосылу мүмкіндігін қостым, себебі бұл тұжырымдаманың алғашқы дәлелі болғандықтан, мен оны бір күнде қосқым келеді.

Қалаған ойыншының мөлшерін орнатыңыз (бұл ойын 2-3 ойыншы үшін жақсы жұмыс істейді және қораптан 2 ойыншыға арналған дыбыстар жиыны жүктеледі). бірақ басқалары үшін оңай реттеуге болады:

әрбір ойыншы үшін пайдаланушыға арналған тақырып бойынша циклді жариялау үшін қызыл-қызыл түске басқа ағын қосыңыз.

сонымен қатар сіз музыкалық дыбысты осы массивті өзіңіздің жеке дыбыстарыңызға бұру арқылы өңдей аласыз:

мұнда сіз аспаптардың 3 түрін көре аласыз (0 -ойыншыға арналған Chrods, 1 -ойыншыға жетекші және 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»};

6 -қадам: 3D моделін басып шығарыңыз

3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз
3D моделін басып шығарыңыз

Бірінші қадам үшін STL жүктеп алып, оларды басып шығарыңыз.

тіректерді алып тастағаннан кейін және сәл тегістеуден кейін (принтердің ажыратымдылығына байланысты)

оны қалаған түске бояңыз

7 -қадам: монтаждау және дәнекерлеу

Жинау және дәнекерлеу
Жинау және дәнекерлеу

Міне, нағыз сиқыр осында болады.

Сіз осы схемаларды орындап, бәрін біріктіре аласыз.

PIN кодының орнын өзгертуге болатынын есте сақтаңыз, оны кодта өзгертуді ұмытпаңыз.

A0 және I2S орнында бекітілген:

өйткені A0 резисторлық көпірге арналған (біз осы нұсқаулыққа ұқсас 5 түймешіктің қай батырмасы басылғанын білу үшін ток айырмасын қолданамыз.

I2S -те арнайы кодтау бар, сіз оны осы жерден таба аласыз

8 -қадам: Достарыңызбен бірнеше цикл ойнаңыз

Ұсынылған: