This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:madalin.militaru [2026/05/09 21:44] madalin.militaru [Rezultate Obținute] |
pm:prj2026:cezar.zlatea:madalin.militaru [2026/05/09 22:02] (current) madalin.militaru [Algoritmi și structuri de date] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Smart Lock ====== | ====== Smart Lock ====== | ||
| + | |||
| ===== Introducere ===== | ===== Introducere ===== | ||
| Line 19: | Line 20: | ||
| * Pentru utilizatori: înlocuiește cheile fizice cu un cod ușor de reținut și schimbat | * Pentru utilizatori: înlocuiește cheile fizice cu un cod ușor de reținut și schimbat | ||
| * Pentru mine: integrează multiple concepte din electronică digitală - GPIO, PWM, comunicație I2C, timere, într-un singur proiect coerent | * Pentru mine: integrează multiple concepte din electronică digitală - GPIO, PWM, comunicație I2C, timere, într-un singur proiect coerent | ||
| + | |||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| Line 44: | Line 46: | ||
| **Interacțiune între module:** Butoanele generează evenimente care sunt procesate de mașina de stări, care la rândul ei actualizează LCD-ul, controlează servo-ul prin PWM, schimbă culoarea LED-ului RGB și citește/scrie din EEPROM. | **Interacțiune între module:** Butoanele generează evenimente care sunt procesate de mașina de stări, care la rândul ei actualizează LCD-ul, controlează servo-ul prin PWM, schimbă culoarea LED-ului RGB și citește/scrie din EEPROM. | ||
| + | |||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| + | |||
| ==== Listă de componente ==== | ==== Listă de componente ==== | ||
| Line 61: | Line 65: | ||
| | Rezistor 220Ω | 3 | Limitare curent canale R/G/B LED | | | Rezistor 220Ω | 3 | Limitare curent canale R/G/B LED | | ||
| | Condensator electrolitic 470µF / 35V | 1 | Filtrare alimentare servo | | | Condensator electrolitic 470µF / 35V | 1 | Filtrare alimentare servo | | ||
| - | | Fire jumper M-M și M-F | ~20 | Conexiuni între componente | | + | |
| ==== Schema electrică ==== | ==== Schema electrică ==== | ||
| + | |||
| + | **TO DO:** Schema electrică va fi realizată în Fusion 360 Electronics și adăugată aici la etapa 2. | ||
| + | |||
| + | |||
| + | ==== Diagrame de semnal ==== | ||
| + | |||
| + | **TO DO:** Diagramele PWM (servo) și I2C (LCD) vor fi adăugate la etapa 2. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | |||
| ==== Mediu de dezvoltare ==== | ==== Mediu de dezvoltare ==== | ||
| + | |||
| * **PlatformIO** (extensie pentru VSCode) - build system și upload pe placă | * **PlatformIO** (extensie pentru VSCode) - build system și upload pe placă | ||
| * **avr-gcc** - compilator pentru AVR | * **avr-gcc** - compilator pentru AVR | ||
| * **avrdude** - utilitar de programare prin debugger-ul mEDBG integrat în XMINI | * **avrdude** - utilitar de programare prin debugger-ul mEDBG integrat în XMINI | ||
| * **Limbaj:** C99 (bare-metal, fără framework Arduino) | * **Limbaj:** C99 (bare-metal, fără framework Arduino) | ||
| + | |||
| ==== Biblioteci 3rd-party folosite ==== | ==== Biblioteci 3rd-party folosite ==== | ||
| + | |||
| * **avr-libc** - biblioteca standard AVR (avr/io.h, avr/interrupt.h, avr/eeprom.h, util/delay.h) | * **avr-libc** - biblioteca standard AVR (avr/io.h, avr/interrupt.h, avr/eeprom.h, util/delay.h) | ||
| * **lcd_i2c** - driver minimal I2C pentru LCD (modificat și integrat în proiect) | * **lcd_i2c** - driver minimal I2C pentru LCD (modificat și integrat în proiect) | ||
| + | |||
| ==== Algoritmi și structuri de date ==== | ==== Algoritmi și structuri de date ==== | ||
| Line 90: | Line 106: | ||
| STATE_SET_OLD_PIN, // Verifica PIN-ul vechi inainte de schimbare | STATE_SET_OLD_PIN, // Verifica PIN-ul vechi inainte de schimbare | ||
| STATE_SET_NEW_PIN, // Introducere PIN nou + salvare in EEPROM | STATE_SET_NEW_PIN, // Introducere PIN nou + salvare in EEPROM | ||
| - | STATE_LOCKOUT // 3 incercari gresite -> blocare 30s | + | STATE_LOCKOUT // 3 incercari gresite blocare 30s |
| } system_state_t; | } system_state_t; | ||
| </code> | </code> | ||
| Line 104: | Line 120: | ||
| **4. Anti-brute-force:** | **4. Anti-brute-force:** | ||
| * Contor de încercări greșite consecutive | * Contor de încercări greșite consecutive | ||
| - | * La 3 încercări → tranziție în STATE_LOCKOUT pentru 30 secunde | + | * La 3 încercări tranziție în STATE_LOCKOUT pentru 30 secunde |
| * Pe LCD se afișează countdown în timp real | * Pe LCD se afișează countdown în timp real | ||
| * Toate butoanele ignorate în timpul lockout-ului | * Toate butoanele ignorate în timpul lockout-ului | ||
| - | ==== Funcții implementate ==== | ||
| ===== Rezultate Obținute ===== | ===== Rezultate Obținute ===== | ||
| - | //TO DO | + | **TO DO:** Vor fi documentate rezultatele după asamblarea hardware-ului și implementarea software-ului (etapa 3). |
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | //TO DO: Concluziile vor fi adăugate la finalul proiectului.// | + | **TO DO:** Concluziile vor fi adăugate la finalul proiectului. |
| ===== Download ===== | ===== Download ===== | ||
| + | |||
| ==== Repository GitHub ==== | ==== Repository GitHub ==== | ||
| - | //TO DO: Link-ul către repository-ul public GitHub va fi adăugat aici. Repository-ul va conține: | + | **TO DO:** Link-ul către repository-ul public GitHub va fi adăugat aici. |
| - | * **//src///** - codul sursă al firmware-ului | + | |
| - | * **//hardware///** - schemele electrice și diagramele | + | |
| - | * **//images///** - fotografii cu proiectul asamblat | + | |
| - | * **//README.md//** - descriere proiect, instrucțiuni de utilizare// | + | |
| ==== Demo video ==== | ==== Demo video ==== | ||
| - | //TO DO: Link YouTube cu demo-ul proiectului va fi adăugat la finalizare.// | + | **TO DO:** Link YouTube cu demo-ul proiectului va fi adăugat la finalizare. |
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| Line 137: | Line 153: | ||
| * **01.05.2026** - Achiziționarea pieselor | * **01.05.2026** - Achiziționarea pieselor | ||
| * **08.05.2026** - Prima versiune a documentației | * **08.05.2026** - Prima versiune a documentației | ||
| - | * //TO DO: Update-uri ulterioare pe măsură ce proiectul progresează// | + | * **TO DO:** Update-uri ulterioare pe măsură ce proiectul progresează |
| ===== Bibliografie / Resurse ===== | ===== Bibliografie / Resurse ===== | ||
| + | |||
| ==== Resurse Hardware ==== | ==== Resurse Hardware ==== | ||
| - | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf|Datasheet ATmega328P]] | ||
| - | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328P-Xplained-Mini-User-Guide-DS50002659B.pdf|User Guide ATmega328P-XMINI]] | ||
| - | * [[http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf|Datasheet Servo SG90]] | ||
| - | * [[https://www.sparkfun.com/datasheets/LCD/HD44780.pdf|Datasheet HD44780 (controller LCD)]] | ||
| - | * [[https://www.nxp.com/docs/en/data-sheet/PCF8574.pdf|Datasheet PCF8574 (I2C expander pentru LCD)]] | ||
| ==== Resurse Software ==== | ==== Resurse Software ==== | ||
| - | |||
| - | * [[https://www.nongnu.org/avr-libc/user-manual/|AVR Libc Reference Manual]] | ||
| - | * [[https://docs.platformio.org/en/latest/platforms/atmelavr.html|PlatformIO - Atmel AVR]] | ||
| - | * [[https://www.i2c-bus.org/|I2C Bus Specification]] | ||