Taula de continguts:

Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)
Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)

Vídeo: Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)

Vídeo: Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)
Vídeo: ИССЛЕДОВАНИЯ PSI: ПАРАПСИХОЛОГИЯ В ИСПАНИИ | МАНУЭЛЬ КАРБАЛЛАЛ 2024, Desembre
Anonim
Generador de música basat en el temps (Generador de midi basat en ESP8266)
Generador de música basat en el temps (Generador de midi basat en ESP8266)
Generador de música basat en el temps (Generador Midi basat en ESP8266)
Generador de música basat en el temps (Generador Midi basat en ESP8266)

Hola, avui explicaré com fer el vostre propi petit generador de música basat en el clima.

Es basa en un ESP8266, que és com un Arduino, i respon a la temperatura, la pluja i la intensitat de la llum.

No espereu que faci cançons senceres o progressions d'acords. S’assembla més a la gent de la música generativa de vegades amb sintetitzadors modulars. Però és una mica menys atzarós que, per exemple, s’adhereix a certes escales.

Subministraments

ESP8266 (Estic fent servir el Feather Huzzah ESP8266 d'Adafruit)

Sensor de temperatura, humitat i pressió baromètrica BME280 (versió I2C)

Sensor de pluja Arduino

25K LDR (resistència dependent de la llum)

Algunes resistències (dues de 47, una de 100, una de 220 i una de 1k Ohm)

Connector Midi femella (5 pins Din) adequat per al muntatge de PCB

Filferros de pont

Tauler de pa o algun tipus de tauler de prototipatge

Ordinador, n’utilitzaré un amb Windows 8.1, però hauria de funcionar en qualsevol sistema operatiu que jo sàpiga.

Opcional: bateria LiPo de 1250 mAh amb connector JST d'Adafruit (només compatible amb alguns ESP)

Pas 1: pas 1: programari

Primer de tot, necessiteu l’IDE Arduino.

A continuació, necessiteu el controlador SiLabs CP2104 i el paquet ESP8266 Board.

Això permet que el vostre ordinador pugui programar l’ESP mitjançant l’UART integrat i permet que Arduino IDE programi l’ESP.

Podeu trobar tota la informació sobre el paquet IDE, Driver i Board en aquesta pàgina del lloc web d’Adafruit.

També necessitareu la biblioteca Arduino Midi per poder enviar dades Midi. Es pot fer sense, però això fa que tot sigui molt més fàcil.

Per comunicar-me amb el BME280 he utilitzat aquesta biblioteca BME280-I2C-ESP32. (Això és per a la versió I2C del BME280)

I aquesta biblioteca al seu torn requereix Adafruit Unified Sensor Driver. Aquesta no és la primera vegada que necessito aquesta biblioteca per poder utilitzar una biblioteca diferent sense problemes, de manera que sempre tinc aquesta adreça d'interès en algun lloc.

Pas 2: pas 2: maquinari

Pas 2: maquinari
Pas 2: maquinari
Pas 2: maquinari
Pas 2: maquinari
Pas 2: maquinari
Pas 2: maquinari

Molt bé, per fi arribem a les coses bones, al maquinari.

Com he esmentat, he utilitzat aquest Adafruit ESP, però hauria de funcionar bé amb un NodeMCU. Recomano la versió V2, ja que crec que encaixa molt millor en una taula de treball i la podeu aconseguir molt econòmica a eBay o AliExpress. M'agrada el fet que l'Adafruit ESP tingui una CPU més ràpida, ve amb un connector JST femella per a un LiPo i un circuit de càrrega. També és una mica més fàcil esbrinar quin pin utilitzeu. Crec que en un NodeMCU, el pin etiquetat D1 és en realitat GPIO5, per exemple, de manera que sempre necessiteu un gràfic Pinout a mà. No és un gran problema, però només és convenient per als novells que van etiquetar l’Adafruit tan clarament.

En primer lloc, connectem el BME280, perquè hi ha algunes variacions en aquest model. Com podeu veure a les imatges, el meu té el gran forat, però també n'hi ha amb dos. Podeu veure que té 4 entrades i sortides, 1 per a alimentació, una per a terra i un SCL i SDA. Això significa que es comunica mitjançant I2C. Crec que altres models es comuniquen mitjançant SPI. I en alguns podeu triar SPI o I2C. SPI pot requerir una biblioteca diferent o almenys un codi diferent i un cablejat diferent. També crec que el S a SPI significa Serial i no puc dir si això interferirà amb la part Midi d’aquest projecte, ja que també funciona mitjançant la connexió Serial.

Enganxar aquest BME és bastant senzill. A l’ESP8266 es poden veure els pins 4 i 5 amb l’etiqueta SDA i SCL respectivament. Simplement connecteu aquests pins directament als pins SDA i SCL del BME. Per descomptat, també connecteu VIN al carril positiu de la taula de pa i GND al carril negatiu. Al seu torn, estan connectats al pin 3V3 i GND de l’ESP.

A continuació connectarem el LDR. A l'exemple de Fritzing es poden veure els 3,3 volts que passen per una resistència, després es divideix a la LDR i a una altra resistència. Després, després del LDR, es torna a dividir a una resistència i a l'ADC.

Es tracta de protegir l’ESP d’obtenir tensions massa altes i assegurar-se que obtingui valors llegibles. L'ADC pot suportar 0-1 volts, però el 3V3 proporciona 3,3 volts. Probablement no explotarà res si se supera l’1 volt, però no funcionarà bé.

Per tant, primer fem servir un divisor de tensió que utilitza resistències de 220 i 100 ohm per reduir la tensió de 3,3 a 1,031 volts. A continuació, el LDR de 25k ohm i la resistència de 1k ohm formen un altre divisor de voltatge que fa baixar el voltatge des de qualsevol punt entre 1.031 i 0 volts, depenent de la quantitat de llum que obtingui el LDR.

Després tenim el sensor de pluja. Una part diu FC-37, l’altra diu HW-103. Acabo de comprar el primer que vaig trobar a Ebay que deia que pot suportar 3,3 i 5 volts. (Crec que tots poden).

Això és bastant senzill, podríem utilitzar una sortida analògica, però només podem girar el petit Trimpot perquè el sensor sigui tan sensible com vulguem (i ja hem utilitzat el nostre pin analògic a l’ESP). Igual que amb la resta de sensors, hem de subministrar energia del rail positiu i connectar-lo al rail de terra. De vegades, però, l’ordre dels passadors varia. A la meva és VCC, Ground, Digital, Analog, però a la imatge de Fritzing és diferent. Però si només us fixeu, hauria de ser fàcil d’encertar.

I, finalment, el Midi Jack. Al meu tauler de pa no pot asseure's a la vora de la tauleta de pa, ja que els passadors no s'alineen tots. Si això us molesti, intentaria aconseguir una taula de tall en una botiga física. O inspeccioneu molt bé les imatges.

Com podeu veure a l'esquema, la tensió positiva i el senyal sèrie passen per una resistència de 47 ohms.

Si feu aquest projecte amb un Arduino Uno, per exemple, assegureu-vos d'utilitzar resistències de 220 ohmis. Aquests ESP funcionen amb lògica de 3,3 V, però la majoria d'Arduino utilitza 5,0 V, de manera que heu de limitar més el corrent que passa pel cable Midi.

I, finalment, connecteu el passador central al rail de terra. Els altres 2 pins del 5 Pin Din no s’utilitzen.

Pas 3: Pas 3: Codi

I finalment tenim el codi!

En aquest fitxer Zip he posat 2 esbossos. "LightRainTemp" simplement posa a prova tots els sensors i envia els seus valors (assegureu-vos d'obrir la finestra del terminal).

I, per descomptat, tenim l’esbós de LRTGenerativeMidi (LRT significa Light, Rain, Temperature).

Dins podeu trobar un munt d’explicacions en comentaris sobre el que està passant. No vaig a parlar de com vaig escriure tot, això trigaria hores. Si voleu saber per on començar amb alguna cosa així, tinc en ment alguns altres projectes. Un petit generador de Randiff Riff amb uns quants botons i un Seqüenciador amb un munt de funcions que no puc trobar en altres models.

Però aquells que hauré d'acabar de dissenyar i codificar primer. Feu-me saber si voleu estar al dia sobre altres projectes. No he decidit si faré més instruccions o faré una sèrie de vídeos.

Pas 4: Pas 4: connecteu-lo i proveu-lo

I ara toca provar-ho!

Simplement connecteu un cable Midi, assegureu-vos d’establir el sintetitzador / teclat per respondre al canal 1 o canviar el canal al codi Arduino i veure si funciona.

Tinc molta curiositat per veure i escoltar què en fas. Si feu canvis, actualitzacions, ajustaments (com ara els valors del sensor de llum i la temperatura. A l'exterior pot funcionar millor o pitjor que a l'interior) qualsevol cosa.

També tinc curiositat per veure si funciona bé amb tots els sintetitzadors. En el meu Volca Bass funciona perfectament, però en el meu neutró, el LFO queda atrapat tan bon punt envio una nota Midi. Està bé quan el reinicio, però és estrany. No estic segur de si hi ha alguna cosa a la biblioteca Midi o al meu codi, potser provaré de fer-ho sense biblioteca aviat i veure si millora.

Gràcies per llegir i mirar i molta sort !!

Recomanat: