This shows you the differences between two versions of the page.
|
pm:prj2026:ionut.otelea:catalina.neagu [2026/05/08 23:23] catalina.neagu |
pm:prj2026:ionut.otelea:catalina.neagu [2026/05/27 17:30] (current) catalina.neagu [Biblioteci folosite] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ======Mini-Kindle====== | ======Mini-Kindle====== | ||
| - | ======Catalina Neagu====== | + | **Autor:** Neagu Catalina-Andreea \\ |
| + | **Grupa:** 333CD | ||
| ====== 1. Introducere ====== | ====== 1. Introducere ====== | ||
| Line 6: | Line 7: | ||
| ===== Despre ce este proiectul? ===== | ===== Despre ce este proiectul? ===== | ||
| - | Proiectul reprezinta un mini e-book reader portabil inspirat de dispozitivele Kindle, realizat in jurul unui microcontroler ESP32 si al unui display E-Ink. Dispozitivul permite afisarea textului din fisiere stocate pe card microSD, navigarea intre pagini folosind un encoder rotativ si redarea audio prin difuzor in anumite conditii de utilizare. | + | Un e-book reader portabil bazat pe ESP32 si display E-Ink, optimizat pentru navigare tactila (haptic) si audio. |
| - | ===== Care este scopul proiectului? ===== | + | Scop: Dispozitiv compact pentru citit, cu consum ultra-redus, folosind un ecran paper-like. |
| + | Utilitate: Afisare pagini text, navigare intuitiva, feedback haptic, portabilitate. | ||
| - | Scopul proiectului este dezvoltarea unui dispozitiv compact si eficient energetic pentru citirea textelor digitale: | + | ===== Ce a inspirat ideea? ===== |
| - | * SPI (display E-Ink si microSD) | + | |
| - | * ADC (senzor de lumina LDR) | + | |
| - | * PWM si control digital (vibratii si audio) | + | |
| - | * management alimentare LiPo | + | |
| - | Proiectul urmareste realizarea unui produs embedded interactiv si portabil, cu interfata intuitiva si consum redus de energie. | + | 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. |
| - | ===== Ce a inspirat ideea? ===== | + | ====== 2. Functionalitati principale ====== |
| - | 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 control audio, detectie de lumina ambientala si feedback haptic. | + | Afisare text: Redare continut din Flash (PROGMEM) pe ecran E-Ink. |
| - | ===== De ce este util acest proiect? ===== | + | Navigare: Encoder rotativ pentru scrolling si buton OK pentru selectie. |
| - | Acest mini e-reader: | + | Feedback: Motor de vibratii (haptic) si Buzzer pentru alerte. |
| - | * afiseaza texte si pagini pe un display E-Ink; | + | |
| - | * permite navigarea intuitiva prin encoder rotativ si butoane; | + | Gestionare: Alarma de inactivitate (buzzer) la 10 secunde de nefolosire in modul lectura. |
| - | * citeste fisiere de pe card microSD; | + | |
| - | * poate reda audio prin difuzor; | + | ====== 3. Descrierea componentelor ====== |
| - | * detecteaza nivelul de lumina ambientala folosind senzorul LDR; | + | |
| - | * ofera feedback prin vibratii la interactiune; | + | ^ Componenta ^ Functionalitate principala ^ |
| - | * functioneaza portabil, alimentat de baterie LiPo; | + | | ESP32 | Microcontroler principal; gestioneaza display-ul, audio si intrarile utilizatorului | |
| - | * are consum redus si autonomie ridicata. | + | | 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 | | ||
| ---- | ---- | ||
| - | ====== 2. Functionalitati principale ====== | + | ===== Schema Bloc ===== |
| + | {{:pm:prj2026:ionut.otelea:schema_bloc_kindle_1_.png?500|}} | ||
| + | ===== Schema Electrica ===== | ||
| + | {{:pm:prj2026:ionut.otelea:schematic_kindle.png?500|}} | ||
| - | ===== Afisare text pe display E-Ink ===== | + | ===== Pini folositi si motivatie ===== |
| + | Am distribuit pinii in functie de rolul lor hardware pentru a evita conflictele la pornire: | ||
| - | Dispozitivul afiseaza continutul fisierelor text pe un display E-Ink de 2.9 inch, oferind o experienta similara cu cea a unui e-book reader comercial. | + | Display E-Ink (SPI): SCK=18, MISO=19, MOSI=23 (standard SPI); CS=5, DC=17, RST=16, BUSY=4. |
| - | ===== Navigare prin encoder si butoane ===== | + | Encoder Rotativ: CLK=27 (folosit pentru ISR), DT=22, SW=21. |
| - | Utilizatorul poate naviga intre pagini si meniuri folosind encoderul rotativ si butoanele dedicate. | + | Buton OK: 13 (intrare cu PULLUP intern). |
| - | ===== Citire fisiere de pe microSD ===== | + | Motor Vibratii: 26 (iesire digitala catre tranzistor). |
| - | Cartile si fisierele text sunt stocate pe un card microSD, accesat prin intermediul modulului TF/microSD. | + | Buzzer: 32 (iesire digitala pentru tonuri PWM). |
| - | ===== Redare audio ===== | + | ===== Justificarea utilizarii functionalitatilor ===== |
| - | Sistemul poate reda audio printr-un amplificator si un difuzor compact, pentru functii de asistenta audio sau notificari. | + | Intreruperi: Folosite pentru encoder (attachInterrupt pe pinul 27) pentru a detecta rotirea imediat, fara a bloca procesorul. |
| - | ===== Detectie lumina ambientala ===== | + | SPI: Folosit pentru comunicatia de mare viteza cu display-ul E-Ink. |
| - | Senzorul LDR permite detectarea nivelului de lumina ambientala. In conditii de lumina scazuta, dispozitivul poate activa functii suplimentare precum redarea audio. | + | GPIO: Utilizate pentru citirea butoanelor si controlul perifericelor de feedback (vibratii/buzzer). |
| - | ===== Feedback haptic ===== | + | ===== Hardware Vizualizare ===== |
| + | {{:pm:prj2026:ionut.otelea:pm2.jpeg?200|}} | ||
| + | {{:pm:prj2026:ionut.otelea:pm4.jpeg?200|}} | ||
| + | {{:pm:prj2026:ionut.otelea:pm3.jpeg?200|}} | ||
| + | {{:pm:prj2026:ionut.otelea:pm1.jpeg?200|}} | ||
| + | ====== 5. Implementare software ====== | ||
| - | Motorul de vibratii ofera feedback tactil la interactiunea cu butoanele si meniurile. | + | ===== Biblioteci folosite ===== |
| - | ===== Alimentare portabila ===== | + | GxEPD2_BW: Aleasa pentru eficienta in gestionarea buffer-ului E-Ink. |
| - | Dispozitivul functioneaza pe baterie LiPo reincarcabila, fiind usor de transportat si utilizat fara alimentare externa. | + | SPI.h: Esentiala pentru comunicatia hardware cu display-ul. |
| - | ---- | + | PROGMEM: Folosita pentru a stoca textele cartilor direct in Flash, economisind RAM-ul ESP32-ului. |
| - | ====== 3. Descrierea componentelor ====== | + | ===== Schelet proiect ===== |
| + | Proiectul foloseste o masina de stari (enum StareKindle {MENIU, LECTURA}). | ||
| - | ^ Componenta ^ Functionalitate principala ^ | + | Interactiunea: Intreruperile gestioneaza encoderul. Loop-ul principal monitorizeaza butoanele (OK si SW) si verifica timpul scurs pentru alarma de inactivitate. |
| - | | ESP32 | Microcontroler principal; gestioneaza display-ul, cardul SD, audio si intrarile utilizatorului | | + | |
| - | | Display E-Ink 2.9” | Afisare text si interfata tip e-book cu consum redus | | + | |
| - | | Modul TF / MicroSD | Citire fisiere text de pe card microSD | | + | |
| - | | Card microSD | Stocarea fisierelor si a continutului text | | + | |
| - | | Encoder rotativ | Navigare intre pagini si meniuri | | + | |
| - | | Butoane | Control suplimentar pentru selectare si navigare | | + | |
| - | | Baterie LiPo 3.7V | Alimentarea portabila a dispozitivului | | + | |
| - | | Modul incarcare LiPo (TP4056) | Incarcarea si protectia bateriei | | + | |
| - | | Amplificator audio | Amplificarea semnalului audio generat de ESP32 | | + | |
| - | | Difuzor 3W 4Ω | Redare audio | | + | |
| - | | Senzor lumina LDR | Detectarea luminii ambientale | | + | |
| - | | Motor vibratii 3V | Feedback haptic la interactiune | | + | |
| - | | Tranzistor NPN 2N2222 | Controlul motorului de vibratii si protectia ESP32 | | + | |
| - | | Rezistente | Stabilizarea semnalelor si protectia componentelor | | + | |
| - | | Condensatoare 100nF | Filtrare zgomot si stabilizare alimentare | | + | |
| - | | Breadboard | Prototipare fara lipire | | + | |
| - | | Fire Dupont | Conectarea componentelor | | + | |
| - | | Switch ON/OFF | Pornirea si oprirea dispozitivului | | + | |
| - | ---- | + | Validare: Validarea interactiunii se face prin feedback haptic (vibratii la fiecare apasare OK) si vizual pe display. |
| - | ===== Schema Bloc ===== | + | ====== 6. Calibrare, optimizari si validare ====== |
| - | {{:pm:prj2026:ionut.otelea:schema_bloc.png?500|}} | + | |
| - | ===== Schema Electrica ===== | + | ===== Calibrarea elementelor ===== |
| - | {{:pm:prj2026:ionut.otelea:schema_electrica.png?650|}} | + | |
| + | 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. | ||
| - | ====== 5. Functionarea sistemului ====== | + | 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. |
| - | Sistemul este controlat de microcontrolerul ESP32, care coordoneaza toate perifericele conectate. | + | Consum: Eliminarea delay()-urilor blocante si utilizarea millis() pentru gestionarea timpului, ceea ce permite ESP32 sa ramana receptiv in orice moment. |
| - | Display-ul E-Ink afiseaza paginile text citite de pe cardul microSD. Utilizatorul navigheaza intre pagini folosind encoderul rotativ si butoanele dedicate. | + | ====== 7. Functionarea sistemului ====== |
| - | Fisierele text sunt stocate pe cardul microSD si accesate prin modulul TF. In anumite conditii, precum lipsa luminii ambientale detectata de senzorul LDR, dispozitivul poate activa redarea audio prin intermediul amplificatorului si difuzorului. | + | Sistemul este controlat de microcontrolerul ESP32 care coordoneaza perifericele. |
| - | Motorul de vibratii ofera feedback tactil la interactiunea utilizatorului cu dispozitivul. | + | 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). |
| - | Intregul sistem este alimentat de o baterie LiPo reincarcabila, gestionata prin modulul TP4056, oferind portabilitate si autonomie ridicata. | + | 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. |