This shows you the differences between two versions of the page.
pm:prj2025:aluca:raluca.birladeanu [2025/05/18 14:13] raluca.birladeanu |
pm:prj2025:aluca:raluca.birladeanu [2025/05/29 20:53] (current) raluca.birladeanu |
||
---|---|---|---|
Line 8: | Line 8: | ||
<note tip> | <note tip> | ||
- | * **Chloe** este un proiect de forma unui cub care va asista utilizatorul în a depăși atașamentul față de lumea online. Chloe vă oferă un ecran LCD cu expresii faciale, un buzzer, un card SD de pe care să cânte melodiile favorite offline, o cameră pentru a imortaliza momentele voastre favorite și opțiunea de a seta timere și alarme utilizând un modul RTC. | + | * **Chloe** este un proiect de forma unui cub care va asista utilizatorul în a depăși atașamentul față de lumea online. Chloe vă oferă un ecran LCD cu expresii faciale, un mod prin care puteti schimba culorile, un buzzer, un card SD pe care sa va imortalizati momentele voastre favorite cu ajutorul unui microfon și opțiunea de a seta alarme utilizând un modul RTC. |
- | * Ideea de la care am pornit este faptul că, în lumea digitală în continuă creștere, uităm uneori să trăim în prezent și să ne bucurăm de viața de zi cu zi. Smartphone-urile au devenit prezente în aproape orice moment al vieții noastre și, câteodată, pot deveni mai dăunătoare decât folositoare. Cu toții am avut acel moment în care ne-am dat seama că stăm în pat de o grămadă de timp, derulând fără scop prin postări pe rețelele sociale. Aici intervine Chloe: vă permite să vă bucurați de micile plăceri ale vieții, precum ascultatul muzicii sau imortalizarea momentelor frumoase, fără distrageri inutile. În plus, oferă și funcționalități utile, cum ar fi alarmele și timerele. | + | * Ideea de la care am pornit este faptul că, în lumea digitală în continuă creștere, uităm uneori să trăim în prezent și să ne bucurăm de viața de zi cu zi. Smartphone-urile au devenit prezente în aproape orice moment al vieții noastre și, câteodată, pot deveni mai dăunătoare decât folositoare. Cu toții am avut acel moment în care ne-am dat seama că stăm în pat de o grămadă de timp, derulând fără scop prin postări pe rețelele sociale. Aici intervine Chloe: vă permite să vă bucurați de micile plăceri ale vieții, precum imortalizarea momentelor frumoase, fără distrageri inutile. În plus, oferă și funcționalități utile, cum ar fi alarmele. |
</note> | </note> | ||
Line 16: | Line 16: | ||
==== Schema bloc ==== | ==== Schema bloc ==== | ||
- | {{:pm:prj2025:aluca:chloe_birladeanuralucamonica.png?700|}} | + | {{ :pm:prj2025:aluca:chloe_birladeanuralucamonica.png?=700 }} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 24: | Line 24: | ||
* Ecran LCD | * Ecran LCD | ||
* Buzzer | * Buzzer | ||
- | * Camera | + | * Microfon |
* Modul RTC | * Modul RTC | ||
* Butoane | * Butoane | ||
- | * Baterii | ||
+ | **Schematic:** | ||
+ | {{ :pm:prj2025:aluca:schematicpm_brm_final_-1.png?=700 }} | ||
**Bill of Materials:** | **Bill of Materials:** | ||
Line 35: | Line 36: | ||
| Display ST7735 cu adaptor SD | [[https://ardushop.ro/ro/display-uri-si-led-uri/1349-modul-lcd-spi-128x160-6427854019561.html | Display]] | [[https://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf | Display]] | | | Display ST7735 cu adaptor SD | [[https://ardushop.ro/ro/display-uri-si-led-uri/1349-modul-lcd-spi-128x160-6427854019561.html | Display]] | [[https://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf | Display]] | | ||
| RTC PCF8563 | [[https://ardushop.ro/ro/module/384-modul-ceas-in-timp-real-pcf8563-6427854004307.html?gad_source=1&gad_campaignid=22058879462&gclid=CjwKCAjw56DBBhAkEiwAaFsG-qEJvoICxRV-gRSRsMDZfsXCnF5_vwPYBB4ee6xBYgoC0DGtkV9CRxoCtVAQAvD_BwE | RTC]] | [[https://www.nxp.com/docs/en/data-sheet/PCF8563.pdf | RTC]] | | | RTC PCF8563 | [[https://ardushop.ro/ro/module/384-modul-ceas-in-timp-real-pcf8563-6427854004307.html?gad_source=1&gad_campaignid=22058879462&gclid=CjwKCAjw56DBBhAkEiwAaFsG-qEJvoICxRV-gRSRsMDZfsXCnF5_vwPYBB4ee6xBYgoC0DGtkV9CRxoCtVAQAvD_BwE | RTC]] | [[https://www.nxp.com/docs/en/data-sheet/PCF8563.pdf | RTC]] | | ||
- | | Camera OV7670 | [[https://ardushop.ro/ro/electronica/866-modul-camera-vga-640x480-ov7670-6427854011442.html | Camera]] | [[https://datasheet.octopart.com/MPU-6500-InvenSense-datasheet-138896167.pdf | Camera]] | | + | | Microfon MAX9814 | [[https://ardushop.ro/ro/module/717-modul-amplificator-microfon-cu-agc-max9814-6427854009111.html?gad_campaignid=17003133061 | Microfon]] | [[https://www.analog.com/media/en/technical-documentation/data-sheets/max9814.pdf | Microfon]] | |
^Componenta^PCOM^Pinout^ | ^Componenta^PCOM^Pinout^ | ||
Line 43: | Line 44: | ||
|RTC|I2C|SDA - GPIO21, SCL - GPIO22| | |RTC|I2C|SDA - GPIO21, SCL - GPIO22| | ||
|Camera|I2C, Parallel Data GPIO|SDA - GPIO21, SCL - GPIO22, HREF - NC, VSYNC - GPIO13, PCLK - GPIO14, XCLK - GPIO27, D0 - GPIO36, D1 - GPIO39, D2 - GPIO34, D3 - GPIO35, D4 - GPIO32, D5 - GPIO33, D6 - GPIO25, D7 - GPIO26| | |Camera|I2C, Parallel Data GPIO|SDA - GPIO21, SCL - GPIO22, HREF - NC, VSYNC - GPIO13, PCLK - GPIO14, XCLK - GPIO27, D0 - GPIO36, D1 - GPIO39, D2 - GPIO34, D3 - GPIO35, D4 - GPIO32, D5 - GPIO33, D6 - GPIO25, D7 - GPIO26| | ||
+ | |||
+ | Modulul de ceas si display-ul functioneaza, dupa cum se poate vedea in poza urmatoare: | ||
+ | {{ :pm:prj2025:aluca:working_components.jpg?=400 }} | ||
+ | |||
+ | Dupa lipituri, componentele vor fi aranjate astfel: | ||
+ | {{ :pm:prj2025:aluca:pcb_chloe.jpg?=500 }} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Stadiu actual al implementarii software** | ||
- | <note tip> | + | La momentul curent, Chloe are o suita de expresii dragute in starea de idle, alaturi de 2 meniuri pentru functionalitatile de inregistrare si alarma. In meniul pentru inregistrare, utilizatorul poate apasa pe un buton pentru a porni inregistrarea, oprind-o apasand tot pe acelasi buton. Dupa ce se realizeaza inregistrarea, aceasta este salvata pe cardul SD si utilizatorul primeste un mesaj de confirmare in care i se arata numele sub care a fost salvat fisierul. In meniul de alarma, utilizatorul poate seta orele si minutele la care doreste sa sune alarma. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Biblioteci folosite si functionalitati laborator** |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | Ca biblioteci, am folosit: |
- | * (etapa 3) surse şi funcţii implementate | + | * SD.h -> pentru a formata antetele fisierelor WAV si a scrie datele citite pe ADC de la microfonul MAX9814 |
- | </note> | + | * AdafruitGFX si AdafruitST7735 -> pentru a afisa forme si text pe display |
+ | * I2C_RTC -> pentru a seta modulul de ceas | ||
+ | * Wire.h -> pentru a comunica cu modulul de ceas prin I2C | ||
+ | * SPI.h -> pentru a comunica cu cardul SD si cu display-ul | ||
+ | |||
+ | Functionalitatile din laborator folosite sunt pentru comunicarea prin I2C (inceperea transmisiei si alegerea slave-ului), comunicarea prin SPI (initializarea transmisiei pe un anumit CS), declararea si utilizarea intreruperilor (rutina de tratare si setarea intreruperii pe un anumit pin), ADC (pentru citirea valorilor analogice si interpretarea lor in format WAV). | ||
+ | |||
+ | **Elementul de noutate** | ||
+ | |||
+ | Elementul de noutate al proiectului este aducerea functionalitatilor care se regasesc deseori in smart phones pe un dispozitiv offline, cu scopul de a reduce screen time-ul utilizatorilor, avand de asemenea un aspect placut si minimalist, cu niste expresii prietenoase si dragute. Un al element de noutate este encodarea manuala a fisierelor WAV, doar folosind valorile pe 12 biti citite de pe ADC. | ||
+ | |||
+ | **Calibrare microfon** | ||
+ | |||
+ | Pentru a calibra datele primite, am avut ca optiuni fie implementarea hardware a unui filtru trece jos, intrucat am observat faptul ca fisierele pe care le cream sunau foarte high-pitched. Din lipsa componentelor, am ajuns sa fac calibrarea software prin modificarea antetului WAV si reducerea numarului de biti per sample de la 12 la 8. Frecventa am calibrat-o prin testare repetata, observand faptul ca fiserul era mai scurt decat imi doream sa fie. | ||
+ | |||
+ | **Functii folosite** | ||
+ | |||
+ | Pentru implementarea software, am modularizat codul cat de mult s-a putut. | ||
+ | |||
+ | Am implementat functii pentru meniuri: record_menu(bool), show_time(bool), alarm_menu, record. | ||
+ | |||
+ | Pentru animatii, am implementat switch_animation(int), move_eye(int), happy_eyes, wake_up, sleep, blink, draw_eyes(bool), center_eyes(bool). | ||
+ | |||
+ | Pentru fisierele WAV: writeWavHeader, updateWavHeader, record. Pentru intreruperi: isr(pentru buton 1), isr2(pentru buton 2), tmr. | ||
+ | |||
+ | Logica de schimbare a meniurilor se face printr-un switch case in loop. | ||
+ | |||
+ | **Demo proiect**: | ||
+ | |||
+ | <html><iframe width="560" height="315" src="https://www.youtube.com/embed/XGunKCTyEHs?si=OgyKnfU5W3Q2YwNa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== |