Съдържание:

Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)

Видео: Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)

Видео: Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)
Видео: 432 Гц Частоты Счастья - Музыка Погружает в Состояние Блаженства | Райские Сферы - Нектар Для Души 2024, Юли
Anonim
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор)
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор)
Музикален генератор, базиран на времето (ESP8266 базиран Midi генератор)
Музикален генератор, базиран на времето (ESP8266 базиран Midi генератор)

Здравейте, днес ще обясня как да направите свой собствен малък музикален генератор, базиран на времето.

Базиран е на ESP8266, който е нещо като Arduino и реагира на температура, дъжд и интензивност на светлината.

Не очаквайте това да прави цели песни или акорди. Това е по -скоро като генеративна музика, която хората понякога правят с модулни синтезатори. Но това е малко по -малко случайно, че се придържа например към определени скали.

Консумативи

ESP8266 (Използвам Feather Huzzah ESP8266 от Adafruit)

BME280 сензор за температура, влажност и барометрично налягане (версията I2C)

Сензор за дъжд Arduino

25K LDR (светлозависим резистор)

Някои резистори (два 47, един 100, един 220 и един 1k Ohm)

Женски Midi конектор (5 -пинов Din), подходящ за монтаж на печатни платки

Джъмперни проводници

Макет или някаква дъска за прототипиране

Компютър, ще използвам такъв с Windows 8.1, но доколкото знам, трябва да работи на всяка операционна система.

По избор: 1250 mAh LiPo батерия с JST конектор от Adafruit (съвместим само с някои ESP)

Стъпка 1: Стъпка 1: Софтуер

На първо място имате нужда от Arduino IDE.

След това се нуждаете от драйвера SiLabs CP2104 и пакета платка ESP8266.

Това позволява на вашия компютър да програмира ESP чрез вградения UART и позволява на Arduino IDE да програмира ESP.

Можете да намерите цялата информация за IDE, драйвера и пакета на борда на тази страница на уебсайта на Adafruit.

Ще ви е необходима и библиотеката Arduino Midi, за да можете да изпращате данни от Midi. Може и без, но това просто прави всичко много по -лесно.

За комуникация с BME280 използвах тази библиотека BME280-I2C-ESP32. (Това е за I2C версията на BME280)

И тази библиотека от своя страна изисква Adafruit Unified Sensor Driver. Това не е първият път, когато се нуждая от тази библиотека, за да използвам различна библиотека без проблеми, така че винаги имам тази библиотека в отметки.

Стъпка 2: Стъпка 2: Хардуер

Стъпка 2: Хардуер
Стъпка 2: Хардуер
Стъпка 2: Хардуер
Стъпка 2: Хардуер
Стъпка 2: Хардуер
Стъпка 2: Хардуер

Добре, така че най -накрая стигаме до хубавите неща, хардуера.

Както споменах, използвах този Adafruit ESP, но той трябва просто да работи добре с NodeMCU. Препоръчвам версията V2, тъй като вярвам, че тя се вписва много по -добре на макет и можете да ги получите много евтино от eBay или AliExpress. Харесва ми фактът, че Adafruit ESP има по -бърз процесор, идва с женски JST конектор за LiPo и схема за зареждане. Също така е малко по -лесно да разберете какъв Pin използвате. Вярвам, че на NodeMCU щифтът с етикет D1 всъщност е GPIO5 например, така че винаги се нуждаете от удобна диаграма на Pinout. Изобщо не е голям проблем, но просто удобен за начинаещи, те обозначиха Adafruit толкова ясно.

Първо нека да свържем BME280, защото има някои вариации в този модел. Както можете да видите от снимките, моята има една голяма дупка, но има и такива с 2 дупки. Можете да видите, че има 4 входа и изхода, 1 за захранване, един за земя и SCL и SDA. Това означава, че комуникира чрез I2C. Вярвам, че други модели комуникират чрез SPI. В някои можете да изберете SPI или I2C. SPI може да изисква различна библиотека или поне различен код и различно окабеляване. Също така вярвам, че S в SPI означава Serial и не мога да кажа дали това ще попречи на Midi частта на този проект, тъй като това също работи чрез Serial връзка.

