This shows you the differences between two versions of the page.
|
pm:prj2026:ionut.otelea:catalina.neagu [2026/05/27 16:49] catalina.neagu [Pini folositi si motivatie] |
pm:prj2026:ionut.otelea:catalina.neagu [2026/05/27 17:30] (current) catalina.neagu [Biblioteci folosite] |
||
|---|---|---|---|
| Line 41: | Line 41: | ||
| ===== Schema Bloc ===== | ===== Schema Bloc ===== | ||
| - | {{:pm:prj2026:ionut.otelea:schema_bloc.png?500|}} | + | {{:pm:prj2026:ionut.otelea:schema_bloc_kindle_1_.png?500|}} |
| ===== Schema Electrica ===== | ===== Schema Electrica ===== | ||
| - | {{:pm:prj2026:ionut.otelea:schema_electrica.png?600|}} | + | {{:pm:prj2026:ionut.otelea:schematic_kindle.png?500|}} |
| ===== Pini folositi si motivatie ===== | ===== Pini folositi si motivatie ===== | ||
| Line 61: | Line 60: | ||
| ===== Justificarea utilizarii functionalitatilor ===== | ===== Justificarea utilizarii functionalitatilor ===== | ||
| - | *Intreruperi: Folosite pentru encoder (attachInterrupt pe pinul 27) pentru a detecta rotirea imediat, fara a bloca procesorul. | + | 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). | + | SPI: Folosit pentru comunicatia de mare viteza cu display-ul E-Ink. |
| + | |||
| + | GPIO: Utilizate pentru citirea butoanelor si controlul perifericelor de feedback (vibratii/buzzer). | ||
| + | ===== 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 ====== | ====== 5. Implementare software ====== | ||
| ===== Biblioteci folosite ===== | ===== Biblioteci folosite ===== | ||
| - | *GxEPD2_BW: Aleasa pentru eficienta in gestionarea buffer-ului E-Ink. | + | GxEPD2_BW: Aleasa pentru eficienta in gestionarea buffer-ului E-Ink. |
| - | *SPI.h: Esentiala pentru comunicatia hardware cu display-ul. | + | SPI.h: Esentiala pentru comunicatia hardware cu display-ul. |
| - | *PROGMEM: Folosita pentru a stoca textele cartilor direct in Flash, economisind RAM-ul ESP32-ului. | + | PROGMEM: Folosita pentru a stoca textele cartilor direct in Flash, economisind RAM-ul ESP32-ului. |
| ===== Schelet proiect ===== | ===== Schelet proiect ===== | ||
| - | *Proiectul foloseste o masina de stari (enum StareKindle {MENIU, LECTURA}). | + | 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. | + | 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. | + | Validare: Validarea interactiunii se face prin feedback haptic (vibratii la fiecare apasare OK) si vizual pe display. |
| ====== 6. Calibrare, optimizari si validare ====== | ====== 6. Calibrare, optimizari si validare ====== | ||
| Line 86: | Line 92: | ||
| ===== Calibrarea elementelor ===== | ===== Calibrarea elementelor ===== | ||
| - | *Encoder: Am implementat o logica de debounce hardware si software pentru a elimina zgomotul la rotire. | + | 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. | + | 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. | + | Debounce Butoane: Utilizarea unui prag de 300ms (DEBOUNCE_MS) in loop() pentru a evita trigger-ul multiplu la o singura apasare. |
| ===== Optimizari ====== | ===== Optimizari ====== | ||
| - | *Memorie RAM: Stocarea tuturor cartilor in Flash prin PROGMEM in loc de variabile String in RAM. | + | 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. | + | 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. | + | Consum: Eliminarea delay()-urilor blocante si utilizarea millis() pentru gestionarea timpului, ceea ce permite ESP32 sa ramana receptiv in orice moment. |
| ====== 7. Functionarea sistemului ====== | ====== 7. Functionarea sistemului ====== | ||