Мазмуну:

Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)

Video: Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)

Video: Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)
Video: Айганыш Абдиева - " Аба ырайымсын " (Official Audio) Жаны ыр | 2022 | 2024, Июль
Anonim
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору)

Саламатсызбы, мен бүгүн аба ырайына негизделген кичинекей музыкалык генераторду кантип жасоону түшүндүрөм.

Бул ESP8266га негизделген, ал Arduino сыяктуу, ал температурага, жамгырга жана жарыктын интенсивдүүлүгүнө жооп берет.

Бүтүндөй ырларды же аккорд прогрессин жасайт деп күтпөңүз. Бул Generative Music адамдарга окшош, кээде модулдук синтезаторлор менен жасашат. Бирок бул бир аз азыраак туш келди, ал, мисалы, белгилүү бир Таразаларга жабышып калат.

Жабдуулар

ESP8266 (Мен Adafruitтен Feather Huzzah ESP8266 колдонуп жатам)

BME280 Температура, нымдуулук жана барометрдик басым сенсору (I2C версиясы)

Arduino жамгыр сенсору

25K LDR (Жарыкка көз каранды резистор)

Кээ бир резисторлор (экөө 47, бири 100, бири 220 жана бири 1к Ом)

Аял Midi Connector (5 Pin Din) PCB монтаждоо үчүн ылайыктуу

Jumper Wires

Нан тактасы же кандайдыр бир прототипдөө тактасы

Компьютер, мен Windows 8.1де иштегенди колдоном, бирок ал менин билишимче, каалаган ОСте иштеши керек.

Кошумча: Adafruitтен JST туташтыргычы бар 1250 мАч LiPo батареясы (кээ бир ESP менен гана шайкеш келет)

1 -кадам: 1 -кадам: Программалык камсыздоо

Биринчи кезекте сизге Arduino IDE керек.

Андан кийин сизге SiLabs CP2104 драйвери жана ESP8266 Board Package керек.

Бул сиздин компьютериңизге ESPти UARTта орнотууга мүмкүнчүлүк берет жана Arduino IDEге ESPти программалоого мүмкүнчүлүк берет.

IDE, Driver жана Board Package жөнүндө бардык маалыматты Adafruit веб -сайтындагы бул баракчадан таба аласыз.

Ошондой эле Midi маалыматын жөнөтүү үчүн Arduino Midi китепканасы керек болот. Муну ансыз деле кылса болот, бирок бул жөн гана баарын бир топ жеңилдетет.

BME280 менен байланышуу үчүн мен бул BME280-I2C-ESP32 китепканасын колдондум. (Бул BME280дин I2C версиясы үчүн)

Ал эми бул китепкана Adafruit Unified Sensor Driver талап кылат. Бул башка китепкананы көйгөйсүз колдонуу үчүн бул китепкана мага биринчи жолу эмес, ошондуктан бул китепкананын дайыма бир жерге кыстармалары бар.

2 -кадам: 2 -кадам: Аппараттык

2 -кадам: Аппараттык
2 -кадам: Аппараттык
2 -кадам: Аппараттык
2 -кадам: Аппараттык
2 -кадам: Аппараттык
2 -кадам: Аппараттык

Туура, биз акыры жакшы нерселерге, жабдыктарга жетебиз.

Жогоруда айтылгандай, мен бул Adafruit ESPти колдондум, бирок ал NodeMCU менен жакшы иштеши керек. Мен V2 версиясын сунуштайм, анткени ал нан тактайына бир топ жакшы келет жана сиз аларды eBay же AliExpressтен абдан арзан ала аласыз. Мага Adafruit ESPтин ылдамыраак процессору бар экени жагат, LiPo үчүн аял JST туташтыргычы жана заряддык схемасы менен келет. Кандай пин колдонуп жатканыңызды билүү дагы бир аз оңой. Мен NodeMCUго ишенем, мисалы, D1 пин белгиси чындыгында GPIO5, ошондуктан сизге дайыма Pinout диаграммасы керек болот. Бул чоң маселе эмес, бирок жаңы келгендер үчүн ыңгайлуу, алар Adafruitти ушунчалык так белгилешкен.

Биринчиден, BME280ди туташтыралы, анткени бул моделдин айрым вариациялары бар. Сүрөттөрдөн көрүнүп тургандай, шахтада бир чоң тешик бар, бирок 2 тешиги бар. Сизде 4 кирүү жана чыгуу бар, 1и бийлик үчүн, бири жер үчүн жана SCL жана SDA бар экенин көрө аласыз. Бул I2C аркылуу байланышты билдирет. Башка моделдер SPI аркылуу байланышат деп ишенем. Ал эми кээ биринде SPI же I2Cди тандай аласыз. SPI башка китепкананы же жок дегенде башка кодду жана башка зымдарды талап кылышы мүмкүн. Мен ошондой эле SPIдеги S сериялык мааниге ээ деп ишенем жана бул бул долбоордун Midi бөлүгүнө тоскоол болорун айта албайм, анткени ал дагы сериялык туташуу аркылуу иштеп жатат.

Бул BMEди туташтыруу абдан алдыга жылат. ESP8266да сиз SDA жана SCL деп белгиленген 4 жана 5 -пин көрө аласыз. Жөн эле ошол казыктарды BMEдеги SDA жана SCL төөнөгүчкө туташтырыңыз. Албетте VINди Breadboard позитивдүү темир жолуна жана GND терс темир жолго туташтырыңыз. Алар өз кезегинде ESPтин 3V3 жана GND пинине туташкан.

