Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:amocanu:music-with-arduino-accelerometer [2021/06/01 15:29]
doina.chiroiu [Hardware Design]
pm:prj2021:amocanu:music-with-arduino-accelerometer [2021/06/01 20:34] (current)
doina.chiroiu
Line 18: Line 18:
 === Schema bloc === === Schema bloc ===
 {{:​pm:​prj2021:​amocanu:​schema_bloc_music_with_arduino_accelerometer.png?​600|}} {{:​pm:​prj2021:​amocanu:​schema_bloc_music_with_arduino_accelerometer.png?​600|}}
 +
 +{{:​pm:​prj2021:​amocanu:​schema_fizic_music_with_arduino_accelerometer.jpeg?​500|}}
 +
 +{{:​pm:​prj2021:​amocanu:​schema_fizic_wrapped_music_with_arduino_accelerometer.jpeg?​500|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 31: Line 35:
 {{:​pm:​prj2021:​amocanu:​schema_electrica_music_with_arduino_accelerometer.png?​600|}} {{:​pm:​prj2021:​amocanu:​schema_electrica_music_with_arduino_accelerometer.png?​600|}}
  
-Detalii hardware: +Detalii hardware:  
 +  * modul MPU-6050 
 +Pentru conectarea accelerometrului,​ am conectat VCC-ul la 5V, GND la GND, și cele două seriale de date astfel: SCL la A5, SDA la A4. Astfel, se realizează comunicația I2C necesară. 
 +  * 8x8 Leds Matrix 
 +În vederea folosirii unui obiect ledController,​ a trebuit sa conectez pinii DIN, CLK și DS. 
 +Am ales pentru acest element pinii D11, D13 si D12.
   * Keypad   * Keypad
 Se conecteaza pinii corespunzători liniilor 1 și 2 (pinii D2 și D3) și pinii pentru cele 4  Se conecteaza pinii corespunzători liniilor 1 și 2 (pinii D2 și D3) și pinii pentru cele 4 
 coloane (pinii D4, D5, D6 și D7). Astfel, se va vor mapa acești pini pe vectorul de  coloane (pinii D4, D5, D6 și D7). Astfel, se va vor mapa acești pini pe vectorul de 
 keys ({{1, 2, 3, A}, {4, 5, 6, B}}), pe care îl utilizăm în crearea obiectului intermediar keypad. keys ({{1, 2, 3, A}, {4, 5, 6, B}}), pe care îl utilizăm în crearea obiectului intermediar keypad.
 +  * Speakers
 +Fiecare speaker este conectat la GND cu un fir, și cu celălalt la un pin aferent.
 +Am folosit pinii 8, 9 și 10 pentru cele 3 speakere.
 +
 +
  
  
Line 83: Line 96:
 Stocăm datele în variabile ținute global în program, și începem procesarea Stocăm datele în variabile ținute global în program, și începem procesarea
 acestora pentru a le putea reprezenta pe ieșirile noastre. acestora pentru a le putea reprezenta pe ieșirile noastre.
-  * Sunetele+  * Redarea sunetelor 
 +Am procesat valorile măsurate ale accelerației:​ AcX, AcY. AcZ astfel: 
 +Calculez offset-ul obținut pe fiecare axa, și mapăm acele valori 
 +în range-ul [0, 8] pentru a folosi rezultatul pentru afișarea pe 
 +matricea de leduri. 
 + 
 +Am procesat valorile măsurate ale rotației: GyX, GyY. GyZ astfel: 
 +Calculăm unghiurile de rotație: roll - axa X, pitch - axa Y, rbe - axa Z. 
 +Formulele utilizate sunt:  
 +    roll = atan(GyY / sqrt(pow(GyX,​ 2) + pow(GyZ, 2))) * 180 / PI; // rotation X-axis 
 +    pitch = atan(-1 * GyX / sqrt(pow(GyY,​ 2) + pow(GyZ, 2))) * 180 / PI; // rotation Y-axis 
 +    rbe = atan(GyZ / sqrt(pow(GyX,​ 2) + pow(GyY, 2))) * 180 / PI; // rotation Z-axis 
 + 
 +Datele roll, pitch și rbe sunt puse terminalul serial. 
 + 
 +Pentru a găsi sunetul corespondent din gama curentă, vom mapa aceste date la 
 +range-ul [0, 10], rezultatul reprezentand în final indexul din vectorul de sunete -> 
 +melodies[theme][index]. Acest sunet va fi invocat pe difuzoare.  
   * Leds Matrix   * Leds Matrix
 +După maparea datelor în range-ul [0, 8] (dimensiunea matricii), se va seta
 +ledul corespunzător acestei mapari, prin obiectul ledController.
 +Astfel, valorile recepționate de la accelerometrul cu giroscop se pot pune
 +în corespondență cu aprinderea unui led în spațiul matricii.
 +Obținem deci, o reprezentare vizuală a mișcării accelerometrului.
 +
   * Keypad   * Keypad
 +Pe lângă interacțiunea prin accelerometru și interpretarea mișcării acestuia,
 +instrumentul dispune de interacțiune printr-o tastatură. ​
 +Obiectul keypad este intermediarul în cod pentru citirea unei taste. Lucrăm cu 
 +primele doua linii de taste, incarcand semnăturile lor în vectorul keys[].
 +
 +La apăsarea unei taste cu semnătura unei cifre  de la 1 la 6, se va seta
 +o tema muzicala din cele 6 disponibile si va porni instrumentul.
 +La apăsarea tastei ‘A’, voi trezi încă un difuzor dintre cele 3 disponibile
 +pentru un plus de volum. Cand se apasa ‘A’ a treia oară, volumul revine
 +la stadiul inițial.
 +La apăsarea tastei ‘B’, voi invoca notele din gama curentă la rand, pentru
 +a reprezenta la nivel de sunet o melodie simplă. ​
  
  
-Legat de procesarea datelor in cadrul PC-ului, am implementat un program+<​note>​Legat de procesarea datelor in cadrul PC-ului, am implementat un program
 ce realizează design-ul accelerometrului (în mod simplist), și îi stimulează rotația ce realizează design-ul accelerometrului (în mod simplist), și îi stimulează rotația
-cu datele preluate de pe portul de comunicație.+cu datele preluate de pe portul de comunicație.</​note>​
  
  
Line 104: Line 153:
  
 ===== Concluzie ===== ===== Concluzie =====
 +Proiectul m-a învățat foarte multe despre lumea Arduino și posibilitatile nenumărate pe care
 +le avem în implementarea prin plăcute. ​
 +Una dintre provocările majore a fost realizarea conexiunii I2C, între plăcuta Arduino UNO și
 +modulul de accelerometru cu giroscop MPU-6050. Pe langa studiul în ceea ce privește legarea serialelor de date, am implementat în totalitate sistemul de recepționare a datelor. ​
 +Ulterior, o alta etapa importanta a fost procesarea datelor cu formule matematice, pentru obținerea unor rezultate relevante: sunete și afișare în concordanță cu mișcarea efectuata.
 +
 +Acest proiect m-a familiarizat cu programarea plăcuțelor Arduino, dar și cu utilizarea perifericelor (tastatura, afișarea prin matrice de leduri) și cu modul de funcționare a unui
 +senzor MPU.
 +
 +Mi-a plăcut să lucrez la proiect și am învățat câte probleme poate pune hardware-ul într-o
 +astfel de aplicație, invatand sa mă adaptez.
 +
 +===== Download =====
 +{{:​pm:​prj2021:​amocanu:​music-with-arduino-accelerometer-master.zip|}}
  
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
 +https://​www.instructables.com/​Accelerometer-MPU-6050-Communication-With-AVR-MCU/​
 +
 +https://​www.electronicwings.com/​arduino/​mpu6050-interfacing-with-arduino-uno
 +
 +
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2021/amocanu/music-with-arduino-accelerometer.1622550561.txt.gz · Last modified: 2021/06/01 15:29 by doina.chiroiu
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