Sommario:

Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)
Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)

Video: Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)

Video: Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)
Video: Quando provi a fare un complimento a una ragazza... 2024, Giugno
Anonim
Generatore di musica basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266)
Generatore di musica basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266)
Generatore di musica basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266)
Generatore di musica basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266)

Ciao, oggi ti spiego come creare il tuo piccolo generatore di musica basato sul meteo.

Si basa su un ESP8266, che è un po' come un Arduino, e risponde alla temperatura, alla pioggia e all'intensità della luce.

Non aspettarti che crei intere canzoni o progressioni di accordi. È più come la gente di musica generativa a volte fa con i sintetizzatori modulari. Ma è un po' meno casuale, ad esempio si attiene a certe scale.

Forniture

ESP8266 (sto usando Feather Huzzah ESP8266 di Adafruit)

Sensore di temperatura, umidità e pressione barometrica BME280 (versione I2C)

Sensore Pioggia Arduino

25K LDR (resistenza dipendente dalla luce)

Alcuni resistori (due da 47, uno da 100, uno da 220 e uno da 1k Ohm)

Connettore Midi femmina (5 Pin Din) adatto al montaggio su PCB

Cavi per ponticelli

Breadboard o una sorta di scheda di prototipazione

Computer, ne userò uno con Windows 8.1, ma per quanto ne so dovrebbe funzionare su qualsiasi sistema operativo.

Opzionale: batteria LiPo da 1250 mAh con connettore JST di Adafruit (compatibile solo con alcuni ESP)

Passaggio 1: Passaggio 1: Software

Prima di tutto hai bisogno dell'IDE Arduino.

Quindi hai bisogno del driver SiLabs CP2104 e del pacchetto scheda ESP8266.

Ciò consente al computer di programmare l'ESP tramite l'UART integrato e consente all'IDE di Arduino di programmare l'ESP.

Puoi trovare tutte le informazioni su IDE, Driver e Board Package in questa pagina del sito web di Adafruit.

Avrai anche bisogno della libreria Midi Arduino per poter inviare dati Midi. Può essere fatto senza, ma questo rende tutto molto più semplice.

Per comunicare con il BME280 ho utilizzato questa libreria BME280-I2C-ESP32. (Questo è per la versione I2C del BME280)

E quella libreria a sua volta richiede Adafruit Unified Sensor Driver. Questa non è la prima volta che ho bisogno di questa libreria per utilizzare una libreria diversa senza problemi, quindi ho sempre questa libreria contrassegnata da qualche parte.

Passaggio 2: Passaggio 2: Hardware

Passaggio 2: hardware
Passaggio 2: hardware
Passaggio 2: hardware
Passaggio 2: hardware
Passaggio 2: hardware
Passaggio 2: hardware

Va bene così finalmente arriviamo alle cose buone, l'hardware.

Come accennato, ho usato questo Adafruit ESP, ma dovrebbe funzionare bene con un NodeMCU. Raccomando la versione V2 perché credo che si adatti molto meglio a una breadboard e puoi ottenerle molto a buon mercato da eBay o AliExpress. Mi piace il fatto che Adafruit ESP abbia una CPU più veloce, sia dotato di un connettore JST femmina per LiPo e di un circuito di carica. È anche un po' più facile capire quale Pin stai usando. Credo che su un NodeMCU il pin Labeled D1 sia in realtà GPIO5, ad esempio, quindi hai sempre bisogno di un grafico Pinout a portata di mano. Non è affatto un grosso problema, ma è semplicemente conveniente per i neofiti che hanno etichettato quello di Adafruit in modo così chiaro.

Prima di tutto colleghiamo il BME280, perché ci sono alcune variazioni in questo modello. Come puoi vedere dalle foto, la mia ha un unico grande foro, ma ce ne sono anche alcune con 2 fori. Puoi vedere che ha 4 ingressi e uscite, 1 per l'alimentazione, uno per la terra e un SCL e SDA. Ciò significa che comunica tramite I2C. Credo che altri modelli comunichino tramite SPI. E in alcuni puoi scegliere SPI o I2C. SPI potrebbe richiedere una libreria diversa o almeno un codice diverso e un cablaggio diverso. Credo anche che la S in SPI stia per Serial e non posso dire se ciò interferirà con la parte Midi di questo progetto poiché funziona anche tramite connessione seriale.

Collegare questo BME è piuttosto semplice. Su ESP8266 puoi vedere i pin 4 e 5 etichettati rispettivamente SDA e SCL. Basta collegare questi pin direttamente al pin SDA e SCL sul BME. Ovviamente collega anche VIN al Positive Rail del Breadboard e GND al Negative Rail. Questi sono a loro volta collegati al pin 3V3 e GND dell'ESP.

In seguito collegheremo l'LDR. Nell'esempio di Fritzing puoi vedere i 3,3 volt che passano attraverso un resistore, quindi vengono suddivisi in LDR e un altro resistore. Quindi, dopo l'LDR, viene nuovamente suddiviso in un resistore e nell'ADC.

Questo serve a proteggere l'ESP da tensioni troppo elevate e per assicurarsi che ottenga valori leggibili. L'ADC può gestire 0-1 Volt ma il 3V3 fornisce 3,3 volt. Probabilmente non farà esplodere nulla se superi 1 volt, ma non funzionerà bene.

Quindi prima usiamo un divisore di tensione usando resistori da 220 e 100 ohm per abbassare la tensione da 3,3 a 1,031 volt. Quindi l'LDR da 25 k ohm e il resistore da 1 k ohm formano un altro deviatore di tensione che riduce la tensione da qualsiasi punto compreso tra 1,031 e 0 volt a seconda della quantità di luce che riceve l'LDR.

Poi abbiamo il sensore pioggia. Una parte dice FC-37, l'altra parte dice HW-103. Ho appena comprato il primo che ho trovato su Ebay che diceva che può gestire 3,3 e 5 volt. (Penso che possano farlo tutti).

Questo è abbastanza semplice, potremmo usare un'uscita analogica, ma possiamo semplicemente ruotare il piccolo Trimpot per rendere il sensore sensibile quanto vogliamo (e abbiamo già usato il nostro unico pin analogico sull'ESP). Come con gli altri sensori, dobbiamo fornire alimentazione dal binario positivo e collegarlo al binario di terra. A volte l'ordine dei pin varia però. Sul mio è VCC, Ground, Digital, Analog, ma sull'immagine di Fritzing è diverso. Ma se presti solo attenzione, questo dovrebbe essere facile da ottenere.

E infine, il Midi Jack. Sulla mia breadboard non può stare sul bordo della breadboard, poiché i perni non si allineano tutti. Se questo ti dà fastidio, proverei a prendere una breadboard in un negozio fisico. Oppure ispezionare molto bene le immagini.

Come puoi vedere dallo schema, la tensione positiva e il segnale seriale passano entrambi attraverso un resistore da 47 ohm.

Se fai questo progetto con un Arduino Uno, ad esempio, assicurati di utilizzare resistori da 220 ohm!! Questi ESP funzionano su una logica a 3,3 V, ma la maggior parte di Arduino usa 5,0 V, quindi devi limitare di più la corrente che passa attraverso il cavo Midi.

E infine collega il pin centrale al binario di terra. Gli altri 2 pin del 5 Pin Din non vengono utilizzati.

Passaggio 3: Passaggio 3: Codice

E finalmente abbiamo il codice!

In questo file zip ho messo 2 schizzi. 'LightRainTemp' semplicemente testa tutti i sensori e invia i loro valori. (Assicurati di aprire la finestra Terminale!)

E ovviamente abbiamo lo sketch LRTGenerativeMidi (LRT sta per Light, Rain, Temperature).

All'interno puoi trovare una serie di spiegazioni nei commenti su cosa sta succedendo. Non ho intenzione di approfondire come ho scritto l'intera cosa, ci vorrebbero ore. Se vuoi sapere da dove iniziare con qualcosa del genere, ho altri progetti in mente. Un piccolo generatore di Random Riff con pochi pulsanti e un Sequencer con un sacco di funzioni che non riesco a trovare su altri modelli.

Ma quelli che dovrò finire di progettare e codificare prima. Fatemi sapere se volete essere aggiornati su altri progetti. Non ho deciso se farò più istruttori o se farò una serie di video.

Passaggio 4: Passaggio 4: collegalo e provalo

E ora è il momento di testarlo!

Basta collegare un cavo Midi, assicurarsi di impostare il sintetizzatore/tastiera per rispondere al canale 1 o cambiare il canale nel codice Arduino e vedere se funziona!

Sono davvero curioso di vedere e sentire cosa ci fai. Se apporti modifiche, aggiornamenti, modifiche (come il sensore di luce e i valori di temperatura. All'esterno potrebbe funzionare meglio o peggio che all'interno) qualsiasi cosa.

Sono anche curioso di vedere se funziona bene con tutti i sintetizzatori. Sul mio Volca Bass funziona perfettamente, ma sul mio Neutron l'LFO si blocca non appena invio un Midi Note. Va bene quando lo riavvio, ma è strano. Non sono sicuro che ci sia qualcosa nella Libreria Midi o nel mio codice, potrei provare a farlo presto senza una Libreria e vedere se migliora.

Grazie per la lettura e la visione e buona fortuna!!

Consigliato: