Índice:
- Suprimentos
- Etapa 1: Etapa 1: Software
- Etapa 2: Etapa 2: Hardware
- Etapa 3: Etapa 3: Código
- Etapa 4: Etapa 4: conecte e teste
Vídeo: Weather Based Music Generator (ESP8266 Midi Generator): 4 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Olá, hoje vou explicar como fazer seu próprio pequeno gerador de música baseado no clima.
É baseado em um ESP8266, que é como um Arduino, e responde à temperatura, chuva e intensidade da luz.
Não espere que ele crie músicas inteiras ou progressões de acordes. É mais como música generativa que as pessoas às vezes fazem com sintetizadores modulares. Mas é um pouco menos aleatório do que isso, ele se aplica a certas escalas, por exemplo.
Suprimentos
ESP8266 (estou usando o Feather Huzzah ESP8266 da Adafruit)
Sensor de temperatura, umidade e pressão barométrica BME280 (versão I2C)
Sensor de chuva Arduino
25K LDR (resistor dependente de luz)
Alguns resistores (dois 47, um 100, um 220 e um 1k Ohm)
Conector Midi Fêmea (5 Pinos Din) adequado para montagem em PCB
Jumper Wires
Placa de ensaio ou algum tipo de placa de prototipagem
Computador, estarei usando um com Windows 8.1, mas deve funcionar em qualquer sistema operacional, até onde eu sei.
Opcional: bateria LiPo de 1250 mAh com conector JST da Adafruit (compatível apenas com alguns ESP)
Etapa 1: Etapa 1: Software
Em primeiro lugar, você precisa do IDE do Arduino.
Então você precisa do driver SiLabs CP2104 e do pacote de placa ESP8266.
Isso permite que seu computador programe o ESP por meio do UART integrado e permite que o IDE do Arduino programe o ESP.
Você pode encontrar todas as informações sobre o IDE, Driver e Pacote de Placa nesta página no site da Adafruit.
Você também precisará da Arduino Midi Library para enviar dados Midi. Isso pode ser feito sem, mas isso torna tudo muito mais fácil.
Para me comunicar com o BME280, usei esta biblioteca BME280-I2C-ESP32. (Isso é para a versão I2C do BME280)
E essa biblioteca, por sua vez, requer o Adafruit Unified Sensor Driver. Esta não é a primeira vez que preciso desta biblioteca para usar uma biblioteca diferente sem problemas, então sempre tenho esta biblioteca marcada em algum lugar.
Etapa 2: Etapa 2: Hardware
Tudo bem, então finalmente chegamos às coisas boas, o hardware.
Como mencionei, usei este Adafruit ESP, mas deve funcionar bem com um NodeMCU. Eu recomendo a versão V2, pois acredito que ela se encaixa muito melhor em uma placa de ensaio e você pode obtê-la muito barato no eBay ou AliExpress. Eu gosto do fato de que o Adafruit ESP tem uma CPU mais rápida, vem com um conector JST fêmea para um LiPo e um circuito de carga. Também é um pouco mais fácil descobrir qual Pin você está usando. Eu acredito que em um NodeMCU o pino rotulado D1 é na verdade GPIO5, por exemplo, então você sempre precisa de um gráfico de pinagem à mão. Não é um grande problema, mas apenas conveniente para iniciantes que rotularam o Adafruit de forma tão clara.
Primeiro, vamos conectar o BME280, porque existem algumas variações neste modelo. Como você pode ver pelas fotos, o meu tem um buraco grande, mas também há alguns com 2 buracos. Você pode ver que tem 4 entradas e saídas, 1 para alimentação, uma para aterramento e um SCL e SDA. Isso significa que ele se comunica via I2C. Acredito que outros modelos se comunicam via SPI. E em alguns você pode escolher SPI ou I2C. O SPI pode exigir uma biblioteca diferente ou, pelo menos, um código diferente e uma fiação diferente. Eu também acredito que o S em SPI significa Serial e não posso dizer se isso vai interferir com a parte Midi deste projeto, já que também está funcionando via conexão Serial.
Conectar este BME é bastante simples. No ESP8266 você pode ver os pinos 4 e 5 sendo rotulados como SDA e SCL, respectivamente. Basta conectar esses pinos diretamente ao pino SDA e SCL no BME. É claro que também conecte o VIN ao trilho positivo da placa de ensaio e o GND ao trilho negativo. Esses, por sua vez, são conectados ao pino 3V3 e GND do ESP.
A seguir, conectaremos o LDR. No exemplo do Fritzing você pode ver os 3,3 volts passando por um resistor, em seguida, é dividido para o LDR e outro resistor. Então, após o LDR, ele é dividido novamente em um resistor e no ADC.
Isso é para proteger o ESP de obter tensões muito altas e para garantir que esteja obtendo valores legíveis. O ADC pode lidar com 0-1 Volts, mas o 3V3 fornece 3,3 volts. Provavelmente não explodirá nada se você passar de 1 volt, mas não vai funcionar bem.
Portanto, primeiro usamos um divisor de tensão usando resistores de 220 e 100 ohms para reduzir a tensão de 3,3 para 1,031 volts. Então, o LDR de 25k ohm e o resistor de 1k ohm formam outro Devedor de Voltagem que reduz a voltagem de qualquer lugar entre 1,031 e 0 volts, dependendo da quantidade de luz que o LDR recebe.
Então temos o Sensor de chuva. Uma parte diz FC-37, a outra parte diz HW-103. Acabei de comprar o primeiro que encontrei no Ebay que dizia que aguenta 3,3 e 5 volts. (Eu acho que todos eles podem).
Isso é muito simples, poderíamos usar uma saída analógica, mas podemos apenas girar o pequeno Trimpot para tornar o sensor tão sensível quanto quisermos (e já usamos nosso único pino analógico no ESP). Como com os outros sensores, temos que fornecer energia do trilho positivo e conectá-lo ao trilho de aterramento. Às vezes, a ordem dos pinos varia. No meu é VCC, Ground, Digital, Analog, mas na imagem do Fritzing é diferente. Mas se você apenas prestar atenção, isso deve ser fácil de acertar.
E, finalmente, o Midi Jack. Na minha placa de ensaio, ele não pode ficar na borda da placa de ensaio, pois nem todos os pinos se alinham. Se isso incomoda você, eu tentaria comprar uma placa de ensaio em uma loja física. Ou inspecione muito bem as fotos.
Como você pode ver no esquema, a tensão positiva e o sinal serial passam por um resistor de 47 ohms.
Se você fizer este projeto com um Arduino Uno, por exemplo, certifique-se de usar resistores de 220 ohms !! Esses ESPs funcionam com lógica de 3,3 V, mas a maioria dos Arduino usa 5,0 V, então você tem que limitar mais a corrente que passa pelo cabo Midi.
E, finalmente, conecte o pino do meio ao trilho de aterramento. Os outros 2 pinos do 5 Pin Din não são usados.
Etapa 3: Etapa 3: Código
E finalmente temos o código!
Neste arquivo Zip coloquei 2 esboços. 'LightRainTemp' simplesmente testa todos os sensores e envia de volta seus valores. (Certifique-se de abrir a janela do terminal!)
E, claro, temos o esboço LRTGenerativeMidi (LRT significa Luz, Chuva, Temperatura).
Dentro, você pode encontrar um monte de explicações em comentários sobre o que está acontecendo. Não vou entrar em como escrevi a coisa toda, isso levaria horas. Se você quiser saber por onde começar com algo assim, tenho alguns outros projetos em mente. Um pequeno gerador Random Riff com alguns botões e um Sequencer com vários recursos que não consigo encontrar em outros modelos.
Mas eu terei que terminar de projetar e codificar primeiro. Avise-me se quiser se manter atualizado sobre outros projetos. Ainda não decidi se farei mais instrutíveis ou uma série de vídeos.
Etapa 4: Etapa 4: conecte e teste
E agora é hora de testar!
Simplesmente conecte um cabo Midi, certifique-se de configurar seu Sintetizador / Teclado para responder ao canal 1 ou mude o canal no código do Arduino e veja se funciona!
Estou muito curioso para ver e ouvir o que você faz com isso. Se você fizer alterações, atualizações, ajustes (como os valores do sensor de luz e da temperatura. Do lado de fora, pode funcionar melhor ou pior do que o interior).
Também estou curioso para ver se funciona bem com todos os sintetizadores. No meu baixo Volca funciona perfeitamente, mas no meu Neutron o LFO fica preso assim que eu envio uma nota Midi. Tudo bem quando eu reinicio, mas é estranho. Não tenho certeza se há algo na Biblioteca Midi ou no meu código, posso tentar fazer isso sem uma Biblioteca em breve e ver se fica melhor.
Obrigado por ler e assistir e boa sorte !!
Recomendado:
Arduino Based Egg Plotter: 17 etapas (com imagens)
Arduino Based Egg Plotter: Um Egg plotter é um robô de arte que pode desenhar em objetos de formato esférico, como ovos. Você também pode usar esta máquina para desenhar em bolas de pingue-pongue e bolas de golfe. Você pode usar sua imaginação com os designs que colocar nele, você pode, por exemplo, fazer
Crack the Code Game, Arduino Based Puzzle Box: 4 etapas (com imagens)
Crack the Code Game, Arduino Based Puzzle Box: Neste Instructable, vou mostrar como construir seu próprio jogo de crack em que você usa um dial codificador rotativo para adivinhar o código gerado aleatoriamente para o cofre. Existem 8 LEDs na parte frontal do cofre para informar quantos
Máquina de Pinball de mesa usando Evive- Arduino Based Embedded Plaform: 18 etapas (com imagens)
Máquina de Pinball de Mesa usando Evive- Arduino Based Embedded Plaform: Outro fim de semana, outro jogo emocionante! E desta vez, nada mais é do que o jogo de arcade favorito de todos - Pinball! Este projeto mostrará como fazer sua própria máquina de Pinball facilmente em casa. Tudo que você precisa são os componentes do evive
Arduino Based MIDI Fighter (Touch Sensitive): 7 etapas (com imagens)
Arduino Based MIDI Fighter (Touch Sensitive): MIDI significa Musical Instrument Digital Interface. Aqui, estamos fazendo um lutador MIDI sensível ao toque. Ele tem 16 pads. estes podem ser aumentados ou diminuídos. Aqui, usei 16 por causa dos pinos Arduino limitados. Também usei pinos de entrada analógica
SEER- InternetOfThings Based Intelligent Personal Assistant: 12 etapas (com imagens)
SEER- InternetOfThings Based Intelligent Personal Assistant: Seer é um dispositivo que desempenhará um papel impulsionador no campo de casas inteligentes e automação. É basicamente uma aplicação de internet das coisas. SEER é um alto-falante sem fio viva-voz de 9 polegadas feito do Raspberry Pi 3 modelo B com uma câmera integrada