Chloe - The Offline Companion

Student: Birladeanu Raluca-Monica

Grupa: 335CA

Introducere

  • 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 imortalizarea momentelor frumoase, fără distrageri inutile. În plus, oferă și funcționalități utile, cum ar fi alarmele.

Descriere generală

Schema bloc

Hardware Design

Lista de piese:

  • ESP32
  • Ecran LCD
  • Buzzer
  • Microfon
  • Modul RTC
  • Butoane

Schematic: Bill of Materials:

ComponentaLinkDatasheet
Placa de dezvoltare ESP32 ESP32 ESP32
Display ST7735 cu adaptor SD Display Display
RTC PCF8563 RTC RTC
Microfon MAX9814 Microfon Microfon
ComponentaPCOMPinout
ESPI2C, SPISCLK - GPIO18, MOSI - GPIO23, MISO - GPIO19, CS1 - GPIO5, CS2 - GPIO15, SDA - GPIO21, SCL - GPIO22
DisplaySPISCK(SCLK) - GPIO18, SDA(MOSI) - GPIO23, CS - GPIO5, DC - GPIO2, RST - GPIO4
AdaptorSDSPISCLK - GPIO18, MOSI - GPIO23, MISO - GPIO19, CS - GPIO15
RTCI2CSDA - GPIO21, SCL - GPIO22
CameraI2C, Parallel Data GPIOSDA - 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: working_components.jpg

Dupa lipituri, componentele vor fi aranjate astfel: pcb_chloe.jpg

Software Design

Stadiu actual al implementarii software

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.

Biblioteci folosite si functionalitati laborator

Ca biblioteci, am folosit:

  • SD.h → pentru a formata antetele fisierelor WAV si a scrie datele citite pe ADC de la microfonul MAX9814
  • 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:

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/aluca/raluca.birladeanu.txt · Last modified: 2025/05/29 20:53 by raluca.birladeanu
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