Cristian-Ionuţ NANCU (78267) - ATmegaPlay

Autorul poate fi contactat la adresa: Login pentru adresa

ATmegaPlay Logo

Introducere

Proiectul reprezintă realizarea unui player muzical care poate fi controlat cu gesturile mâinii. Principiul de funcționare:

  • Utilizatorul face unul din gesturile suportate de senzorul de gesturi
  • Gestul este recunoscut de către device şi transpus în acţiunea corespunzătoare
  • Player-ul muzical poate modifica volumul piesei curente sau să o schimbe (cu piesa următoare sau cu cea precedentă)

Gesturi suportate:

  1. Swipe right - Play next track
  2. Swipe left - Play previous track
  3. Swipe up - Volume UP
  4. Swipe down - Volume DOWN
  5. Departarea mainii de senzor - Resume
  6. Apropierea mainii de senzor - Pause

Consider că acest proiect nu este doar cool, ci şi util pentru împătimiţii de muzică a căror activitate presupune 'să se murdărească pe mâini'.

Descriere generală

Schemă bloc ATmegaPlay

Partea hardware presupune un circuit al cărui nucleu este reprezentat de un microcontroller ATmega324. Împreună cu acesta, voi folosi senzorul de gesturi APDS-9960 şi modulul MP3 DFPlayer împreună cu 2 difuzoare de 1W pentru redarea melodiilor. Pe cardul microSD se vor afla melodiile redate.

Îmi propun să folosesc pinul INT al APDS-9960 pentru a genera întreruperi la detectarea gesturilor şi a pune sistemul într-o stare de sleep în rest. De asemenea, îmi voi implementa propriile biblioteci folosite în comunicarea cu senzorul de gesturi APDS-9960, respectiv cu modulul MP3 DFPlayer Mini.

Hardware Design

Listă de componente:

  • ATmega324;
  • Senzor de gesturi APDS-9960
  • Regulator 5V - 3.3V
  • Modul MP3 DFplayer Mini
  • Card microSD
  • Difuzor 1W
  • piesele de bază
  • carcasă specială marca Pizza Hut

Schema electrică:

Schema electrică in format .sch: atmegaplay_electrical_scheme_final.sch

Software Design

Mediu de dezvoltare:

  • limbaj de programare: C;
  • am utilizat compilatorul oferit de AtmelStudio pentru a obţine fişierul .hex;
  • am folosit HIDBootFlash pentru a încărca fişierul .hex pe AtMega;
  • IDE: AtmelStudio.

Detalii implementare:

  • pentru modulul MP3 DFPlayer mini am adaptat o bibliotecă dezvoltată pentru Arduino [1] pentru redarea melodiilor MP3 de pe cardul SD (2GB, sistem de fişiere FAT32);
  • cu ajutorul DFPlayer mini pot reda o melodie în format MP3, să pun pe pauză, să dau resume, să sar la următoarea melodie, să reglez volumul etc.;
  • melodiile de pe cardul SD au fost denumite 000.mp3, 001.mp3 etc.;
  • comunicaţia cu modulul DFPlayer mini este seriala (USART0);
  • pentru senzorul APDS-9960 am reuşit să adaptez o parte din codul C de pe GitHub al cuiva care lucra cu senzorul pe un altfel de microcontroller (senzorul este prea complex pentru a scrie o bibliotecă de la 0 cu cunoştinţele actuale);
  • am adaptat comunicaţia I2C (funcţiile folosite în cadrul senzorului) la ATmega324PA conform cu laboratorul 5;
  • am îmbinat cele 2 piese pentru a realiza logica programului:
    • la swipe dreapta trece la următoarea melodie;
    • la swipe stânga trece la melodia anterioară;
    • la swipe în sus măreşte volumul;
    • la swipe în jos micşorează volumul;
    • la gestul 'near' (apropierea mâinii de senzor) pune pauză melodiei curente;
    • la gestul 'far' (depărtarea mâinii de senzor) face resume melodiei curente care a fost pauzată.

Rezultate Obţinute

În urma realizării acestui proiect, am obţinut un device drăguţ controlabil prin intermediul gesturilor prinse de senzorul APDS-9960. Câteva fotografii si videoclipuri demonstrative pot fi observate în cele ce urmează:

ATmegaPlay rezultat hardware

ATmegaPlay rezultat final

Video YouTube pentru demonstrarea funcţionalităţii:

Concluzii

Trecând peste câteva frustrări, proiectul a fost unul foarte interesant, iar rezultatul merită efortul. Lucrând la acest proiect, mi-am îmbunătăţit cunoştinţele de electronică, proiectare, programare cu microprocesoare.

Citirea datelor de la senzorul de gesturi APDS-9960 (în special partea de întreruperi) a fost foarte complicată. Pentru acest senzor nu prea se găsesc biblioteci C. Eu am găsit, cum am menţionat mai sus, un proiect pe GitHub care era scris în C, dar care era scris pentru alt tip de microcontroller decât ATmega. Iniţial, plănuiam să scriu biblioteca pentru senzorul de gesturi de la zero, dar am realizat rapid că acest lucru ar fi fost mult prea hardcore.

Faptul că nu a mai lucrat niciun fost student cu piesele pe care le-am folosit la acest proiect a crescut considerabil dificultatea proiectului (nu există pe această platformă proiecte care să folosească DFPlayer mini şi APDS-9960).

Debugging-ul cu leduri merită şi el o menţiune specială.

Download

Bibliografie/Resurse

pm/prj2018/dghilinta/cristiannancu.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0