Differences

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

Link to this comparison view

pm:prj2022:sgherman:light_piano [2022/05/09 09:14]
george.floarea [Light piano]
pm:prj2022:sgherman:light_piano [2022/05/21 18:56] (current)
george.floarea [Schema electrica]
Line 8: Line 8:
 Se vor folosi 6 fotorezistoare ce vor fi legate la pinii analog ai Arduino Uno pentru a capta lumina si a actiona un buzzer pasiv.\\ Pentru playerul de melodii vor folosite melodiile deja existente [[https://​github.com/​robsoncouto/​arduino-songs|Aici]] stocate pe un card sd. Selectarea melodiei se va face printr-o aplicatie android sau un site web ce vor trimite cereri catre un server http tinut pe un NodeMCU. Aceste cereri vor fi redirectionate catre arduino printr-o interfata Serial, iar acesta le va scoate de pe cardul SD folosind SPI si le va da play pe buzzer. Se vor folosi 6 fotorezistoare ce vor fi legate la pinii analog ai Arduino Uno pentru a capta lumina si a actiona un buzzer pasiv.\\ Pentru playerul de melodii vor folosite melodiile deja existente [[https://​github.com/​robsoncouto/​arduino-songs|Aici]] stocate pe un card sd. Selectarea melodiei se va face printr-o aplicatie android sau un site web ce vor trimite cereri catre un server http tinut pe un NodeMCU. Aceste cereri vor fi redirectionate catre arduino printr-o interfata Serial, iar acesta le va scoate de pe cardul SD folosind SPI si le va da play pe buzzer.
 ===== Hardware Design ===== ===== Hardware Design =====
 +====Schema bloc====
 {{:​pm:​prj2022:​sgherman:​light_piano_block.png?​direct&​700|}} {{:​pm:​prj2022:​sgherman:​light_piano_block.png?​direct&​700|}}
 +====Schema electrica====
 +{{:​pm:​prj2022:​sgherman:​light_piano_electrical_scheme.png?​direct&​900|}}
 ===Lista piese=== ===Lista piese===
   * 1x Arduino UNO   * 1x Arduino UNO
Line 14: Line 17:
   * 6x fotorezistenta   * 6x fotorezistenta
   * 1x Modul card SD   * 1x Modul card SD
-  * rezistente, cabluri, breadboard+  ​* 1x Buzzer pasiv 
 +  ​* rezistente, cabluri, breadboard, placa prototipare 
 +=====Software Design===== 
 +<​note>​ 
 +Descrierea codului: 
 +  * Mediu de dezvoltare: Arduino IDE si Visual Studio Code 
 +  * biblioteci folosite: SD, SPI, SoftwareSerial,​ ESP8266WiFi,​ ESPAsyncTCP,​ ESPAsyncWebServer 
 +</​note>​ 
 + 
 +===Detectia luminii=== 
 +Detectia luminii se face folosind fotorezistoare. Acestea sunt legate in serie cu cate o rezistenta de 220 ohmi si alimentate direct de la arduino. Pentru a face masurarea intensitatii luminii, un cablu leaga un port analog al Arduino la punctul in care fotorezistenta este legata de rezistorul de 220 ohmi. \\ 
 +Pentru ca fiecare fotoresistor se afla intr-o pozitie diferita, acestia vor fi expusi la intensitati diferite ale luminii, asa ca in functia setup fiecare masoara o data lumina si folosesc acea valoare pentru a se calibra. \\ 
 +Nota care va fi redata este aleasa astfel: se cauta fotorezistorul care inregistreaza deviata maxima dintre valoarea curenta a luminii si valoarea de calibrare; daca deviatia este mai mare decat o valoare de threshold, atunci nota respectiva va fi redata de buzzer. Astfel, doar nota asupra careia actioneaza cea mai puternica lumina va fi redata, iar 2 note nu vor putea fi redate in acelasi timp. 
 +===Buzzer=== 
 +Buzzerul este folosit atat pentru a reda notele comandate de fotorezistori,​ cat si pentru a reda melodiile de pe cardul SD. Acesta este unul pasiv comandat prin functia tone din biblioteca arduino. 
 +===Redarea de pe cardul SD=== 
 +Pentru a adauga melodii pentru cardul SD am creat un script de Python care primeste ca input melodiile de pe repository-ul [[https://​github.com/​robsoncouto/​arduino-songs|acesta]] si le transforma intr-un fisier binar ce contine notele si durata fiecarei note. \\ 
 +Flow-ul pentru adaugarea de melodii noi este urmatorul:​ 
 +  - se introduce cardul SD intr-un PC 
 +  - se copiaza de pe repository-ul cu melodii doar continutul vectorului '​melody'​ in fisierul '​input.txt'​ 
 +  - se sterg toate comentariile din input 
 +  - se ruleaza script-ul de python (scriptul va cere un nume pentru melodie, iar acesta nu trebuie sa contina spatii si nu trebuie sa aiba mai mult de 8 caractere) 
 +  - se muta fisierul binar pe cardul SD 
 +  - se introduce cardul SD inapoi in modulul pentru Arduino 
 + 
 +Pentru a reda melodia stocata pe fisierul binar, Arduino deschide fisierul si citeste cate 8 octeti (4 pentru frecventa notei si 4 pentru durata notei), apoi este calculat timpul de redare si este redata nota folosind '​tone'​. 
 + 
 +===Comanda prin http=== 
 +Modulul NodeMCU se conecteaza la o retea wifi si porneste un server web ce intoarce o pagina ce contine o lista de fisiere si un buton de Play. Lista este trimisa de Arduino prin interfata software serial la startup. Odata aleasa melodia dorita si apasat butonul Play, acesta trimite numele fisierului pe interfata software serial catre Arduino care incepe sa cante. \\ 
 +Accesarea paginii web se face ori printr-un browser web ori prin aplicatia de Android. 
 ===== Jurnal ===== ===== Jurnal =====
   * 28.04.2022 - wiki etapa 1   * 28.04.2022 - wiki etapa 1
 +  * 20.05.2022 - finalizare redarea prin fororezistoare 
 +  * 21.05.2022 - finalizare redarea de pe cardul SD 
 +  * 21.05.2022 - finalizare wiki etapa 2
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
 <​note>​ <​note>​
Line 25: Line 60:
 </​note>​ </​note>​
  
 +  * https://​github.com/​robsoncouto/​arduino-songs 
 +  * https://​create.arduino.cc/​projecthub/​electropeak/​sd-card-module-with-arduino-how-to-read-write-data-37f390 
 +  * https://​github.com/​me-no-dev/​ESPAsyncWebServer
  
pm/prj2022/sgherman/light_piano.1652076845.txt.gz · Last modified: 2022/05/09 09:14 by george.floarea
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