Кийинкиде биз LDRди туташтырабыз. Fritzing мисалында сиз 3.3 вольттун резистордон өтүп жатканын көрө аласыз, андан кийин ал LDRге жана башка резисторго бөлүнөт. Андан кийин LDRден кийин ал кайрадан резисторго жана ADCге бөлүнөт.

Бул ESPти өтө жогорку чыңалуудан коргоо жана анын окула турган баалуулуктарга ээ экенине ынануу үчүн. ADC 0-1 вольтту көтөрө алат, бирок 3V3 3.3 вольтту камсыздайт. Балким, эгер сиз 1 вольттон жогору чыксаңыз, эч нерсе жардырбайт, бирок ал жакшы иштебейт.

Ошентип, адегенде чыңалууну 3.3төн 1.031 вольтко чейин түшүрүү үчүн 220 жана 100 омдук резисторлорду колдонгон Voltage Divider колдонобуз. Андан кийин 25k ohm LDR жана 1k ohm каршылыгы LDR алган жарыктын көлөмүнө жараша каалаган жерден 1.031 менен 0 вольттун ортосундагы чыңалууну төмөндөтүүчү башка Voltage Devider түзөт.

Андан кийин бизде Жамгыр сенсору бар. Бир бөлүгү FC-37 дейт, экинчи бөлүгү HW-103 дейт. Мен жөн гана Ebayден тапканымдын бирин сатып алдым, ал 3.3 жана 5 вольтту көтөрө алат деп айтты. (Менимче, алардын баары алат).

Бул абдан алдыга карай, биз аналогдук чыгарууну колдоно алмакпыз, бирок биз кичинекей Trimpotту буруп, сенсорду биз каалагандай сезимтал кылышыбыз мүмкүн (жана биз буга чейин ESPтин бир аналогдук пинин колдонгонбуз). Башка сенсорлордой эле, биз позитивдүү темир жолунан энергия берип, аны жер темир жолуна туташтырышыбыз керек. Кээде төөнөгүчтөрдүн тартиби ар кандай болот. Меники бул VCC, Ground, Digital, Analog, бирок Fritzing сүрөтүндө башкача. Бирок, эгер сиз жөн гана көңүл бурсаңыз, бул оңой оңой болушу керек.

Жана акыры, Midi Jack. Менин Breadboard тактайчамдын тегерегине туура келбегендиктен, ал нандын четинде отура албайт. Эгерде бул сизди тынчсыздандырса, мен физикалык дүкөндөн нан табууга аракет кылмакмын. Же сүрөттөрдү абдан жакшы текшерип көрүңүз.

Схемадан көрүнүп тургандай, оң чыңалуу жана Сериялык сигнал экөө тең 47 омдук резистор аркылуу өтөт.

Эгерде сиз бул долбоорду Arduino Uno менен жасасаңыз, анда 220 омдук резисторлорду колдонууну унутпаңыз !! Бул ESPтин 3.3 V логикасы боюнча иштегени, бирок көпчүлүк Arduino 5.0 V колдонот, андыктан сиз Midi кабели аркылуу өтүүчү токту чектешиңиз керек.

Акыры, ортоңку пинди Жер темир жолуна туташтырыңыз. 5 Pin Din башка 2 казыктары колдонулбайт.

3 -кадам: 3 -кадам: Код

Акыры бизде код бар!

Бул Zip файлына мен 2 эскиз койду. 'LightRainTemp' жөн гана бардык сенсорлорду сынайт жана алардын баалуулуктарын кайра жөнөтөт. (Терминал терезесин ачууну унутпаңыз!)

Албетте, бизде LRTGenerativeMidi (LRT жарык, жамгыр, температура) эскизи бар.

Ичинде эмне болуп жатканы боюнча комментарийлерде көптөгөн түшүндүрмөлөрдү таба аласыз. Мен бүт нерсени кантип жазганыма киргим келбейт, бул бир нече саатка созулат. Эгерде сиз мындай нерсени кайдан баштоо керектигин билгиңиз келсе, менин башка долбоорлорум бар. Бир нече баскычтары бар кичинекей Random Riff генератору жана башка моделдерден таба албаган көптөгөн функциялары бар секвенер.

Бирок мен алгач долбоорлоону жана коддоону бүтүрүшүм керек. Башка долбоорлор тууралуу кабардар болуп турууну кааласаңыз, мага кабарлаңыз. Көбүрөөк көрсөтмө беремби же видео сериал жасаймбы чече элекмин.

4 -кадам: 4 -кадам: Аны илип, сынап көрүңүз

Эми аны сынап көрүүгө убакыт келди!

Жөн эле Midi кабелин туташтырыңыз, Synth/Keyboardңузду 1 -каналга жооп бергидей кылып коюңуз же Arduino кодундагы каналды өзгөртүп, анын иштээрин көрүңүз!

Мен муну менен эмне кылып жатканыңды көрүп, укканым чын эле кызыгып жатат. Эгер сиз өзгөртүүлөрдү, жаңыртууларды, өзгөртүүлөрдү киргизсеңиз (Жарык сенсоруна жана Температура маанилерине окшош. Сырты ичинде жакшы же жаман иштеши мүмкүн).

Мен бардык синтезаторлор менен жакшы иштээрин билгим келет. Менин Волка Бассымда ал эң сонун иштейт, бирок менин Нейтронумда LFO мен Midi Note жөнөткөнүмдө тыгылып калат. Мен аны кайра жүктөөдө жакшы, бирок кызык. Мен Midi Китепканасында же менин кодумда бир нерсе бар экенин так билбейм, мен муну жакында Китепкана жок кылууга аракет кылып, анын жакшырып кетээрин билишим мүмкүн.

Окуп, көргөнүңүз үчүн рахмат жана ийгилик !!

Сунушталууда: