Differences

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

Link to this comparison view

pm:prj2021:avaduva:guitartuner [2021/05/21 10:12]
sergiu.fratila [Descriere generala]
pm:prj2021:avaduva:guitartuner [2021/05/28 10:01] (current)
sergiu.fratila [Schema Bloc]
Line 15: Line 15:
 ==== Schema Bloc ==== ==== Schema Bloc ====
  
-{{:​pm:​prj2021:​avaduva:​arduino-guitar-tuner.png?750|}}+{{:​pm:​prj2021:​avaduva:​schema_finala.png?750|}}
 ===== Hardware Design ===== ===== Hardware Design =====
 {{:​pm:​prj2021:​avaduva:​tunersergiufratila_schemaeagle.jpg?​800|}} {{:​pm:​prj2021:​avaduva:​tunersergiufratila_schemaeagle.jpg?​800|}}
Line 28: Line 28:
 [2] https://​www.robofun.ro/​sunet/​modul-amplificator-microfon-electret-5buc.html [2] https://​www.robofun.ro/​sunet/​modul-amplificator-microfon-electret-5buc.html
 ===== Software Design ===== ===== Software Design =====
 +   * Pentru modulul LCD am folosit biblioteca <​LiquidCrystal_I2C.h>​ 
 +   * Pentru stocarea datelor citite de la pinul A0, folosesc un array de 64 de sample-uri. Am incercat initial cu 128, insa avand in vedere ca am nevoie de un array si pentru partea imaginara a semnalului, atunci cand calculez FFT, varianta cu 128 de sample-uri ocupa 75-80% din memoria dinamica a placutei Arduino. Primeam warning-uri de stabilitate,​ asa ca am coborat la 64. 
 +   * Pentru a obtine frecventa sunetului din sample-urile citite de la pinul A0 cu ajutorul microfonului,​ am folosit cateva functii din biblioteca <​arduinoFFT.h>​. Fast Fourier Transform este o metoda matematica de a analiza componentele de frecventa dintr-un semnal. 
 +   * In loop, frecventa intoarsa de functia FindFrequency(implementata cu FFT) este comparata cu cate un interval ce corespunde fiecarei corzi de chitara. 
 +   * Astfel, acordorul meu este capabil sa recunoasca fiecare coarda din acordajul standard al unei chitare (E A D G B e). 
 +   * Dupa ce incadreaza frecventa gasita intr-unul dintre intervalele specifice corzilor, este verificat daca sunetul este mai inalt sau mai jos decat un alt interval mai restrans, care ar insemna ca acea coarda este acordata. 
 +   * In functie de cum se incadreaza in intervalele:​ mai mic, perfect, mai mare, ecranul LCD afiseaza "< < <" pentru un sunet cu frecventa prea mica, "> > >" pentru frecventa prea mare si "​good"​ pentru cazul in care este acordata. 
 +   * Pe masura ce am scris codul ce incadra frecventa intr-un interval pentru fiecare coarda, am incercat sa calibrez indicatiile tunerului meu in functie de alte 2 acordoare.
 ===== Rezultate Obtinute ===== ===== Rezultate Obtinute =====
 +
 +{{:​pm:​prj2021:​avaduva:​sergiuf_afisare.jpeg?​700|}}
 +     * Fig. 1: Mesaj de intampinare.
 +{{:​pm:​prj2021:​avaduva:​sergiuf_montaj_1.jpeg?​700|}}
 +{{:​pm:​prj2021:​avaduva:​sergiuf_montaj_2.jpeg?​700|}}
 +     * Fig. 2, 3: Montaj complet.
 +
 +[[https://​www.youtube.com/​watch?​v=FfgnMOZE9rM|Demonstratie video]]
  
  
 ===== Concluzii===== ===== Concluzii=====
-==== Download ====+   * Implementarea acestui proiect nu a fost nici mai grea, nici mai usoara decat ma asteptam. 
 +   * A trebuit sa fac ceva research legat de analiza frecventei / alte proiecte arduino guitar tuner astfel incat sa aflu ca aveam nevoie de FFT pentru a obtine frecventa dintr-un sample. 
 +   * Desi Arduino nu este cea mai buna placuta pentru procesare audio, sunt multumit de rezultatul final si de acuratetea tunerului. In videoul demonstrativ se vede faptul ca este utilizabil ...cu toate ca mai da mici rateuri, asa fac si tunerele profesionale,​ in experienta mea:))
  
 ==== Jurnal ==== ==== Jurnal ====
 +  * **7 mai** - achizitionare componente + implementare afisare LCD
 +  * **14 mai** - implementare beta (fara FFT) didn't work :(
 +  * **21 mai** - research FFT + aflare frecventa in Hz
 +  * **21-27 mai** - implementarea interpretarii frecventelor citite + afisare sugestii acordare + finalizare
 ==== Bibliografie/​Resurse ==== ==== Bibliografie/​Resurse ====
-{{:pm:prj2021:avaduva:​guitartuner.pdf|}} +[[https://​forum.arduino.cc/​t/​frequency-detection/​253647|Arduino Frequency Detection]] 
-{{https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​guitartuner?​do=export_pdf}}+[[https://​www.youtube.com/​watch?​v=spUNpyF58BY|Fourier Transform]] 
 +[[https://www.instructables.com/​Arduino-Guitar-Tuner/​|Arduino Guitar Tuner (instructables)]] 
 + 
 + 
 + 
 + 
 +===== Descarcare pagina/​arhiva surse ===== 
 +Click [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​guitartuner?​do=export_pdf|aici]] pentru descarcarea PDF a paginii curente. 
 + 
 +<note important>​{{:​pm:​prj2021:​avaduva:​Sergiu_Fratila_PM_Proiect.zip|Arhiva cu codul sursa}}</​note>​
pm/prj2021/avaduva/guitartuner.1621581135.txt.gz · Last modified: 2021/05/21 10:12 by sergiu.fratila
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