Identificador De Acordes

by Raquel_Barbeitas in Circuits > Arduino

125 Views, 0 Favorites, 0 Comments

Identificador De Acordes

WhatsApp Image 2025-02-18 at 14.33.49.jpeg

Um identificador de acordes é um dispositivo que é útil em diversas situações, pois é de fácil uso e compreensão. Podendo servir para:

  1. Educação e prática musical, para uso em salas de aula ou em práticas de leitura;
  2. Composição e transcrição, auxiliando na identificação de acordes, melodias e músicas;
  3. Reconhecimento de notas, inclusive aquelas que não são facilmente perceptíveis, como as produzidas pela voz;

Dessa forma, este projeto propõe a construção de um identificador de notas musicais, capaz de mostrar de forma eficiente os sinais sonoros captados pelo sensor de som KY-038, relacionando-os às frequências correspondentes às 12 notas musicais (C, C#, D, D#, E, F, F#, G, G#, A, A#, B). A leitura será exibida tanto em um display LCD quanto por meio do acendimento de um LED correspondente.

Supplies

Os materiais necessários:

  1. 1 x Módulo de Microfone KY-038
  2. 1 x LCD 16x2 com módulo I2C acoplado
  3. 1 x Arduino UNO
  4. 1 x Cabo USB compatível com arduíno
  5. 1 x Protoboard 400 pontos (pode ser menor)
  6. 1 x placa de cobre (20 x 10 cm) ou 2 x Placas de solda de 280 pontos
  7. 4 x Parafusos M3
  8. 4 x Parafusos M2
  9. 4 x Porcas M3
  10. 4 x Porcas M2
  11. 5 x LED’s verdes (cor opcional)
  12. 7 x LED’s azuis (cor opcional)
  13. 12 x Resistores de 330Ω
  14. Jumpers
  15. Fio elétrico
  16. Fio de solda
  17. Placa MDF de 3mm
  18. Placa acrílico preto translúcido de 3 mm
  19. Fita isolante
  20. Filamento PLA

Diagrama

circuit (4).png
Funky Gogo-Snicket.png

A segunda imagem consta apenas o sistema de LED e o LCD com I2C acoplado.

Calibragem Do Sensor Ky-038

O sensor de som Ky-038, equipado com comparador LM393, é capaz de detectar frequências na faixa de 20 Hz a 20kHz. Ele possui sensibilidade ajustável e tem dois pinos de saída:

  1. A0: Saída analógica
  2. D0: Saída digital

Para o desenvolvimento deste projeto, utilizamos apenas a saída analógica, por meio da qual foi feita a calibragem para aproximadamente 480. Esse número representa um nível sonoro de referência, abaixo do qual ruídos de menor intensidade não serão detectados ao longo do programa.

Portanto, antes da montagem do aparato e da implementação do código principal, é essencial calibrar o microfone. Esse processo é realizado por meio do seguinte código:

void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
}

void loop() {
int sensorValue = analogRead(A1); // Leitura Analógica
Serial.println(sensorValue);
delay(500);
}

Testagem Display LCD 16x2

WhatsApp Image 2024-07-11 at 21.04.20 (1).jpeg

Considerando que estamos tratando de um Display LCD 16x2 com I2C acoplado, temos um dispositivo que visa simplificar as conexões de 16 pinos à 4. Portanto, no módulo I2C, temos um chip PCF8574, que é um expansor de 8 bits que converte os dados I2C de um microcontrolador nos dados paralelos que são exigidos pelo display LCD. Possuindo além do VCC e GND os pinos:

  1. SCL(Serial Clock): Serve de temporizador;
  2. SDA(Serial Data): Recebe e transfere dados;

Assim, conectamos os pinos SCL e SDA às portas A5 e A4 respectivamente, além do VCC e do GND. Instalamos a biblioteca “LiquidCrytal_I2C” e rodamos o seguinte código para reconhecer o endereço cujo LCD possui barramento de codificação:

#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}

void loop()
{
byte error, address;
int nDevices;
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("Endereço I2C encontrado: 0x");
if (address<16)
Serial.print("0 ");
Serial.println(address,HEX);
nDevices++;
}
else if (error==4)
{
Serial.print("ERRO ");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}

if (nDevices == 0)
Serial.println("Nenhum endereço i2C encontrado ");
else
Serial.println(" Feito !");
delay(5000);
}

Encontrado o endereço de 0x27 aplicamos o código “HelloWorld” presente nos exemplos da biblioteca importada e realizamos o ajuste de contraste do display.

Código Principal

O código principal será disponibilizado em uma publicação separada no perfil.


Vale ressaltar que o algoritmo desenvolvido foi baseado no projeto “Arduino Music: Notes and Chord Detector” de Abhilash Patel

Display LED

WhatsApp Image 2025-02-18 at 14.24.57.jpeg
WhatsApp Image 2025-02-18 at 14.25.33.jpeg
WhatsApp Image 2024-07-11 at 21.04.13 (1).jpeg
WhatsApp Image 2024-07-11 at 21.04.19.jpeg

Para a construção do display de LED, adotamos dois métodos possíveis:

  1. Usando uma máquina fresadora
  2. Utilizando duas placas de solda

Independentemente do método adotado, o primeiro passo consistiu em testar individualmente todos os LEDs a fim de garantir o seu funcionamento.

Display com Fresadora:

O esboço da placa PCB foi criado no Fusion360 e em seguida impresso em uma placa de cobre. Após essa etapa, todos os LEDs e resistores foram posicionados corretamente e soldados.

Uma das extremidades de cada resistor foi conectada às entradas digitais do Arduino UNO, enquanto os terminais negativos dos LED’s foram soldadas entre si. De tal forma a restar apenas um fio de ligação ao terra (GND).

O arquivo ZIP com o design da placa PCB para fresagem pode ser acessado em :

https://drive.google.com/file/d/1Am5d3DNG0WmJFT551dcF4wf2ACVg68E6/view?usp=sharing

Display Placas de Solda:

Nesse método, utilizamos duas placas de solda unidas, onde foram realizadas todas as conexões e soldagens necessárias para o funcionamento do display.

Caixa

CaixaQuadrada.PNG

O desenho da estrutura foi criado no Fusion360 (caso queira seu próprio molde recomendo utilizar o MakerCase) e em seguida cortado a laser em MDF de 3mm. Segue abaixo todos os arquivos em DXF da caixa:

Impressora 3D

Microfone.PNG
P&eacute;scaixa.PNG
Protetor.PNG

Os pés da caixa, a proteção do microfone e o suporte do Arduino (suporte adquirido em: https://cults3d.com/en/3d-model/tool/arduinouno) foram projetados no Fusion 360, assim como a própria caixa. Após a modelagem, essas peças foram impressas em uma impressora 3D.

Segue os arquivos:

Montagem

WhatsApp Image 2025-02-18 at 14.33.59.jpeg
WhatsApp Image 2025-02-18 at 14.33.49.jpeg
WhatsApp Image 2025-02-18 at 14.27.28.jpeg

Com todas as etapas anteriores concluídas, basta realizar a montagem final para obter o seu próprio identificador de acordes desenvolvido com o Arduino UNO!