Tabla de contenido:

Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)

Video: Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)

Video: Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Video: 🖥️La PASTA TÉRMICA en los PROCESADORES!✅ | Objetivo Gaming 2024, Mes de julio
Anonim
Generador de música basado en el clima (generador Midi basado en ESP8266)
Generador de música basado en el clima (generador Midi basado en ESP8266)
Generador de música basado en el clima (generador Midi basado en ESP8266)
Generador de música basado en el clima (generador Midi basado en ESP8266)

Hola, hoy explicaré cómo hacer tu propio generador de música basado en el clima.

Está basado en un ESP8266, que es como un Arduino, y responde a la temperatura, la lluvia y la intensidad de la luz.

No espere que haga canciones completas o progresiones de acordes. Es más como música generativa que la gente hace a veces con sintetizadores modulares. Pero es un poco menos aleatorio, se adhiere a ciertas escalas, por ejemplo.

Suministros

ESP8266 (estoy usando el Feather Huzzah ESP8266 de Adafruit)

Sensor de temperatura, humedad y presión barométrica BME280 (versión I2C)

Sensor de lluvia Arduino

25K LDR (resistencia dependiente de la luz)

Algunas resistencias (dos 47, una 100, una 220 y una 1k Ohm)

Conector Midi hembra (5 pines Din) adecuado para montaje en PCB

Cables de puente

Tablero de pruebas o algún tipo de tablero de prototipos

Computadora, usaré una que ejecute Windows 8.1, pero debería funcionar en cualquier sistema operativo que yo sepa.

Opcional: batería LiPo de 1250 mAh con conector JST de Adafruit (solo compatible con algunos ESP)

Paso 1: Paso 1: Software

En primer lugar, necesita el IDE de Arduino.

Entonces necesita el controlador SiLabs CP2104 y el paquete de placa ESP8266.

Esto permite que su computadora programe el ESP a través del UART integrado y permite que el IDE de Arduino programe el ESP.

Puede encontrar toda la información sobre el IDE, el controlador y el paquete de placa en esta página del sitio web de Adafruit.

También necesitará la biblioteca Arduino Midi para poder enviar datos Midi. Se puede hacer sin él, pero esto hace que todo sea mucho más fácil.

Para comunicarme con el BME280 utilicé esta biblioteca BME280-I2C-ESP32. (Esto es para la versión I2C del BME280)

Y esa biblioteca, a su vez, requiere Adafruit Unified Sensor Driver. Esta no es la primera vez que necesito esta biblioteca para usar una biblioteca diferente sin problemas, por lo que siempre tengo esta biblioteca marcada en algún lugar.

Paso 2: Paso 2: Hardware

Paso 2: hardware
Paso 2: hardware
Paso 2: hardware
Paso 2: hardware
Paso 2: hardware
Paso 2: hardware

Muy bien, finalmente llegamos a lo bueno, el hardware.

Como mencioné, usé este Adafruit ESP, pero debería funcionar bien con un NodeMCU. Recomiendo la versión V2 porque creo que encaja mucho mejor en una placa de pruebas y puedes conseguirlas muy baratas en eBay o AliExpress. Me gusta el hecho de que el Adafruit ESP tiene una CPU más rápida, viene con un conector JST hembra para un LiPo y un circuito de carga. También es un poco más fácil averiguar qué Pin estás usando. Creo que en un NodeMCU, el pin etiquetado D1 es en realidad GPIO5, por lo que siempre necesita un gráfico de Pinout a mano. No es un gran problema en absoluto, pero es conveniente para los novatos que etiquetaron con tanta claridad como Adafruit.

Primero conectemos el BME280, porque hay algunas variaciones en este modelo. Como puede ver en las fotos, el mío tiene un agujero grande, pero también hay algunos con 2 agujeros. Puede ver que tiene 4 entradas y salidas, 1 para alimentación, una para tierra y una SCL y SDA. Esto significa que se comunica a través de I2C. Creo que otros modelos se comunican a través de SPI. Y en algunos puede elegir SPI o I2C. SPI puede requerir una biblioteca diferente o al menos un código diferente y un cableado diferente. También creo que la S en SPI significa Serial y no puedo decir si esto interferirá con la parte Midi de este proyecto, ya que también funciona a través de la conexión Serial.

Conectar este BME es bastante sencillo. En el ESP8266 puede ver que los pines 4 y 5 están etiquetados como SDA y SCL respectivamente. Simplemente conecte esos pines directamente al pin SDA y SCL en el BME. Por supuesto, también conecte el VIN al riel positivo de la placa de pruebas y GND al riel negativo. Estos, a su vez, están conectados al pin 3V3 y GND del ESP.

A continuación, conectaremos el LDR. En el ejemplo de Fritzing, puede ver los 3.3 voltios pasando a través de una resistencia, luego se divide en el LDR y otra resistencia. Luego, después del LDR, se divide nuevamente en una resistencia y en el ADC.

Esto es para proteger el ESP contra voltajes demasiado altos y para asegurarse de que obtenga valores legibles. El ADC puede manejar 0-1 voltios pero el 3V3 entrega 3.3 voltios. Probablemente no explote nada si supera 1 voltio, pero no funcionará bien.

Entonces, primero usamos un divisor de voltaje con resistencias de 220 y 100 ohmios para reducir el voltaje de 3.3 a 1.031 voltios. Luego, el LDR de 25k ohmios y la resistencia de 1k ohmios forman otro divisor de voltaje que reduce el voltaje desde cualquier lugar entre 1.031 y 0 voltios, dependiendo de la cantidad de luz que reciba el LDR.

Luego tenemos el sensor de lluvia. Una parte dice FC-37, la otra parte dice HW-103. Acabo de comprar el primero que encontré en Ebay que decía que puede manejar 3.3 y 5 voltios. (Creo que todos pueden).

Esto es bastante sencillo, podríamos usar una salida analógica, pero podemos girar el pequeño Trimpot para que el sensor sea tan sensible como queramos (y ya usamos nuestro pin analógico en el ESP). Al igual que con los otros sensores, tenemos que suministrar energía desde el carril positivo y conectarlo al carril de tierra. Sin embargo, a veces el orden de los pines varía. En la mía es VCC, Ground, Digital, Analog, pero en la imagen de Fritzing es diferente. Pero si solo prestas atención, esto debería ser fácil de hacer bien.

Y finalmente, el Midi Jack. En mi protoboard no puede asentarse en el borde de la protoboard, ya que los pines no se alinean todos. Si esto te molesta, trataría de conseguir una protoboard en una tienda física. O inspeccione muy bien las imágenes.

Como puede ver en el esquema, el voltaje positivo y la señal en serie pasan por una resistencia de 47 ohmios.

Si realiza este proyecto con un Arduino Uno, por ejemplo, asegúrese de usar resistencias de 220 ohmios. Estos ESP funcionan con una lógica de 3.3 V, pero la mayoría de los Arduino usan 5.0 V, por lo que debe limitar más la corriente que pasa por el cable Midi.

Y finalmente conecte el pin del medio al riel de tierra. Los otros 2 pines del Din de 5 pines no se utilizan.

Paso 3: Paso 3: Código

¡Y finalmente tenemos el código!

En este archivo Zip pongo 2 bocetos. 'LightRainTemp' simplemente prueba todos los sensores y envía sus valores (¡asegúrese de abrir la ventana de terminal!)

Y, por supuesto, tenemos el boceto LRTGenerativeMidi (LRT significa Light, Rain, Temperature).

En el interior puede encontrar un montón de explicaciones en los comentarios sobre lo que está sucediendo. No voy a entrar en cómo escribí todo, eso llevaría horas. Si quieres saber por dónde empezar con algo como esto, tengo otros proyectos en mente. Un pequeño generador de riffs aleatorios con algunos botones y un secuenciador con un montón de características que no puedo encontrar en otros modelos.

Pero esos tendré que terminar de diseñar y codificar primero. Avísame si quieres estar al día sobre otros proyectos. No he decidido si haré más instructivos o haré una serie de videos.

Paso 4: Paso 4: ¡Conéctelo y pruébelo

¡Y ahora es el momento de probarlo!

Simplemente conecte un cable Midi, asegúrese de configurar su sintetizador / teclado para que responda al canal 1 o cambie el canal en el código Arduino y vea si funciona.

Tengo mucha curiosidad por ver y escuchar lo que haces con él. Si realiza cambios, actualizaciones, ajustes (como el sensor de luz y los valores de temperatura. En el exterior, podría funcionar mejor o peor que en el interior), cualquier cosa.

También tengo curiosidad por ver si funciona bien con todos los sintetizadores. En mi Volca Bass funciona perfectamente, pero en mi Neutron el LFO se atasca tan pronto como envío una Midi Note. Está bien cuando lo reinicio, pero es extraño. No estoy seguro de si hay algo en la biblioteca Midi o en mi código, podría intentar hacerlo sin una biblioteca pronto y ver si mejora.

Gracias por leer y ver y buena suerte !!

Recomendado: