Բովանդակություն:
- Պարագաներ
- Քայլ 1: Հասկանալով հոսքը
- Քայլ 2: Սերվերի կարգավորում - Ngrok
- Քայլ 3. Սերվերի կարգավորում - հանգույց -կարմիր
- Քայլ 4: Սերվերի կարգավորում - MQTT (Mosquitto)
- Քայլ 5: Կոդ
- Քայլ 6: Տպեք 3D մոդելը
- Քայլ 7: Հավաքում և եռակցում
- Քայլ 8: Խաղացեք որոշ օղակներ ձեր ընկերների հետ
Video: Մեղեդի ՝ 8 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Բազմաթիվ առավելությունների և տեխնոլոգիական լուծումների կողքին, որոնք թույլ են տալիս աշխատել տնից, գործընկերների միջև ձևավորելու և կյանքի աջակցություն ստեղծելու դժվարությունը մնում է: MELODY- ը թվային-ֆիզիկական սարք է, որը հնարավորություն է տալիս ստեղծել համատեղ կարճ երաժշտական խցանումներ: Գործընկերները համակարգում են ժամանակը, և սարքը սահմանում է շրջափակման հերթափոխ և տարբեր պատահական հնչյուններ: Առաջին մասնակիցը սահմանում է որոշակի ռիթմ, որից հետո յուրաքանչյուր մասնակից ավելացնում է սահմանված ռիթմին համապատասխան սեփական երաժշտական հատվածը: Առանց երաժշտական ֆոն չունեցող օգտվողների համար ավելի դյուրին դարձնելու համար ծրագրակազմն օգնում է նրանց պահել տեմպը ՝ նմուշառելով իրենց կտտոցները և հարմարեցվելով համապատասխան ռիթմին: Նիստը ավարտվում է մոտ 3 րոպե հետո, երբ բոլոր մասնակիցներն ավարտում են իրենց մասի ձայնագրումը:
Ինչպես է դա աշխատում?
Melody- ն հիմնված է ESP2866 սարքաշարի վրա, որը կապվում է Node-Red սերվերի հետ MQTT արձանագրության միջոցով: Սարքը նվագարկիչի գրառումները թարգմանում է մի շարք նիշերի, որոնք ուղարկվում են սերվերին, իսկ սերվերից հետ դեպի մյուս խաղացողները: Սա թույլ է տալիս բոլորին նվագել և լսել մեղեդին ՝ առանց ցանցային կապի ընդհատման:
Մեղեդին ունի երկու հիմնական տեսողական ցուցիչ: Առաջինը LED շերտ է, որը թույլ է տալիս խաղացողին իմանալ, թե երբ է սկսվում և երբ է ավարտվում Loop- ը և ցույց է տալիս, թե արդյոք հերթը խաղացողի հերթն է: Երկրորդը արտադրանքի կենտրոնում LED էկրան է, որն օգտագործվում է առկա մեղեդին տեսողականորեն ցուցադրելու համար: 3 -ից 1 -ի հետհաշվարկը ցույց է տալիս, որ պետք է սկսել խաղալ, և ժամերի ցուցադրումը օգտվողին ուղղորդում է, թե երբ և ինչպես է նա ցանկանում իր ներդրումն ունենալ խմբի Melody- ում: Ձայնագրությունը ավտոմատ կերպով պահվում է ընկերության ամպում ՝ հետագա օգտագործման համար:
Այս նախագիծը մշակվել է «Հերցլիա» միջառարկայական կենտրոնի Մեդիա նորարարական լաբորատորիայի (MiLab) չորս ուսանողների կողմից `Շահար Ագասիս, Էդեն Բար-Թով, Գալ Էշչար և Գադ Շտերն: Vվիկա Մարկֆելդի, Նետտա Օֆերի և Միխալ Լեշինսկու աջակցությամբ և Նոա Մորագի և Օրեն uckուկերմանի ղեկավարությամբ:
շնորհակալություն Թոմ Գրանոյին հիանալի հրահանգ ստեղծելու համար, որն ինձ օգնեց սովորել, թե ինչպես իրականացնել որոշ բաներ այստեղ (որոշ քայլեր այստեղ մոդելավորված են այս հիանալի ուսուցանող օրինակով):
Պարագաներ
- 3D տպիչ
- ESP8266
- 7 կոճակ
- 8X8 LED մատրիցա
- WS2812B LED ժապավեն
- I2S ուժեղացուցիչ
- Իգական 1/8 դյույմ (3,5 մմ) 4 բևեռ աուդիո խցիկ
- 4X 1K դիմադրություն
- 1X3K դիմադրություն
Քայլ 1: Հասկանալով հոսքը
Այս նախագծում մենք փորձեցինք լուծել որոշ խնդիրներ
- Ինչպե՞ս կարող ենք այն դարձնել առցանց, որպեսզի խաղացողները կարողանան միաժամանակ խաղալ:
- Ինչպե՞ս կարող ենք շրջանցել ինտերնետի ուշացումները և ստեղծել անթերի փորձ:
- Ինչպե՞ս կարող ենք երաժշտությունը լավ հնչեցնել նույնիսկ այն մարդկանց համար, ովքեր չունեն երաժշտական ծագում:
Երաժշտության ժամանակը և սերիալացումը
Առաջին հարցը լուծելու համար մենք նայեցինք MIDI արձանագրությանը և փորձեցինք օգտագործել այն, բայց տեսանք, որ այն ավելի ամուր է, քան այն, ինչ մեզ իրականում անհրաժեշտ էր: Մենք իսկապես ցանկանում էինք այն պարզեցնել, որպեսզի կարողանանք կառուցել առաջին աշխատող նախատիպը: Այսպիսով, մենք ներշնչանք ստացանք MIDI- ից և մեր երաժշտական հանգույցը ներկայացրեցինք մի շարք թվերով (0-5-ից), քանի որ օղակները չափում էին նվագարկիչների ժամանակը (երաժշտական բոլոր մաթեմատիկան կբացատրենք ավելի ուշ):
Երաժշտության մեջ մենք ռիթմերը բաժանեցինք երաժշտական շերտերի: Յուրաքանչյուր բար հիմնականում փոքր ժամանակի հատված է, որը մենք ընտրում ենք օգտագործել 4/4 (նկատի ունի երաժշտական բարում 4 հարված) - ամենատարածվածը:
Յուրաքանչյուր ռիթմ այնուհետև բաժանվում է 4 նմուշառման պատուհանների, այնպես որ յուրաքանչյուր նվագած նոտա ինքնաբերաբար կհամապատասխանի գ լավ դիրքի և նաև թույլ կտա մեզ ներկայացնել երգը որպես թվերի տող `սերվեր ուղարկելու համար:
Երաժշտական ֆոն չունեցող խաղացողների հետ ընկերություն անելու համար մենք երեք բան արեցինք.
- Սահմանափակեք ստեղների քանակը, որպեսզի խաղացողը կենտրոնանա ավելի քիչ տարբերակների վրա:
- Մենք ընտրեցինք նույն մասշտաբի նոտաներ, որոնք լավ են նվագում միասին, այնպես որ անհամաձայնության ձայն չի լինի:
- Յուրաքանչյուր սեղմում դրված է ռիթմի «պատուհանի» վրա ՝ այդպիսով նվագարկողի երաժշտությունը խորթ դարձնելով ռիթմին
Հաղորդակցության արձանագրություններ
Այսպիսով, երաժշտության հիմքում ընկած տրամաբանությունից հետո, ինչպե՞ս կարող ենք այն հաղորդակցվել մեր նվագարկիչների միջև:
դրա համար մենք օգտագործում ենք MQTT ՝ հրապարակման և բաժանորդագրման ցանցի արձանագրություն, որը հաղորդագրություններ է փոխադրում սարքերի միջև:
յուրաքանչյուր խաղացող բաժանորդագրված է երկու թեմայի ՝ հանգույց (ստացեք ամենաարդիական օղակը) և շրջադարձ (համաժամացման նպատակով ստանում է ընթացիկ նվագարկչի ID- ն):
Իր հերթին, երբ նվագարկիչն ավարտում է մեղեդու նվագարկումը, նա կսեղմի UP կոճակը, և հանգույցը (թարմացվածը) կուղարկվի MQTT բրոքերին, որը այն հետ կփոխանցի օղակի ալիքի բոլոր խաղացողներին:
այս հանգույցը կմնա «քնած», մինչև ընթացիկ հանգույցը չավարտվի և այն կփոխարինի: Այսպիսով, այն թափանցիկ կլինի խաղացողի համար: նաև, քանի որ ներկայումս նոր հանգույցը պահվում է տեղում նվագարկիչի սարքում, երաժշտության համար ինտերնետի ուշացում չկա, ուստի մենք լուծեցինք երկրորդ հարցը:
Քայլ 2: Սերվերի կարգավորում - Ngrok
ngrok- ը թունելային ծառայություն է: Այն թույլ է տալիս արտաքին աշխարհին ենթարկել տեղական գործող ծառայությունը (մեր դեպքում ՝ Node -RED) ՝ առանց սերվերի ստեղծման կամ DNS գրառումների հետ աշխատելու դժվարությունների: Դուք պարզապես գործարկում եք Node-RED- ը ձեր համակարգչի վրա, այնուհետև աշխատում եք ngrok- ով նույն նավահանգստում, որի վրա գործում է Node-RED- ը:
Վերջ, դուք կստանաք URL, որը կարող եք օգտագործել աշխարհի ցանկացած կետից Node -RED մուտք գործելու համար ՝ անկախ նրանից, թե որ ցանցին է այն միացված:
Տեղադրում և կազմաձևում
- Ներբեռնեք ngrok ձեր օպերացիոն համակարգի համար այստեղից:
- Հետևեք ներբեռնման էջի քայլին ՝ մինչև «Կրակել այն» քայլը:
- «Fire it up step» - ում փոխանակեք 80 -ը 1883 -ով - և http- ը tcp- ով, ինչպես./ngrok tcp 1883 -ով ՝ կախված ձեր
- պահպանել URL- ն ու պորտի համարը (տեսել ենք նկարում), մեզ ավելի ուշ պետք կգա:
Քայլ 3. Սերվերի կարգավորում - հանգույց -կարմիր
Serverրագրի Server տրամաբանությունը ՝ Node-RED- ը տեսողական ծրագրավորման միջավայր է, որը թույլ է տալիս միացնել տարբեր ծրագրակազմեր (և ապարատային սարքավորումներ):
Այստեղ մենք կազմեցինք բոլոր խաղացողների միջև հաղորդակցության տրամաբանությունը (կիսել և ստանալ օղակները և համակարգել շրջադարձերը)
Տեղադրեք Node-Red- ը
հետևեք հետևյալ քայլերին ՝ ձեր Node-RED հոսքը ձեր տեղական համակարգչում բեռնելու համար.
- Node-RED- ը պահանջում է Node.js, տեղադրեք այստեղից
- տեղադրեք Node-RED- ը ՝ օգտագործելով հրահանգները այստեղ:
Այժմ, երբ դուք տեղադրել եք Node-RED- ը, գործարկեք այն ՝ օգտագործելով վերը նշված քայլին տրված հրահանգները և հաստատեք, կարող եք տեսնել դատարկ կտավի էջ: Այն պետք է տեղակայված լինի https://127.0.0.1:1880 հասցեում
Այժմ ձեզ հարկավոր է ներմուծել այն հոսքը, որը մենք օգտագործել ենք այս նախագծի համար, այն կարող եք գտնել այստեղ և պարզապես սեղմել ներմուծել ավելացնել JSON ֆայլը և սեղմել Տեղակայել:
Node-Red- ի տեղադրում
եթե նայեք այս քայլին կցված պատկերին, կարող եք տեսնել, որ մենք ունենք 2 հիմնական «գործողություն», մենք ստանում ենք ընթացիկ հանգույց մեր խաղացողներից մեկից, այնուհետև այն փոխանցում ենք մյուս բոլոր խաղացողներին: բացի այդ, մենք նոր հերթափոխը հեռարձակում ենք բոլոր խաղացողներին: այնպես որ խաղը մնում է համաժամեցված:
Քայլ 4: Սերվերի կարգավորում - MQTT (Mosquitto)
Քանի որ Node-RED- ը չունի իր MQTT միջնորդը, և մենք պետք է շփվենք մեր տվիչների և ակտիվացնողների հետ MQTT- ի միջոցով, մենք կօգտագործենք նվիրված MQTT բրոքեր: Քանի որ Node-RED- ը խորհուրդ է տալիս Mosquitto- ին, սա այն է, ինչ մենք կօգտագործենք: Տեսեք այստեղ որոշ տեղեկություններ MQTT- ի և այն մասին, թե ինչու է այն հաճախ օգտագործվում IoT նախագծերում:
Տեղադրում և կազմաձևում
- Ներբեռնեք Mosquitto- ն այստեղից և տեղադրեք այն ՝ ըստ ձեր օպերացիոն համակարգի:
- Սովորաբար, դուք պետք է հետևեք այստեղ տրված հրահանգներին ՝ Node-RED- ը Mosquitto- ին միացնելու համար: Այնուամենայնիվ, եթե դուք օգտագործել եք մեր հոսքը, այն արդեն նախապես կազմաձևված է ձեզ համար: Քանի դեռ հոսքը և Mosquitrro- ն ճիշտ եք տեղադրում, և Mosquitto- ն աշխատում է 1883 նավահանգստում (որի վրա այն լռելյայն աշխատում է), այն պետք է աշխատի տուփից դուրս:
- Նկատի ունեցեք, որ սա նշանակում է, որ MQTT բրոքերը և ձեր Node-RED սերվերը աշխատում են նույն մեքենայի վրա: Սա օգտակար է համակարգի ներսում հաղորդակցությունը պարզեցնելու համար: Լրացուցիչ տեղեկությունների համար տե՛ս ստորև բերված գրառումը:
MQTT տրաֆիկի մոնիտորինգ
Ես օգտագործել եմ MQTTfx ՝ երթևեկությունը վերահսկելու համար, դա հիանալի գործիք է շատ պարզ GUI- ով:
Քայլ 5: Կոդ
կոդը կարող եք գտնել GitHub- ում (բոլոր տվյալների ֆայլերով և config.h)
Կախվածություններ
esp2866 կոդը բեռնելուց առաջ ձեզ հարկավոր է տեղադրել մի քանի գրադարան.
- libmad-8266 (երաժշտությունը վերծանեք SPIFF- ից I2S- ի մեջ)
- EspMQTTClient
- ESP8266WiFi
- Adafruit_NeoPixel
Վերբեռնեք հնչյունները ESP- ում ՝ օգտագործելով SPIFF:
- հետևեք այս մեծ հրահանգին:
- ավելացնել տվյալների թղթապանակը աղբյուրի կոդի գրացուցակում:
- Arduino IDE- ում Գործիքներ բաժնում փոխեք Flash չափը «4 ՄԲ (FS: 3MB TOA: ~ 512KB)»
- Նաև Գործիքների ներքո Կտտացրեք ESP2866 Էսքիզների տվյալների վերբեռնում
Պարամետրերի սահմանում
Դրանից հետո գնացեք config.h ֆայլ և ավելացրեք անհրաժեշտ տվյալները, ինչպիսիք են WIFI- ի հավատարմագրերը և ngrok URL- ն և նավահանգիստը նախորդ քայլից (հղման համար ստուգեք կցված լուսանկարը):
p.
Սահմանեք ձեր ուզած խաղացողի քանակը (այս խաղը լավագույնս աշխատում է 2-3 խաղացողի համար և տուփից դուրս այն բեռնված է 2 խաղացողների համար նախատեսված հնչյունների զանգվածով): բայց հեշտությամբ կարող է ճշգրտվել ավելին.
յուրաքանչյուր խաղացողի համար կարմիր հոսանքի մեջ ավելացրեք ևս մեկ հոսք ՝ օգտվողին հատուկ թեմայի շրջանակում հրապարակելու համար:
նաև, կարող եք խմբագրել երաժշտական ձայնը ՝ այս զանգվածը ձեր անհատականացված հնչյուններին փոխելով.
այստեղ կարող եք տեսնել 3 տեսակի գործիքներ (Chrods նվագարկչի համար 0, Lead for the player 1, և Bass for the player 2)
const char* ուղիներ [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 մոդելը
Առաջին քայլի համար ներբեռնեք STL- ը և տպեք դրանք:
հենարանները հանելուց և գուցե մի փոքր հղկելուց հետո (կախված տպիչի լուծաչափից)
ներկեք այն ցանկալի գույնով
Քայլ 7: Հավաքում և եռակցում
Այսպիսով, հիմնականում այստեղ է, որ տեղի է ունենում իսկական կախարդանքը:
կարող եք հետևել այս սխեմաներին և ամեն ինչ միասին զոդել:
հաշվի առեք, որ կարող եք փոխել PIN- ների դիրքը, պարզապես հիշեք, որ այն պետք է փոխվի նաև ծածկագրում:
A0- ն և I2S- ը բավականին ամրագրված են տեղում.
քանի որ A0- ն ռեզիստորային կամրջի համար է (մենք օգտագործում ենք հոսանքի տարբերությունը `իմանալու համար, թե 5 -ից որ կոճակն է սեղմված` նման սույն Հրահանգներին:
I2S- ն ունի հատուկ կոդավորում, որը կարող եք գտնել այստեղ
Քայլ 8: Խաղացեք որոշ օղակներ ձեր ընկերների հետ
Խորհուրդ ենք տալիս:
Ինչպես. Raspberry PI 4 Headless (VNC) տեղադրելը Rpi- պատկերիչով և նկարներով. 7 քայլ (նկարներով)
Ինչպես. Raspberry PI 4 Headless (VNC) տեղադրելը Rpi-imager- ով և նկարներով. Ես պլանավորում եմ օգտագործել այս Rapsberry PI- ն իմ բլոգում զվարճալի նախագծերի փունջում: Ազատորեն ստուգեք այն: Ես ուզում էի նորից օգտագործել իմ Raspberry PI- ն, բայց իմ նոր վայրում Ստեղնաշար կամ մկնիկ չկար: Որոշ ժամանակ անց ես ստեղծեցի ազնվամորի
Atari Punk Console With Baby 8 քայլ հաջորդականիչ. 7 քայլ (նկարներով)
Atari Punk Console With Baby 8 Step Sequencer: Այս միջանկյալ կառուցվածքը հանդիսանում է Atari Punk Console- ը և Baby 8 Step Sequencer- ը `բոլորը մեկում: Դուք կարող եք տրորել Bantam Tools Desktop PCB ֆրեզերային մեքենայի վրա: Այն բաղկացած է երկու տպատախտակից ՝ մեկը օգտագործողի միջերեսի (UI) տախտակ է, իսկ մյուսը ՝ կոմունալ ծառայությունների
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
Ինչպես ապամոնտաժել համակարգիչը հեշտ քայլերով և նկարներով. 13 քայլ (նկարներով)
Ինչպես ապամոնտաժել համակարգիչը հեշտ քայլերով և նկարներով. Սա հրահանգ է, թե ինչպես ապամոնտաժել համակարգիչը: Հիմնական բաղադրիչների մեծ մասը մոդուլային են և հեշտությամբ հանվում են: Այնուամենայնիվ, կարևոր է, որ դուք կազմակերպված լինեք դրա վերաբերյալ: Սա կօգնի ձեզ զերծ պահել մասերի կորստից, ինչպես նաև նորից հավաքելիս
Ciclop 3D Scanner My Way Քայլ առ քայլ ՝ 16 քայլ (նկարներով)
Ciclop 3D Scanner My Way Քայլ առ քայլ. Ողջույն, ես գիտակցելու եմ հանրահայտ Ciclop 3D սկաները: Բոլոր այն քայլերը, որոնք լավ բացատրված են սկզբնական նախագծում, ներկա չեն: Ես որոշ շտկումներ կատարեցի ՝ գործընթացը պարզեցնելու համար, նախ Ես տպում եմ հիմքը, իսկ հետո վերականգնում եմ PCB- ն, բայց շարունակում եմ