This shows you the differences between two versions of the page.
pm:prj2024:mdinica:gabriela.limberea [2024/05/16 23:54] gabriela.limberea [Hardware Design] |
pm:prj2024:mdinica:gabriela.limberea [2024/05/26 19:18] (current) gabriela.limberea [Hardware Design] |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | |||
- | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | ||
- | |||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | ||
- | </note> | ||
Microcontrolerul Arduino va fi componenta principala a proiectului. Acesta va primi input de la chitara prin mufa jack, amplitudinea semnalului fiind marita cu ajutorul amplificatorului operational. Utilizatorul va trebui sa aleaga ce coarda vrea sa acordeze, folosind butoanele si urmarind mesajele de pe ecranul LCD, pentru a stabili frecventa de referinta a semnalului. In functie de cat de cat de dezacordata este coarda, LED-ul se va comporta astfel: | Microcontrolerul Arduino va fi componenta principala a proiectului. Acesta va primi input de la chitara prin mufa jack, amplitudinea semnalului fiind marita cu ajutorul amplificatorului operational. Utilizatorul va trebui sa aleaga ce coarda vrea sa acordeze, folosind butoanele si urmarind mesajele de pe ecranul LCD, pentru a stabili frecventa de referinta a semnalului. In functie de cat de cat de dezacordata este coarda, LED-ul se va comporta astfel: | ||
Line 30: | Line 24: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | {{:pm:prj2024:mdinica:gabriela.limberea:schematic2.png?700|}} |
- | Aici puneţi tot ce ţine de hardware design: | + | |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
- | + | ||
- | {{:pm:prj2024:mdinica:gabriela.limberea:schematic.png?700|}} | + | |
Flow si explicatii: | Flow si explicatii: | ||
Line 51: | Line 37: | ||
* Arduino Uno R3 | * Arduino Uno R3 | ||
* Mufa Jack 6.3mm mama | * Mufa Jack 6.3mm mama | ||
- | * Op-Amp OP07 | + | * [[https://www.ti.com/lit/ds/symlink/op07c.pdf?ts=1714635590482&ref_url=https%253A%252F%252Fwww.google.com%252F|Op-Amp OP07]] |
* 2 Butoane | * 2 Butoane | ||
* Rezistente | * Rezistente | ||
* Condensatoare | * Condensatoare | ||
* LED RGB | * LED RGB | ||
- | * Modul SPI LCD ST7735 | + | * [[https://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf|Modul SPI LCD ST7735]] |
- | * 8bit Level Shifter TXS0108E | + | * [[https://www.ti.com/lit/ds/symlink/txs0108e.pdf?ts=1715831820872&ref_url=https%253A%252F%252Fwww.google.com%252F|8bit Level Shifter TXS0108E]] |
* Baterii | * Baterii | ||
+ | |||
+ | Cablaj: | ||
+ | {{ :pm:prj2024:mdinica:gabriela.limberea:cablaj-unrefined.jpg?200 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | [[https://github.com/Gabi-Limberea/PM-Fair|Source Code]] | ||
+ | |||
+ | Mediu de dezvoltare: PlatformIO (VSCode) | ||
+ | |||
+ | Surse folosite: [[https://www.instructables.com/Arduino-Frequency-Detection/|Arduino-Frequency-Detection]] | ||
+ | |||
+ | Codul este structurat pe mai multe fisiere sursa, astfel incat sa exista o separare a componentelor. In mare, tuner-ul este compus din 2 parti software importante. | ||
+ | |||
+ | - Preluarea input-ului de la utilizator prin butoane, astfel setand si afisand frecventa de referinta si generarea output-ului la ecran | ||
+ | - Preluarea semnalului analogic de la chitara, determinarea frecventei si compararea acesteia cu frecventa de referinta | ||
+ | |||
+ | **Input utilizator:** | ||
+ | * Pentru a prelua input-ul de la butoane se folosesc intreruperile ''INT0'' si ''INT1''. Ele modifica o variabila in care se tine minte ce frecventa de referinta se foloseste | ||
+ | * Din ''loop()'' se scrie pe ecran, folosind biblioteca ''Adafruit_ST7735.h'' pentru comunicarea prin SPI, ce frecventa (deci ce coarda) este selectata. | ||
- | <note tip> | + | **Input chitara:** |
- | Descrierea codului aplicaţiei (firmware): | + | * Implementarea este aproape identica cu cea din sursa mentionata mai sus. Pentru a mari sampling rate-ul de la 8000Hz la ~40KHz, s-a renuntat la folosirea functiei ''analogRead()'' si s-a scazut rezolutia de la 1023 la 255 |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Atunci cand o intrerupere de conversie ADC este generata, se citeste semnalul din ''ADCH'' si apoi se calculeaza perioada si amplitudinea semnalului primit, care sunt salvate in variabile dedicate |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * In ''loop()'', daca amplitudinea semnalului este peste un threshold dat, atunci se va calcula frecventa si se va compara cu referinta. In functie de rezultatul comparatiei, led-ul RGB se va aprinde appropriately. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== |