This is an old revision of the document!
Ciprian-Marian Munteanu, 332CB
Vocal Coach este un dispozitiv embedded care ajuta utilizatorul sa exerseze intonatia vocala. Dispozitivul reda o nota muzicala de referinta folosind un buzzer pasiv, capteaza vocea utilizatorului printr-un microfon analogic cu amplificare, analizeaza semnalul audio folosind algoritmul Goertzel si ofera feedback in timp real: nota cantata este prea joasa (LOW), corecta (OK) sau prea inalta (HIGH).
Ideea a pornit de la nevoia unui instrument simplu si accesibil pentru incepatorii in muzica, care sa permita exersarea intonatiei fara a depinde de un smartphone sau conexiune la internet. Spre deosebire de aplicatiile generale de tuning, acest dispozitiv este construit special pentru antrenament vocal pe un set restrans de note (C4-C5), ceea ce il face fezabil pe hardware cu resurse limitate.
Repository GitHub: https://github.com/ciprianmunteanu1/vocal-coach
Sistemul este organizat in urmatoarele module:
Module hardware:
Module software:
Interactiunea modulelor: Utilizatorul selecteaza nota tinta cu butoanele. La apasarea START, Arduino reda nota pe buzzer, apoi deschide o fereastra de ascultare in care ADC-ul esantioneaza microfonul intr-un buffer. Algoritmul Goertzel proceseaza bufferul si identifica frecventa dominanta. Rezultatul este comparat cu nota tinta si afisat pe OLED si prin modulul LED.
| Componenta | Cantitate | Rol |
|---|---|---|
| Arduino Nano ATmega328P + CH340 | 1 | Microcontroller principal |
| Modul microfon MAX4466 ajustabil | 1 | Intrare audio |
| Afisaj OLED 128×64 I2C SSD1306 | 1 | Afisare informatii |
| Buzzer pasiv 5V | 1 | Redare nota de referinta |
| Modul LED semafor 3.3-5V | 1 | Feedback vizual |
| Buton tactil 6x6x5mm | 3 | Intrare utilizator |
| Potentiometru 10K WH148 | 1 | Selectare nota tinta |
| Tranzistor NPN 2N2222 / BC337 | 1 | Driver pentru buzzer |
| Rezistor 1K ohm | 1 | Limitare curent baza tranzistor |
| Rezistor 220 ohm | 5 | Limitare curent LED-uri / rezerve |
| Condensator electrolitic 10uF | 2 | Filtrare alimentare |
| Condensator ceramic 100nF | 1 | Decuplare locala microfon, optional |
| Breadboard 830 puncte | 1 | Platforma de prototipare |
| Fire Dupont tata-tata / mama-tata | 40+40 | Interconectare |
| Cablu USB | 1 | Alimentare si programare |
Schema electrica prezinta conexiunile dintre Arduino Nano si modulele externe. Microfonul MAX4466 este conectat la intrarea analogica A0, potentiometrul la A1, OLED-ul foloseste magistrala I2C prin pinii A4/SDA si A5/SCL, iar buzzerul pasiv este controlat de pe pinul D9.
In varianta finala, buzzerul este comandat printr-un tranzistor NPN pentru a evita solicitarea directa a pinului microcontrollerului. Pentru primele teste, buzzerul poate fi conectat temporar direct intre D9 si GND, dar varianta cu tranzistor este preferata pentru montajul final.
Butoanele sunt conectate intre pini digitali si GND, urmand sa fie citite in software folosind rezistentele interne de pull-up ale microcontrollerului. Modulul LED semafor este controlat prin trei pini digitali separati, cate unul pentru fiecare culoare.
| Semnal / Componenta | Pin componenta | Pin Arduino Nano | Observatii |
|---|---|---|---|
| MAX4466 | VCC | 5V | Alimentare modul microfon |
| MAX4466 | GND | GND | Masa comuna |
| MAX4466 | OUT | A0 | Semnal audio analogic catre ADC |
| Potentiometru 10K | pin lateral 1 | 5V | Capat divizor de tensiune |
| Potentiometru 10K | pin mijloc | A1 | Valoare analogica pentru selectarea notei |
| Potentiometru 10K | pin lateral 2 | GND | Masa |
| OLED SSD1306 | VCC | 5V | Alimentare display, daca modulul este compatibil 3V-5V |
| OLED SSD1306 | GND | GND | Masa comuna |
| OLED SSD1306 | SDA | A4 / SDA | Magistrala I2C |
| OLED SSD1306 | SCL | A5 / SCL | Magistrala I2C |
| Buzzer pasiv | + | 5V | Alimentare buzzer in varianta cu tranzistor |
| Buzzer pasiv | - | Colector tranzistor NPN | Comandat prin tranzistor |
| Tranzistor NPN | Baza | D9 prin rezistor 1K | Semnal BUZZER_DRV |
| Tranzistor NPN | Colector | Buzzer - | Comutare buzzer catre GND |
| Tranzistor NPN | Emitor | GND | Masa comuna |
| LED semafor | R | D4 | LED rosu, feedback LOW/HIGH |
| LED semafor | Y | D5 | LED galben, stare LISTEN/ANALYZE |
| LED semafor | G | D6 | LED verde, feedback OK |
| LED semafor | GND | GND | Masa comuna |
| Buton START | pin 1 | D2 | Configurat INPUT_PULLUP |
| Buton START | pin 2 | GND | Apasat = LOW |
| Buton NEXT | pin 1 | D3 | Configurat INPUT_PULLUP |
| Buton NEXT | pin 2 | GND | Apasat = LOW |
| Buton BACK | pin 1 | D7 | Configurat INPUT_PULLUP |
| Buton BACK | pin 2 | GND | Apasat = LOW |
| Condensator 10uF | + | 5V | Filtrare alimentare |
| Condensator 10uF | - | GND | Atentie la polaritate |
| Condensator 100nF | intre VCC si GND | langa MAX4466 | Optional, decuplare locala |
Dispozitivul este alimentat prin portul USB al placii Arduino Nano, de la laptop sau de la un power bank de 5V. Alimentarea prin USB este suficienta pentru versiunea curenta a proiectului, deoarece modulele folosite au consum redus: microfonul MAX4466, OLED-ul, buzzerul pasiv si modulul LED semafor.
Toate modulele folosesc masa comuna (GND). Alimentarea de 5V este distribuita catre microfon, OLED, potentiometru, modul LED si buzzer.
Pentru reducerea zgomotului pe alimentare, se folosesc condensatori de filtrare intre 5V si GND. Condensatorul electrolitic de 10uF ajuta la stabilizarea alimentarii, iar un condensator ceramic de 100nF poate fi adaugat langa microfon pentru decuplare locala.
(De completat in etapele urmatoare)
(De completat in etapele urmatoare)
(De completat in etapele urmatoare)
(De adaugat in etapele urmatoare)
| Data | Activitate |
|---|---|
| Etapa 1 | Documentatie initiala, lista componente, schema bloc |
| Etapa 2 | Realizare schema electrica in KiCad, validare conexiuni hardware pe breadboard pentru Arduino Nano, OLED, LED semafor, butoane, potentiometru si buzzer |
Resurse Hardware:
Resurse Software: