This is an old revision of the document!


Mini-Kindle

Autor: Neagu Catalina-Andreea
Grupa: 333CD

1. Introducere

Despre ce este proiectul?

Un e-book reader portabil bazat pe ESP32 si display E-Ink, optimizat pentru navigare tactila (haptic) si audio.

Scop: Dispozitiv compact pentru citit, cu consum ultra-redus, folosind un ecran paper-like. Utilitate: Afisare pagini text, navigare intuitiva, feedback haptic, portabilitate.

Ce a inspirat ideea?

Ideea a fost inspirata de dispozitivele moderne de tip Kindle si de conceptul de “paper-like display”, care ofera confort vizual si consum foarte redus de energie. Proiectul isi propune sa combine experienta unui e-reader minimalist cu functii smart precum feedback haptic.

2. Functionalitati principale

*Afisare text: Redare continut din Flash (PROGMEM) pe ecran E-Ink. *Navigare: Encoder rotativ pentru scrolling si buton OK pentru selectie. *Feedback: Motor de vibratii (haptic) si Buzzer pentru alerte. *Gestionare: Alarma de inactivitate (buzzer) la 10 secunde de nefolosire in modul lectura.

3. Descrierea componentelor

Componenta Functionalitate principala
ESP32 Microcontroler principal; gestioneaza display-ul, audio si intrarile utilizatorului
Display E-Ink 2.9” Afisare text si interfata tip e-book cu consum redus
Encoder rotativ Navigare intre pagini si meniuri
Buton OK Confirmare selectie si navigare
Motor vibratii 3V Feedback haptic la interactiune
Buzzer Pasiv Feedback audio si alarma de inactivitate
Breadboard Prototipare
Fire Dupont Conectarea componentelor

Schema Bloc

Schema Electrica

Pini folositi si motivatie

*Am distribuit pinii in functie de rolul lor hardware pentru a evita conflictele la pornire: *Display E-Ink (SPI): SCK=18, MISO=19, MOSI=23 (standard SPI); CS=5, DC=17, RST=16, BUSY=4. *Encoder Rotativ: CLK=27 (folosit pentru ISR), DT=22, SW=21. *Buton OK: 13 (intrare cu PULLUP intern). *Motor Vibratii: 26 (iesire digitala catre tranzistor). *Buzzer: 32 (iesire digitala pentru tonuri PWM).

Justificarea utilizarii functionalitatilor

*Intreruperi: Folosite pentru encoder (attachInterrupt pe pinul 27) pentru a detecta rotirea imediat, fara a bloca procesorul. *SPI: Folosit pentru comunicatia de mare viteza cu display-ul E-Ink. *GPIO: Utilizate pentru citirea butoanelor si controlul perifericelor de feedback (vibratii/buzzer).

5. Implementare software

Biblioteci folosite

*GxEPD2_BW: Aleasa pentru eficienta in gestionarea buffer-ului E-Ink.

*SPI.h: Esentiala pentru comunicatia hardware cu display-ul.

*PROGMEM: Folosita pentru a stoca textele cartilor direct in Flash, economisind RAM-ul ESP32-ului.

Schelet proiect

*Proiectul foloseste o masina de stari (enum StareKindle {MENIU, LECTURA}).

*Interactiunea: Intreruperile gestioneaza encoderul. Loop-ul principal monitorizeaza butoanele (OK si SW) si verifica timpul scurs pentru alarma de inactivitate.

*Validare: Validarea interactiunii se face prin feedback haptic (vibratii la fiecare apasare OK) si vizual pe display.

6. Calibrare, optimizari si validare

Calibrarea elementelor

*Encoder: Am implementat o logica de debounce hardware si software pentru a elimina zgomotul la rotire.

*Buzzer: Calibrat pentru frecventa de 4000Hz, frecventa pentru claritatea sunetului.

*Debounce Butoane: Utilizarea unui prag de 300ms (DEBOUNCE_MS) in loop() pentru a evita trigger-ul multiplu la o singura apasare.

Optimizari

*Memorie RAM: Stocarea tuturor cartilor in Flash prin PROGMEM in loc de variabile String in RAM.

*Performanta Display: Utilizarea display.firstPage() si display.nextPage() intr-un loop do-while, care permite actualizarea ecranului pe bucati, fara a necesita un buffer full-frame in RAM.

*Consum: Eliminarea delay()-urilor blocante si utilizarea millis() pentru gestionarea timpului, ceea ce permite ESP32 sa ramana receptiv in orice moment.

7. Functionarea sistemului

Sistemul este controlat de microcontrolerul ESP32 care coordoneaza perifericele.

Display-ul E-Ink afiseaza paginile text citite secvential din Flash. Utilizatorul navigheaza intre carti si pagini folosind encoderul rotativ. La apasarea butonului OK, se intra in modul lectura sau se revine in meniu, fiind insotit de un feedback tactil (motor vibratii).

Daca utilizatorul ramane inactiv timp de 10 secunde in modul lectura, sistemul declanseaza o alarma sonora prin buzzer pentru a notifica trecerea timpului. Sistemul este complet asincron, permitand reactii instantanee la intrarile utilizatorului.

pm/prj2026/ionut.otelea/catalina.neagu.1779889735.txt.gz · Last modified: 2026/05/27 16:48 by catalina.neagu
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