Բովանդակություն:

Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)

Video: Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)

Video: Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Video: Ջրի վրա հիմնված գյուղը խմելու եւ ոռոգման ջուր չունի 2024, Նոյեմբեր
Anonim
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր)

Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր:

Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ի և արձագանքում է ջերմաստիճանին, անձրևին և լույսի ուժգնությանը:

Մի ակնկալեք, որ այն կանի ամբողջական երգեր կամ ակորդային առաջընթաց: Դա ավելի շատ նման է Generative Music- ի, որը երբեմն մարդիկ ստեղծում են Modular Synthesizers- ով: Բայց դա մի փոքր ավելի քիչ պատահական է, քան դա, այն, օրինակ, մնում է որոշակի կշեռքների վրա:

Պարագաներ

ESP8266 (Ես օգտագործում եմ Adafruit- ի Feather Huzzah ESP8266- ը)

BME280 ջերմաստիճանի, խոնավության և բարոմետրիկ ճնշման ցուցիչ (I2C տարբերակ)

Arduino անձրևի ցուցիչ

25K LDR (լույսից կախված դիմադրություն)

Որոշ դիմադրողներ (երկու 47, մեկը 100, մեկը 220 և մեկը 1k Ohm)

Իգական Midi միակցիչ (5 Pin Din), հարմար PCB- ի տեղադրման համար

Jumper լարերը

Հացատախտակ կամ մի տեսակ Նախատիպերի տախտակ

Համակարգիչ, ես կօգտագործեմ Windows 8.1 -ով աշխատող մեկը, բայց այն պետք է աշխատի ցանկացած OS- ով, որքանով որ ես գիտեմ:

Լրացուցիչ ՝ 1250 mAh LiPo մարտկոց ՝ Adafruit– ի JST միակցիչով (համատեղելի է միայն որոշ ESP– ների հետ)

Քայլ 1: Քայլ 1: Softwareրագրակազմ

Առաջին հերթին ձեզ հարկավոր է Arduino IDE:

Այնուհետև ձեզ հարկավոր է SiLabs CP2104 վարորդը և ESP8266 խորհրդի փաթեթը:

Սա թույլ է տալիս ձեր համակարգչին ծրագրավորել ESP- ը `ներկառուցված UART- ի միջոցով, և թույլ է տալիս Arduino IDE- ին ծրագրավորել ESP- ը:

IDE, Driver and Board Package- ի վերաբերյալ բոլոր տեղեկությունները կարող եք գտնել այս էջում Adafruit կայքում:

Ձեզ նույնպես պետք կլինի Arduino Midi գրադարանը, որպեսզի կարողանաք ուղարկել Midi- ի տվյալները: Դա կարելի է անել առանց, բայց դա պարզապես ամեն ինչ շատ ավելի հեշտ է դարձնում:

BME280- ի հետ շփվելու համար ես օգտագործեցի այս BME280-I2C-ESP32 գրադարանը: (Սա BME280- ի I2C տարբերակի համար է)

Եվ այդ գրադարանը իր հերթին պահանջում է Adafruit Unified Sensor Driver: Սա առաջին անգամը չէ, երբ ինձ անհրաժեշտ է այս գրադարանը `առանց որևէ այլ գրադարան օգտագործելու, այնպես որ ես միշտ ունեմ այս գրադարանը ինչ -որ տեղ էջանշված:

Քայլ 2: Քայլ 2: Սարքաշար

Քայլ 2: Սարքավորումներ
Քայլ 2: Սարքավորումներ
Քայլ 2: Սարքավորումներ
Քայլ 2: Սարքավորումներ
Քայլ 2: Սարքավորումներ
Քայլ 2: Սարքավորումներ

Rightիշտ է, մենք վերջապես հասնում ենք լավ իրերի, սարքավորումների:

Ինչպես նշվեց, ես օգտագործեցի այս Adafruit ESP- ը, բայց այն պետք է պարզապես լավ աշխատի NodeMCU- ի հետ: Ես խորհուրդ եմ տալիս V2 տարբերակը, քանի որ կարծում եմ, որ այն շատ ավելի լավ է տեղավորվում տախտակի վրա, և դրանք կարող եք շատ էժան ձեռք բերել eBay- ից կամ AliExpress- ից: Ինձ դուր է գալիս այն փաստը, որ Adafruit ESP- ն ունի ավելի արագ պրոցեսոր, գալիս է LiPo- ի և լիցքավորման սխեմայի իգական JST միակցիչով: Նաև մի փոքր ավելի հեշտ է պարզել, թե ինչ Pin եք օգտագործում: Ես հավատում եմ, որ NodeMCU- ում P1 մակնշված քորոցը իրականում, օրինակ, GPIO5 է, այնպես որ ձեզ միշտ անհրաժեշտ է ունենալ Pinout գծապատկեր: Ամենևին էլ մեծ խնդիր չէ, բայց պարզապես հարմար նորեկների համար նրանք այդքան հստակ պիտակավորեցին Adafruit- ը:

Նախ եկեք միացնենք BME280- ը, քանի որ այս մոդելի որոշ տատանումներ կան: Ինչպես երևում է նկարներից, իմը ունի մեկ մեծ անցք, բայց կան նաև մի քանիսը `2 անցքով: Դուք կարող եք տեսնել, որ այն ունի 4 մուտք և ելք, 1 էներգիայի համար, մեկը գետնի համար և SCL և SDA: Սա նշանակում է, որ այն հաղորդակցվում է I2C- ի միջոցով: Կարծում եմ, որ այլ մոդելներ շփվում են SPI- ի միջոցով: Իսկ ոմանց դեպքում կարող եք ընտրել կամ SPI կամ I2C: SPI- ն կարող է պահանջել այլ գրադարան կամ առնվազն այլ ծածկագիր և տարբեր էլեկտրագծեր: Ես նաև հավատում եմ, որ SPI- ում S- ը նշանակում է Serial, և չեմ կարող ասել, արդյոք դա կխանգարի այս նախագծի Midi հատվածին, քանի որ այն նույնպես աշխատում է սերիական կապի միջոցով:

Այս BME- ն միացնելը բավականին ուղիղ է: ESP8266- ում կարող եք տեսնել 4 -րդ և 5 -րդ կապերը, որոնք համապատասխանաբար պիտակավորված են SDA և SCL: Պարզապես այդ կապումներն ուղղակիորեն միացրեք BME- ի SDA և SCL կապին: Անշուշտ, նաև VIN- ը միացրեք Breadboard- ի դրական երկաթգծին, իսկ GND- ը `բացասական երկաթգծին: Դրանք իր հերթին միացված են ESP- ի 3V3 և GND կապին:

Հաջորդը մենք կկապենք LDR- ը: Fritzing- ի օրինակում դուք կարող եք տեսնել 3.3 վոլտ, որն անցնում է ռեզիստորի միջով, այնուհետև այն բաժանվում է LDR- ի և մեկ այլ դիմադրության: Հետո LDR- ից հետո այն նորից բաժանվում է դիմադրության և ADC- ի:

Սա ESP- ը չափազանց բարձր լարման ստանալուց պաշտպանելու համար և համոզվելու համար, որ այն ընթեռնելի արժեքներ է ստանում: ADC- ն կարող է գործարկել 0-1 վոլտ, բայց 3V3- ը ապահովում է 3.3 վոլտ: Հավանաբար, այն չի պայթեցնի 1 վոլտից բարձր լինելու դեպքում, բայց դա լավ չի աշխատի:

Այսպիսով, առաջին հերթին մենք օգտագործում ենք լարման բաժանարար ՝ օգտագործելով 220 և 100 օմ դիմադրիչներ ՝ լարումը իջեցնելու համար 3.3 -ից մինչև 1.031 վոլտ: Հետո 25k ohm LDR- ն և 1k ohm ռեզիստորը կազմում են մեկ այլ Voltage Devider, որը իջեցնում է լարումը որևէ տեղից 1.031 և 0 վոլտերի միջև ՝ կախված LDR- ի լույսի չափից:

Հետո մենք ունենք Անձրևի տվիչ: Մի մասում գրված է FC-37, մյուս մասում `HW-103: Ես հենց նոր գնեցի Ebay- ում գտած առաջինը, որտեղ ասվում էր, որ այն կարող է աշխատել 3.3 և 5 վոլտ: (Կարծում եմ, որ նրանք բոլորը կարող են):

Սա բավականին ուղիղ է, մենք կարող ենք օգտագործել անալոգային ելք, բայց մենք կարող ենք պարզապես շրջել փոքրիկ Trimpot- ը, որպեսզի սենսորը լինի այնքան զգայուն, որքան ուզում ենք (և մենք արդեն օգտագործել էինք մեր մեկ անալոգային քորոցը ESP- ում): Ինչպես մյուս սենսորների դեպքում, մենք պետք է էներգիա մատակարարենք դրական երկաթուղուց և այն միացնենք ցամաքային երկաթուղուն: Երբեմն քորոցների կարգը տարբերվում է: Իմ մոտ դա VCC, Ground, Digital, Analog է, բայց Fritzing նկարի վրա այլ է: Բայց եթե դուք պարզապես ուշադրություն դարձնեք, ապա դա պետք է հեշտ լինի ճիշտ ուղղել:

Եվ վերջապես, Միդի Jackեքը: Իմ Breadboard- ի վրա այն չի կարող նստել հացահատիկի եզրին, քանի որ բոլոր կապումներն իրար չեն համընկնում: Եթե դա ձեզ անհանգստացնում է, ես կփորձեի հացաթուղթ ձեռք բերել ֆիզիկական խանութում: Կամ նկարները շատ լավ զննեք:

Ինչպես կարող եք տեսնել սխեմատիկայից, դրական լարման և սերիական ազդանշանի երկուսն էլ անցնում են 47 օմ դիմադրության միջով:

Եթե դուք այս նախագիծը կատարում եք Arduino Uno- ի հետ, համոզվեք, որ օգտագործեք 220 օհմ դիմադրություններ: Այս ESP- ն աշխատում է 3.3 Վ տրամաբանության վրա, սակայն Arduino- ի մեծ մասը օգտագործում է 5.0 Վ, այնպես որ դուք պետք է ավելի սահմանափակեք Midi մալուխի միջով անցնող հոսանքը:

Եվ վերջապես միացրեք միջին քորոցը Ground երկաթուղուն: 5 Pin Din- ից մնացած 2 կապում չեն օգտագործվում:

Քայլ 3: Քայլ 3: Կոդ

Եվ վերջապես մենք ունենք ծածկագիրը:

Այս Zip ֆայլում ես տեղադրել եմ 2 ուրվագիծ: «LightRainTemp» - ը պարզապես փորձարկում է բոլոր տվիչները և հետ ուղարկում դրանց արժեքները: (Համոզվեք, որ բացում եք տերմինալի պատուհանը):

Եվ, իհարկե, մենք ունենք LRTGenerativeMidi (LRT նշանակում է Light, Rain, Temperature) ուրվագիծը:

Ներսում դուք կարող եք գտնել մի շարք բացատրություններ մեկնաբանություններում, թե ինչ է կատարվում: Ես չեմ մտնելու, թե ինչպես եմ գրել ամբողջը, դա ժամեր կպահանջի: Եթե ցանկանում եք իմանալ, թե որտեղից սկսել նման բանով, ես մտքում ունեմ այլ նախագծեր: Մի փոքր Random Riff գեներատոր `մի քանի կոճակներով և Sequencer- ով մի շարք հնարավորություններով, որոնք ես չեմ կարող գտնել այլ մոդելների վրա:

Բայց նրանք, ում առաջինը պետք է ավարտեմ նախագծումն ու կոդավորումը: Տեղեկացրեք ինձ, եթե ցանկանում եք արդի լինել այլ նախագծերի վերաբերյալ: Չեմ կողմնորոշվել ՝ պատրաստելու՞ եմ ավելի շատ ուսանելի նյութեր, թե տեսանկարահանելու եմ:

Քայլ 4: Քայլ 4. Կցեք և փորձարկեք այն:

Եվ հիմա ժամանակն է փորձարկել այն:

Պարզապես միացրեք Midi մալուխը, համոզվեք, որ ձեր Synth/Keyboard- ը սահմանել է 1 -ին ալիքին արձագանքելու կամ Arduino կոդի մեջ ալիքը փոխելու համար և տեսեք, արդյոք այն աշխատում է:

Ես իսկապես հետաքրքիր եմ տեսնել և լսել, թե ինչ եք անում դրա հետ: Եթե փոփոխություններ, թարմացումներ, փոփոխություններ կատարեք (ինչպես Լույսի ցուցիչի և peratերմաստիճանի արժեքները: Դրսում այն կարող է ավելի լավ կամ ավելի վատ աշխատել, քան ներսում) որևէ բան:

Ինձ նաև հետաքրքիր է տեսնել, թե արդյոք այն լավ է աշխատում բոլոր սինթեզատորների հետ: Իմ Volca Bass- ի վրա այն հիանալի է աշխատում, բայց իմ Նեյտրոնի վրա LFO- ն խրվում է, երբ ուղարկում եմ Midi Note: Լավ է, երբ այն վերագործարկում եմ, բայց տարօրինակ է: Ես վստահ չեմ, որ Midi Library- ում կամ իմ ծածկագրում ինչ -որ բան կա, գուցե ես շուտով դա անեմ առանց Գրադարանի և տեսնեմ, որ այն ավելի լավը կդառնա:

Շնորհակալություն կարդալու և դիտելու համար և հաջողություն !!

Խորհուրդ ենք տալիս: