===== Resurse Hardware =====
Modulul MPU6050: este un modul popular de tip senzor, utilizat pentru a detecta și măsura accelerația, rotația, cât și câmpurile magnetice ale sistemelor electronice. Acesta utilizează o combinație de senzori, ce includ un accelerometru tri-dimensional și un giroscop tri-dimensional. În proiectul prezent, am utilizat atât caracteristicile sale de accelerometru cât și pe cele de giroscop.
Protocolul SPI: este un protocol de conexiune serială sincronă utilizat pentru a conecta sisteme de dispozitive electronice. În conexiunea SPI, dispozitivele sunt conectate folosind patru linii de conexiune:
• SCLK (Serial Clock) - semnal de ceas utilizat pentru a sincroniza transmisiunea de date dintre dispozitive; • MOSI (Master Out Slave In) - datele se transmit de la dispozitivul master către dispozitivul slave; • MISO (Master In Slave Out) - datele se transmit de la dispozitivul slave către dispozitivul master; • SS (Slave Select) - un semnal utilizat de către dispozitivul master pentru a selecta dispozitivul slave cu care dorește să se conecteze.
Protocolul I2C este conceput pentru a facilita comunicarea între circuitele integrate într-un sistem, cum ar fi microcontrolere, senzori, cipuri de memorie și alte periferice. Protocolul I2C prezintă o arhitectură de tip master-slave. Comunicarea se realizează printr-un bus comun, care este format din două linii de transimisune: SDA (linia de date seriale) și SCL (linia de ceas serial).
Modulul MPU6050 comunică cu microcontrolerul prin protocolul I2C. Pentru a utiliza MPU6050 cu o interfață I2C, microcontrolerul sau alt dispozitiv acționează ca dispozitiv principal (master), iar MPU6050 acționează ca dispozitiv secundar (slave). Dispozitivul principal inițiază comunicarea prin selectarea MPU6050 utilizând linia SDA și apoi trimiterea datelor către și primirea datelor de la MPU6050 utilizând aceeași linie. În cazul de față, placa Arduino UNO va acționa ca dispozitiv master, iar MPU6050 ca dispozitiv slave.
Arduino: converteste vibratiile detectate de accelerometru prin intermediul logicii de codare în sunete de tobă.
===== Interactiune =====
• accelerometrul va fi montat la capătul unui băț. Sistemul va recunoaște mișcarea, și, bazându-se pe intensitate, va genera la ieșire un semnal, ca un ”beat” pe baza unui ”pattern”. Acesta va fi ulterior amplificat și redat prin intermediul unui difuzor; • amplitudinea semnalului receptat cu ajutorul accelerometrului va fi ilustrat de un Bar Graph; • vor fi mai multe tipuri de sunete generate, în concordanță cu mișcările executate de către utilizator.
Schema Electrica a Proiectului
În proiectul de față, comunicarea între placa Arduino UNO și modulul MPU6050 se face serial și sincron. Protocolul I2C (descris în capitolul 4.2), face posibilă comunicarea duală dintre cele două dispozitive. Conexiunea serială se face prin conectarea pinilor SDA (Serial Data Line) și SCL (Serial Clock) între cele două dispozitive. Pinul AD0 este conectat la masă, adresa slave a modulului MPU6050 fiind 0x68. Difuzorul este conectat la masa și la pinul 11, care permite utilizarea metodei PWM(Pulse With Modulation). Astfel devine posibilă manipularea frecvenței și generarea sunetelor. Bibliotecile folosite în codul pentru implementarea software sunt compatibile cu protocoalele transmise prin conexiunea pinilor, pentru a putea recepționa semnalul prin modulul MPU6050 și ulterior pentru a putea genera sunetul de tobă.
Librăriile utilizate:
- Wire.h: Biblioteca permite comunicarea cu dispozitive I2C sau TWI. Ea se folosește de adrese pe 7 biți, al optulea bit determinând operația (de scriere sau citire). Implementarea sa folosește, totuși, un buffer de 32 de octeți. Prin urmare, orice comunicare ar trebui să se fie în această limită. Biții care depășesc limita se vor pierde.
Funcții: begin() end() requestFrom() beginTransmission() endTransmission() write() available() read() setClock() onReceive() onRequest() setWireTimeout() clearWireTimeoutFlag() getWireTimeoutFlag()
- PCM.h: Biblioteca permite redarea unor probe audio scurte generate direct din cod. Acestea sunt codificate sub forma unor array-uri de numere întregi. Este compatibilă cu arhitectura avr, însă este necesar harware extern (ex. difuzor).
Alte aplicații: - Audacity – editor audio - EncodeAudio – aplicație care codifică track-urile sub forma cerută de biblioteca PCM.h. Este necesar ca track-urile să aibă rata de 8kHz și si formatul de 16 bițiPCM.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.