Cuprins:

Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)

Video: Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)

Video: Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)
Video: Tim Baresko b2b Clyde P @ Generator Hostel Paris for Cercle 2024, Septembrie
Anonim
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266)
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266)
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266)
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266)

Bună, astăzi vă voi explica cum să creați propriul dvs. generator de muzică bazat pe vreme.

Se bazează pe un ESP8266, care este cam ca un Arduino și răspunde la temperatură, ploaie și intensitatea luminii.

Nu vă așteptați să facă melodii întregi sau progrese de acorduri. Seamănă mai degrabă cu muzica generativă uneori cu ajutorul sintetizatoarelor modulare. Dar este puțin mai puțin aleatoriu decât asta, de exemplu, se ține de anumite scale.

Provizii

ESP8266 (folosesc Feather Huzzah ESP8266 de la Adafruit)

Senzor de temperatură, umiditate și presiune barometrică BME280 (versiunea I2C)

Senzor de ploaie Arduino

25K LDR (rezistență dependentă de lumină)

Unele rezistoare (două 47, unul 100, unul 220 și unul 1k Ohm)

Conector Midi feminin (5 pini Din) potrivit pentru montarea PCB

Sârme jumper

Breadboard sau un fel de placă de prototipare

Computer, voi folosi unul care rulează Windows 8.1, dar ar trebui să funcționeze pe orice sistem de operare din câte știu.

Opțional: baterie LiPo de 1250 mAh cu conector JST de la Adafruit (compatibil numai cu unele ESP-uri)

Pasul 1: Pasul 1: Software

În primul rând aveți nevoie de IDE-ul Arduino.

Apoi, aveți nevoie de driverul SiLabs CP2104 și pachetul de bord ESP8266.

Acest lucru permite computerului să programeze ESP prin intermediul UART încorporat și permite Arduino IDE să programeze ESP.

Puteți găsi toate informațiile despre pachetul IDE, Driver și Board pe această pagină pe site-ul web Adafruit.

De asemenea, veți avea nevoie de biblioteca Arduino Midi pentru a putea trimite date Midi. Se poate face fără, dar acest lucru simplifică totul.

Pentru a comunica cu BME280 am folosit această bibliotecă BME280-I2C-ESP32. (Aceasta este pentru versiunea I2C a BME280)

Și acea bibliotecă necesită la rândul său Adafruit Unified Sensor Driver. Nu este prima dată când am nevoie de această bibliotecă pentru a folosi o bibliotecă diferită fără probleme, așa că am întotdeauna această bibliotecă marcată undeva.

Pasul 2: Pasul 2: Hardware

Pasul 2: Hardware
Pasul 2: Hardware
Pasul 2: Hardware
Pasul 2: Hardware
Pasul 2: Hardware
Pasul 2: Hardware

Bine, așa că ajungem în cele din urmă la lucrurile bune, la hardware.

După cum am menționat, am folosit acest Adafruit ESP, dar ar trebui să funcționeze bine cu un NodeMCU. Recomand versiunea V2, deoarece cred că se potrivește mult mai bine pe o placă de calcul și le puteți obține foarte ieftine de pe eBay sau AliExpress. Îmi place faptul că Adafruit ESP are un procesor mai rapid, vine cu un conector JST feminin pentru un LiPo și un circuit de încărcare. De asemenea, este puțin mai ușor să-ți dai seama ce Pin folosești. Cred că pe un NodeMCU pinul etichetat D1 este de fapt GPIO5, de exemplu, deci aveți întotdeauna nevoie de o diagramă Pinout la îndemână. Nu este deloc o problemă mare, ci doar convenabilă pentru începători, au etichetat-o atât de clar pe cea Adafruit.

În primul rând, să conectăm BME280, deoarece există câteva variații în acest model. După cum puteți vedea din imagini, al meu are o gaură mare, dar există și unele cu 2 găuri. Puteți vedea că are 4 intrări și ieșiri, 1 pentru alimentare, una pentru masă și un SCL și SDA. Aceasta înseamnă că comunică prin I2C. Cred că alte modele comunică prin SPI. Și în unele puteți alege fie SPI, fie I2C. SPI ar putea necesita o altă bibliotecă sau cel puțin un cod diferit și cabluri diferite. De asemenea, cred că S în SPI înseamnă Serial și nu pot spune dacă acest lucru va interfera cu partea Midi a acestui proiect, deoarece funcționează și prin conexiune Serial.

Conectarea acestui BME este destul de simplă. Pe ESP8266 puteți vedea pinii 4 și 5 fiind etichetați SDA și respectiv SCL. Conectați acei pini direct la pinul SDA și SCL de pe BME. Desigur, de asemenea, conectați VIN la șina pozitivă a panoului și GND la șina negativă. Acestea sunt la rândul lor conectate la pinul 3V3 și GND al ESP.

În continuare vom conecta LDR. În exemplul Fritzing puteți vedea 3,3 volți care trec printr-un rezistor, apoi este împărțit la LDR și un alt rezistor. Apoi, după LDR, este împărțit din nou la un rezistor și la ADC.

Aceasta este pentru a proteja ESP-ul de a obține tensiuni prea mari și pentru a vă asigura că obține valori lizibile. ADC poate gestiona 0-1 volți, dar 3V3 furnizează 3,3 volți. Probabil că nu va arunca nimic dacă treceți peste 1 volt, dar nu va funcționa bine.

Deci, mai întâi folosim un divizor de tensiune folosind rezistențe de 220 și 100 ohmi pentru a reduce tensiunea de la 3,3 la 1,031 volți. Apoi, LDR de 25 k ohm și rezistorul de 1 k ohm formează un alt Devider de tensiune care scade tensiunea de oriunde între 1,031 și 0 volți, în funcție de cantitatea de lumină pe care o primește LDR.

Apoi avem senzorul de ploaie. O parte spune FC-37, cealaltă parte spune HW-103. Tocmai l-am cumpărat pe primul pe care l-am găsit pe Ebay care a spus că poate rezista 3,3 și 5 volți. (Cred că toți pot).

Acest lucru este destul de simplu, am putea folosi o ieșire analogică, dar putem doar să rotim micul Trimpot pentru a face senzorul să fie la fel de sensibil pe cât dorim (și am folosit deja un singur pin analogic pe ESP). Ca și în cazul celorlalți senzori, trebuie să furnizăm energie din șina pozitivă și să o conectăm la șina de la sol. Uneori, însă, ordinea știfturilor variază. Pe al meu este VCC, Ground, Digital, Analog, dar în imaginea Fritzing este diferit. Dar dacă doar acordați atenție, acest lucru ar trebui să fie ușor de înțeles.

Și în cele din urmă, Midi Jack. Pe panoul meu nu poate sta pe marginea panoului, deoarece știfturile nu se aliniază toate. Dacă acest lucru vă deranjează, aș încerca să obțin un panou într-un magazin fizic. Sau inspectați pozele foarte bine.

După cum puteți vedea din schemă, tensiunea pozitivă și semnalul serial trec ambele printr-un rezistor de 47 ohmi.

Dacă faceți acest proiect cu un Arduino Uno, de exemplu, asigurați-vă că utilizați rezistențe de 220 ohmi !! Aceste ESP funcționează pe logica de 3,3 V, dar majoritatea Arduino utilizează 5,0 V, deci trebuie să limitați mai mult curentul care trece prin cablul Midi.

Și conectați în cele din urmă știftul din mijloc la șina de la sol. Ceilalți 2 pini de la 5 pini Din nu sunt folosiți.

Pasul 3: Pasul 3: Cod

Și în cele din urmă avem codul!

În acest fișier Zip am pus 2 schițe. „LightRainTemp” pur și simplu testează toți senzorii și le trimite înapoi valorile. (Asigurați-vă că deschideți fereastra terminalului!)

Și, desigur, avem schița LRTGenerativeMidi (LRT înseamnă Lumină, ploaie, temperatură).

În interior puteți găsi o grămadă de explicații în comentariile despre ceea ce se întâmplă. Nu am de gând să intru în modul în care am scris totul, ar dura câteva ore. Dacă doriți să știți de unde să începeți cu așa ceva, am câteva alte proiecte în minte. Un mic generator de Riff aleatoriu, cu câteva butoane și un Sequencer cu o grămadă de caracteristici pe care nu le pot găsi pe alte modele.

Dar pe cei pe care va trebui să-i termin mai întâi de proiectare și codificare. Spuneți-mi dacă doriți să fiți la curent cu alte proiecte. Nu m-am decis dacă voi face mai multe instructabile sau voi face o serie video.

Pasul 4: Pasul 4: Conectați-l și testați-l

Și acum este timpul să-l testați!

Pur și simplu conectați un cablu Midi, asigurați-vă că setați Synth / Keyboard pentru a răspunde la canalul 1 sau schimbați canalul în codul Arduino și vedeți dacă funcționează!

Sunt foarte curios să văd și să aud ce faci cu asta. Dacă efectuați modificări, upgrade-uri, modificări (cum ar fi senzorul de lumină și valorile de temperatură. În exterior ar putea funcționa mai bine sau mai rău decât în interior) orice.

Sunt, de asemenea, curios să văd dacă funcționează bine cu toate sintetizatoarele. Pe Volca Bass funcționează perfect, dar pe Neutron, LFO se blochează imediat ce trimit un Midi Note. Este bine când îl repornesc, dar este ciudat. Nu sunt sigur dacă există ceva în Biblioteca Midi sau în codul meu, aș putea încerca să o fac fără o Bibliotecă în curând și să văd dacă se îmbunătățește.

Mulțumesc pentru lectură și vizionare și mult succes !!

Recomandat: