Table of Contents

Laura HUZUM-COMĂNICI - Pian Electric

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul ales presupune implementarea unui pian electric, ce inregistreaza si reda o secventa de apasari de butoane. Pianul are 8 note, actionate prin butoane. Scopul acestui proiect este sa observ cat de mult ma pot apropia de un instrument muzical functional. Este un proiect util pentru observarea/intelegerea limitarilor si capabilitatilor unor componente electrice simple de a se comporta asemeni unui instrument muzical.

Descriere generală

Butoanele de control reprezinta butoanele ce vor seta pianul in modul default(doar redarea notelor imediat dupa apasarea butonului), modul de redare sau de inregistrare, iar LED-urile indicatoare se vor aprinde corespunzator.

Card-ul microSD se utilizeaza pentru stocarea inregistrarilor si redarea lor.

Butoanele pentru claviatura vor fi 8 butoane simple, a caror apasare va genera redare (+/- inregistrarea) notei muzicale corespunzatoare (sunet cu o anumita frecventa si de o anumita durata).

Hardware Design

Lista Piese

Scheme electrice

Claviatura:

Butoane de control:

Difuzor + slot card SD:

Software Design

LOGICA

Logica este bazata pe principiul de polling, mictrocontrollerul interogand din 10 in 10 ms starea in care se afla butoanele placutei. In functie de modul in care se afla (play, redare sau inregistrare), programul va avea o anumita logica.

Fiecare nota are o anumita frecventa (gama luata din lab3.c), precizata in array-ul:

unsigned int notes_freq[8] =
{
/*DO   RE   MI   FA   SOL  LA   SI   DO*/
261, 294, 329, 349, 391, 440, 466, 523
};

Starea DEFAULT este modul in care va lucra pianul daca nu actionam asupra celorlalte butoane. La schimbarea modului de functionare, pentru a reveni la starea DEFAULT, este necesara o apasare a butonului [♪], legat la PD5.

Redarea sunetelor se va realiza prin verificarea butoanelor apasate, (prin aceeasi logica de polling) si redarea unei singure note. In cazul apasarii mai multor butoane, se va reda nota cea mai inalta, iar daca nu s-a apasat nici o nota, atunci se dezactiveaza iesirea.

Starea RECORD este modul in care placuta va inregistra secventa de note apasate, stocandu-le intr-un array temporar. Inregistrarea nu va incepe pana nu se va apasa un buton pe claviatura, pentru a preveni inregistrarea unei pauze prelungite nenecesare. Pentru a incheia inregistrarea, se apasa din nou pe butonul de record. Nota muta se va inregistra! La incheierea inregistrarii, melodia se salveaza pe cardul microSD.

Starea PLAY va citi melodia stocata pe cardul microSD si o va reda. Nota muta se va “reda” prin inchiderea iesirii.

DEZVOLTARE

In programul main.c gasim functiile principale responsabile de logica programului:

 void init() : 
  * initializeaza butoanele ca intrari
  * activeaza rezistentele de pull-up pentru ele
  * seteaza LED-urile ca output
  * activeaza intreruperile 
  * seteaza difuzorul ca iesire
  * initializeaza cardul microSD
 ISR(TIMER2_comp_vect) :
  * determina starea de lucru curent (default, play, rec)
  * verifica starea claviaturii si realizeaza operatiile necesare in functie de stare

Pentru interfatarea cu cardul slotul de card, am folosit interfata SPI pusa la dispozitie de microcontroller, activa pe pinii PB0-PB4, conform schemelor electrice. API-ul de lucru cu aceasta interfata este pus la dispozitie in laboratorul 4, ce scrie si citeste fisiere folosind un filesystem in format Petit FAT Filesystem.

Pentru compilare am folosit avr-gcc, pe Ubuntu 16.04, in linia de comanda si pentru programarea placutei am folosit bootloaderul pus la dispozitie de catre echipa PM. Codul sursa l-am scris in vim.

Bibliotecile folosite au fost cele specificate in laboratorul 3 si 4.

Rezultate Obţinute

Placuta de baza si cea de test + slot card microSD

Placuta de test

Lipiturile de pe spatele placutei de test

Concluzii

Pentru un prim proiect in care am lucrat cu elemente hardware a fost interesant, insa timpul trebuie dozat foarte bine pentru a putea obtine o forma functionala a proiectului. Am sertizat cabluri de mi s-a facut rau, cred ca la partea HW cel mai mult timp am pierdut incercand sa sertizez fire subtiri si scurte, fara un cleste de sertizare.

Partea de software mi se pare greoaie, dar resursele din laborator si din proiectele din anii trecuti ajuta foarte mult. Partea de debugging este destul de tricky. Este nevoie de destul de mult ajutor din partea asistentilor de laborator.

Acest proiect a fost o experienta interesanta, ma bucur ca nu am dat foc la nimic in laborator.

Download

Schema eagle

eagle_schematic_pianelectric_laura_huzumcomanici.rar

Cod sursa

pianelectric_huzumcomanici_laura332cc2017.zip

Bibliografie/Resurse

Butoane si slot card (elemente eagle):

https://github.com/halfakop/eagle-lbr

Tutorial eagle:

https://www.youtube.com/watch?v=1AXwjZoyNno

API interfata SPI card microSD: http://cs.curs.pub.ro/wiki/pm/lab/lab4

Referinta PWM http://cs.curs.pub.ro/wiki/pm/lab/lab2