Свързването на този BME е доста право напред. На ESP8266 можете да видите щифтове 4 и 5, обозначени съответно с SDA и SCL. Просто свържете тези щифтове директно към щифта SDA и SCL на BME. Разбира се, също така свържете VIN към положителната релса на платката и GND към отрицателната релса. Те от своя страна са свързани към 3V3 и GND щифт на ESP.

След това ще свържем 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 резистор образуват друг делител на напрежение, който понижава напрежението от някъде между 1.031 и 0 волта в зависимост от количеството светлина, което LDR получава.

След това имаме сензор за дъжд. Едната част казва FC-37, другата част казва HW-103. Току -що купих първия, който намерих в Ebay, който каза, че може да издържи 3.3 и 5 волта. (Мисля, че всички могат).

Това е доста право напред, бихме могли да използваме аналогов изход, но можем просто да завъртим малкия Trimpot, за да направим сензора толкова чувствителен, колкото искаме (и вече използвахме нашия един аналогов щифт на ESP). Както при другите сензори, ние трябва да захранваме от положителната релса и да я свързваме към наземната шина. Понякога обаче редът на щифтовете варира. На моя VCC, Ground, Digital, Analog, но на Fritzing картината е различно. Но ако просто обърнете внимание, това би трябвало лесно да се оправи.

И накрая, Midi Jack. На моята дъска не може да седи на ръба на дъската, тъй като всички щифтове не се подравняват. Ако това ви притеснява, ще се опитам да си намеря макет във физически магазин. Или огледайте снимките много добре.

Както можете да видите от схемата, положителното напрежение и серийният сигнал преминават през 47 омов резистор.

Ако правите този проект с Arduino Uno например, не забравяйте да използвате 220 ома резистори !! Тези ESP работят на 3.3 V логика, но повечето Arduino използват 5.0 V, така че трябва да ограничите повече тока, който преминава през Midi кабела.

И накрая свържете средния щифт към заземяващата шина. Другите 2 пина от 5 Pin Din не се използват.

Стъпка 3: Стъпка 3: Код

И накрая имаме кода!

В този Zip файл поставям 2 скици. „LightRainTemp“просто тества всички сензори и изпраща обратно техните стойности. (Уверете се, че сте отворили прозореца на терминала!)

И разбира се, имаме скицата LRTGenerativeMidi (LRT означава светлина, дъжд, температура).

Вътре можете да намерите куп обяснения в коментарите за случващото се. Няма да се впускам в това как съм написал цялата работа, това ще отнеме часове. Ако искате да знаете откъде да започнете с нещо подобно, имам предвид някои други проекти. Малък генератор на произволни рифове с няколко бутона и секвенсор с куп функции, които не мога да намеря на други модели.

Но тези, които ще трябва първо да завърша с проектирането и кодирането. Кажете ми, ако искате да сте в течение с други проекти. Не съм решил дали ще направя повече инструкции или ще направя видео поредица.

Стъпка 4: Стъпка 4: Свържете го и го тествайте

И сега е време да го тестваме!

Просто свържете Midi кабел, не забравяйте да настроите своя синтезатор/клавиатура да реагира на канал 1 или да промените канала в кода на Arduino и да видите дали работи!

Наистина съм любопитен да видя и чуя какво правите с него. Ако правите промени, надстройки, ощипвания (като например стойностите на сензора за светлина и температурата. Отвън може да работи по -добре или по -лошо, отколкото вътре) всичко.

Аз също съм любопитен да видя дали работи добре с всички синтезатори. На моя Volca Bass работи перфектно, но на моя Neutron LFO се забива веднага щом изпратя Midi Note. Добре е, когато го рестартирам, но е странно. Не съм сигурен дали има нещо в библиотеката Midi или в кода ми, може скоро да се опитам да го направя без библиотека и да видя дали ще стане по -добре.

Благодаря за четенето и гледането и успех !!

Препоръчано: