Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:atoader:george.simion2005 [2026/05/24 17:06]
george.simion2005
pm:prj2026:atoader:george.simion2005 [2026/05/25 17:59] (current)
george.simion2005
Line 3: Line 3:
 ===== Introducere ===== ===== Introducere =====
  
-Proiectul **Flipper One** reprezintă ​o mini-replică educaționalărealizată ​pe Arduino UNO, inspirată ​conceptual de dispozitivul de tip multi-tool folosit pentru pen-testing-ul ​comunicațiilor ​simple RF, RFID/​NFC ​și WiFi.+Proiectul **Flipper One** reprezinta ​o mini-replica educationalarealizata ​pe Arduino UNO, inspirata ​conceptual de dispozitivul de tip multi-tool folosit pentru pen-testing-ul ​comunicatiilor ​simple RF, RFID/​NFC ​si WiFi.
  
-Proiectul este construit ​în jurul unei plăci ​**Arduino UNO R3 / ATmega328P** ​și integrează ​un ecran OLED, butoane prin expander I2C, LED RGB, module RF 433 MHz, modul PN532 pentru RFID/NFC, modul ESP-01 pentru scanare WiFi și modul MicroSD pentru stocare.+Proiectul este construit ​in jurul unei placi **Arduino UNO R3 / ATmega328P** ​si integreaza ​un ecran OLED, butoane prin expander I2C, LED RGB, module RF 433 MHz, modul PN532 pentru RFID/NFC, modul ESP-01 pentru scanare WiFi si modul MicroSD pentru stocare.
  
-Produsul final a fost împărțit în două firmware-uri separate: +Produsul final a fost impartit in doua firmware-uri separate: 
-  * **Flipper One Main** ​– firmware-ul principal, care include RFID, WiFi, MicroSD ​și captură/replay RF într-un mod raw; +  * **Flipper One Main** ​firmware-ul principal, care include RFID, WiFi, MicroSD ​si captura/replay RF intr-un mod raw; 
-  * **Flipper One RF** – firmware pentru RF, bazat pe decodare cu RCSwitch, retransmitere ​și salvare pe card MicroSD.+  * **Flipper One RF** firmware pentru RF, bazat pe decodare cu RCSwitch, retransmitere ​si salvare pe card MicroSD.
  
-Această împărțire ​a fost necesară ​din cauza limitărilor ​severe de memorie ale microcontrollerului ATmega328P. ​Încercarea ​de a include simultan RFID, WiFi, SD, OLED, RF cu RCSwitch ​într-un singur firmware ​depășea ​limita de Flash. Prin urmare, am modularizat proiectul ​în două coduri care folosesc ​aceeași platformă ​hardware, dar sunt încărcate ​separat ​în funcție ​de functia ​dorită.+Aceasta impartire ​a fost necesara ​din cauza limitarilor ​severe de memorie ale microcontrollerului ATmega328P. ​Incercarea ​de a include simultan RFID, WiFi, SD, OLED, RF cu RCSwitch ​intr-un singur firmware ​depasea ​limita de Flash. Prin urmare, am modularizat proiectul ​in doua coduri care folosesc ​aceeasi platforma ​hardware, dar sunt incarcate ​separat ​in functie ​de functia ​dorita.
  
-Funcționalități ​principale implementate:​+Functionalitati ​principale implementate:​
   * citirea UID-urilor RFID folosind modulul PN532;   * citirea UID-urilor RFID folosind modulul PN532;
   * salvarea UID-urilor RFID pe card MicroSD;   * salvarea UID-urilor RFID pe card MicroSD;
-  * scanarea ​rețelelor ​WiFi din apropiere folosind ESP-01 / ESP8266; +  * scanarea ​retelelor ​WiFi din apropiere folosind ESP-01 / ESP8266; 
-  * salvarea ​scanărilor ​WiFi pe card MicroSD; +  * salvarea ​scanarilor ​WiFi pe card MicroSD; 
-  * analiza ​rețelelor ​WiFi detectate: RSSI, securitate, canal, WPS, MAC/​BSSID ​și observații ​simple; +  * analiza ​retelelor ​WiFi detectate: RSSI, securitate, canal, WPS, MAC/​BSSID ​si observatii ​simple; 
-  * capturarea raw a semnalelor RF 433 MHz și retransmiterea lor în firmware-ul principal;​ +  * capturarea raw a semnalelor RF 433 MHz si retransmiterea lor in firmware-ul principal;​ 
-  * capturarea/​decodarea RF cu RCSwitch ​în firmware-ul RF dedicat; +  * capturarea/​decodarea RF cu RCSwitch ​in firmware-ul RF dedicat; 
-  * salvarea codurilor RF decodate ​în fișiere ​separate pe cardul MicroSD; +  * salvarea codurilor RF decodate ​in fisiere ​separate pe cardul MicroSD; 
-  * interfață ​utilizator pe OLED 128x64;+  * interfata ​utilizator pe OLED 128x64;
   * control prin 4 butoane conectate prin PCF8574;   * control prin 4 butoane conectate prin PCF8574;
   * feedback vizual prin LED RGB.   * feedback vizual prin LED RGB.
  
-Din punct de vedere al rezultatului final, modulul RFID detectează ​cardurile ​și salvează ​UID-urile pe SD, modulul WiFi realizează scanărisalvează ​rezultatele ​și afișează ​o mini-analiza a rețelelor. Partea RF are cateva imperfectiuni:​ captura raw este foarte ​sensibilă ​la zgomotul receptorului,​ iar varianta cu RCSwitch este mai curată ​din punct de vedere software, dar depinde puternic de protocolul telecomenzii ​și de calitatea semnalului primit.+Din punct de vedere al rezultatului final, modulul RFID detecteaza ​cardurile ​si salveaza ​UID-urile pe SD, modulul WiFi realizeaza scanarisalveaza ​rezultatele ​si afiseaza ​o mini-analiza a retelelor. Partea RF are cateva imperfectiuni:​ captura raw este foarte ​sensibila ​la zgomotul receptorului,​ iar varianta cu RCSwitch este mai curata ​din punct de vedere software, dar depinde puternic de protocolul telecomenzii ​si de calitatea semnalului primit.
  
-===== Descriere ​generală ​=====+===== Descriere ​generala ​=====
  
-Sistemul este organizat ​în jurul plăcii ​**Arduino UNO R3**, bazată ​pe microcontrollerul **ATmega328P**. Arduino ​coordonează ​toate modulele externe, ​citește ​butoanele, ​actualizează afișajul ​OLED și execută funcțiile ​alese din meniu.+Sistemul este organizat ​in jurul placii ​**Arduino UNO R3**, bazata ​pe microcontrollerul **ATmega328P**. Arduino ​coordoneaza ​toate modulele externe, ​citeste ​butoanele, ​actualizeaza afisajul ​OLED si executa functiile ​alese din meniu.
  
-Interacțiunea ​cu utilizatorul se face prin: +Interactiunea ​cu utilizatorul se face prin: 
-  * un ecran **OLED SH1106 128x64 SPI**, folosit ​în mod text prin biblioteca U8x8;+  * un ecran **OLED SH1106 128x64 SPI**, folosit ​in mod text prin biblioteca U8x8;
   * 4 butoane conectate la un **PCF8574** pe I2C;   * 4 butoane conectate la un **PCF8574** pe I2C;
   * un **LED RGB** conectat la pini PWM pentru feedback vizual.   * un **LED RGB** conectat la pini PWM pentru feedback vizual.
  
-Din cauza numarului de pini necesarui pentru conectarea tuturor modulelor am optat spre a fololsi un expander I2C PCF8574 la care am legat cele 4 butoane. Astfel, cele 4 butoane folosesc ​aceeași magistrală ​I2C ca modulul PN532.+Din cauza numarului de pini necesarui pentru conectarea tuturor modulelor am optat spre a fololsi un expander I2C PCF8574 la care am legat cele 4 butoane. Astfel, cele 4 butoane folosesc ​aceeasi magistrala ​I2C ca modulul PN532.
  
-Partea de RF este realizată ​cu două module de 433 MHz: +Partea de RF este realizata ​cu doua module de 433 MHz: 
-  * **SRX887** ​– receptor, conectat pe D2, pin care suportă întrerupere externă ​INT0; +  * **SRX887** ​receptor, conectat pe D2, pin care suporta intrerupere externa ​INT0; 
-  * **STX882** ​– emițător, conectat pe D8.+  * **STX882** ​- emitator, conectat pe D8.
  
-În firmware-ul principal, semnalul RF este tratat raw: programul ​memorează ​duratele dintre ​tranzițiile ​de nivel logic detectate pe D2 și încearcă să le retransmită ​pe D8. Această ​abordare, pe Arduino UNO, este limitată ​de memorie ​și este foarte ​sensibilă ​la zgomot, dar apropiată ​conceptual de un sistem de captură ​raw,. +In firmware-ul principal, semnalul RF este tratat raw: programul ​memoreaza ​duratele dintre ​tranzitiile ​de nivel logic detectate pe D2 si incearca sa le retransmita ​pe D8. Aceasta ​abordare, pe Arduino UNO, este limitata ​de memorie ​si este foarte ​sensibila ​la zgomot, dar apropiata ​conceptual de un sistem de captura ​raw,. 
-În firmware-ul RF separat, semnalul este tratat cu biblioteca **RCSwitch**,​ care încearcă să decodeze protocoale RF simple de tip fixed-code. ​În loc să salveze sute de tranziții, firmware-ul ​salvează ​doar valoarea ​decodatănumărul ​de biți, protocolul ​și lungimea pulsului. ​Această metodă ​este mult mai eficientă ​ca memorie, dar funcționează ​doar pentru protocoalele suportate de RCSwitch ​și pentru telecomenzi compatibile.+In firmware-ul RF separat, semnalul este tratat cu biblioteca **RCSwitch**,​ care incearca sa decodeze protocoale RF simple de tip fixed-code. ​In loc sa salveze sute de tranzitii, firmware-ul ​salveaza ​doar valoarea ​decodatanumarul ​de biti, protocolul ​si lungimea pulsului. ​Aceasta metoda ​este mult mai eficienta ​ca memorie, dar functioneaza ​doar pentru protocoalele suportate de RCSwitch ​si pentru telecomenzi compatibile.
  
-Modulul **PN532 RFID/NFC** este conectat pe I2C și este folosit pentru citirea UID-urilor cardurilor. Pentru a reduce consumul de memorie, ​în firmware-ul principal am folosit o implementare ​minimală ​pentru comenzile PN532 necesare: ​inițializare, configurare SAM și citire UID.+Modulul **PN532 RFID/NFC** este conectat pe I2C si este folosit pentru citirea UID-urilor cardurilor. Pentru a reduce consumul de memorie, ​in firmware-ul principal am folosit o implementare ​minimala ​pentru comenzile PN532 necesare: ​initializare, configurare SAM si citire UID.
  
-Modulul **ESP-01 / ESP8266** este conectat prin SoftwareSerial. Arduino ​îi trimite comenzi AT, iar ESP-ul ​răspunde ​cu lista rețelelor ​WiFi detectate. Datele sunt salvate pe cardul MicroSD ​în fișierul ​`WIFIDB.TXT`,​ apoi sunt citite ​și analizate din fișier, nu păstrate ​integral ​în RAM din cauza constraint-urilor de memorie.+Modulul **ESP-01 / ESP8266** este conectat prin SoftwareSerial. Arduino ​ii trimite comenzi AT, iar ESP-ul ​raspunde ​cu lista retelelor ​WiFi detectate. Datele sunt salvate pe cardul MicroSD ​in fisierul ​`WIFIDB.TXT`,​ apoi sunt citite ​si analizate din fisier, nu pastrate ​integral ​in RAM din cauza constraint-urilor de memorie.
  
-Modulul **MicroSD** este conectat pe SPI și este folosit pentru stocarea ​persistentă ​a datelor: +Modulul **MicroSD** este conectat pe SPI si este folosit pentru stocarea ​persistenta ​a datelor: 
-  * UID-uri RFID în fișiere ​`.UID`, indexate ​în `UIDIDX.TXT`;​ +  * UID-uri RFID in fisiere ​`.UID`, indexate ​in `UIDIDX.TXT`;​ 
-  * scanări ​WiFi în `WIFIDB.TXT`;​ +  * scanari ​WiFi in `WIFIDB.TXT`;​ 
-  * coduri RF decodate ​în firmware-ul RF, în fișiere ​`.RFC`, indexate ​în `RFIDX.TXT`.+  * coduri RF decodate ​in firmware-ul RF, in fisiere ​`.RFC`, indexate ​in `RFIDX.TXT`.
  
-Logica ​generală ​a dispozitivului este bazată ​pe o mașină ​de stări+Logica ​generala ​a dispozitivului este bazata ​pe o masina ​de stari
-  * **Main Menu** ​– utilizatorul alege modul de lucru; +  * **Main Menu** ​utilizatorul alege modul de lucru; 
-  * **RF Capture / RF Emit** ​– captură și retransmitere RF; +  * **RF Capture / RF Emit** ​- captura si retransmitere RF; 
-  * **RFID Scan / Save UID** – citire ​și salvare UID; +  * **RFID Scan / Save UID** citire ​si salvare UID; 
-  * **WiFi Scan / View Networks** ​– scanare ​și afișare rețele ​WiFi; +  * **WiFi Scan / View Networks** ​scanare ​si afisare retele ​WiFi; 
-  * **SD Browser** ​– vizualizarea ​fișierelor ​salvate; +  * **SD Browser** ​vizualizarea ​fisierelor ​salvate; 
-  * **Status** ​– afișarea stării ​sistemului. +  * **Status** ​- afisarea starii ​sistemului.
- +
-{{:​pm:​prj2026:​atoader:​flipperone_blockdiagram_george.simion2005.png?​700|Schema bloc Flipper One}}+
  
 +{{:​pm:​prj2026:​atoader:​flipperone_blockdiagram_george.simion2005.png?​600|}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
-Ambele variante de firmware folosesc ​aceeași placă ​Arduino UNO și aceleași ​conexiuni fizice. ​Diferența ​este la nivel software: firmware-ul ​încărcat ​pe Arduino decide ce module sunt folosite efectiv.+Ambele variante de firmware folosesc ​aceeasi placa Arduino UNO si aceleasi ​conexiuni fizice. ​Diferenta ​este la nivel software: firmware-ul ​incarcat ​pe Arduino decide ce module sunt folosite efectiv.
  
-Montajul este realizat pe breadboard ​și include ​următoarele ​module:+Montajul este realizat pe breadboard ​si include ​urmatoarele ​module:
   * Arduino UNO R3 / ATmega328P;   * Arduino UNO R3 / ATmega328P;
   * OLED SH1106 128x64 pe SPI;   * OLED SH1106 128x64 pe SPI;
   * receptor RF SRX887 433 MHz;   * receptor RF SRX887 433 MHz;
-  * emițător ​RF STX882 433 MHz;+  * emitator ​RF STX882 433 MHz;
   * modul PN532 RFID/NFC pe I2C;   * modul PN532 RFID/NFC pe I2C;
   * expander PCF8574 pentru butoane pe I2C;   * expander PCF8574 pentru butoane pe I2C;
Line 82: Line 81:
   * modul MicroSD pe SPI.   * modul MicroSD pe SPI.
  
-Alimentarea este împărțită ​astfel: +Alimentarea este impartita ​astfel: 
-  * **5V** pentru Arduino, OLED, PN532, PCF8574, module RF și MicroSD;+  * **5V** pentru Arduino, OLED, PN532, PCF8574, module RF si MicroSD;
   * **3.3V** pentru ESP-01, generat prin AMS1117;   * **3.3V** pentru ESP-01, generat prin AMS1117;
   * **GND comun** pentru toate modulele.   * **GND comun** pentru toate modulele.
  
-PN532 și PCF8574 sunt pe aceeași magistrală ​I2C, iar OLED-ul ​și MicroSD-ul ​împart ​magistrala SPI. Pentru a evita conflictele pe SPI, fiecare dispozitiv are pinul său de chip select: OLED pe D10 și SD pe A3.+PN532 si PCF8574 sunt pe aceeasi magistrala ​I2C, iar OLED-ul ​si MicroSD-ul ​impart ​magistrala SPI. Pentru a evita conflictele pe SPI, fiecare dispozitiv are pinul sau de chip select: OLED pe D10 si SD pe A3.
  
-{{:​pm:​prj2026:​atoader:​fliiper1_real.jpeg?900|Montajul fizic Flipper One}}+{{:​pm:​prj2026:​atoader:​flipper1_real.png?650}}
  
-{{:​pm:​prj2026:​atoader:​schema_flipper1.png?​900|Schema hardware detaliată a montajului}}+{{:​pm:​prj2026:​atoader:​schema_flipper1.png?​650}}
  
 ==== Componente folosite ==== ==== Componente folosite ====
  
-Componentă ​^ Rol în proiect ^ Interfață ​observații ​+Componenta ​^ Rol in proiect ^ Interfata ​observatii ​
-| **Arduino UNO R3 / ATmega328P** | Unitatea ​centrală ​a sistemului | GPIO, PWM, SPI, I2C, SoftwareSerial | +| **Arduino UNO R3 / ATmega328P** | Unitatea ​centrala ​a sistemului | GPIO, PWM, SPI, I2C, SoftwareSerial | 
-| **Breadboard SYB-120** | Suport pentru prototipare ​și distribuție ​alimentare | 5V, 3.3V, GND | +| **Breadboard SYB-120** | Suport pentru prototipare ​si distributie ​alimentare | 5V, 3.3V, GND | 
-| **OLED 1.3''​ SH1106 128x64** | Afișarea ​meniurilor ​și a rezultatelor | SPI hardware, U8x8 fără ​framebuffer | +| **OLED 1.3''​ SH1106 128x64** | Afisarea ​meniurilor ​si a rezultatelor | SPI hardware, U8x8 fara framebuffer | 
-| **SRX887 433 MHz** | Recepție ​RF | DATA pe D2 / INT0, CS la GND în modul activ |+| **SRX887 433 MHz** | Receptie ​RF | DATA pe D2 / INT0, CS la GND in modul activ |
 | **STX882 433 MHz** | Transmisie RF | DATA pe D8 | | **STX882 433 MHz** | Transmisie RF | DATA pe D8 |
 | **LED RGB KY-016** | Feedback vizual | PWM pe D3, D5, D6 | | **LED RGB KY-016** | Feedback vizual | PWM pe D3, D5, D6 |
 | **PCF8574** | Extinderea pinilor pentru butoane | I2C pe A4/A5 | | **PCF8574** | Extinderea pinilor pentru butoane | I2C pe A4/A5 |
-| **4 butoane tactile** | Navigare ​în meniu | P0-P3 pe PCF8574 |+| **4 butoane tactile** | Navigare ​in meniu | P0-P3 pe PCF8574 |
 | **PN532 RFID/NFC** | Citire UID carduri/​tag-uri | I2C, reset pe A1 | | **PN532 RFID/NFC** | Citire UID carduri/​tag-uri | I2C, reset pe A1 |
-| **ESP-01 / ESP8266** | Scanare ​rețele ​WiFi | SoftwareSerial D4/D7, alimentare 3.3V |+| **ESP-01 / ESP8266** | Scanare ​retele ​WiFi | SoftwareSerial D4/D7, alimentare 3.3V |
 | **AMS1117 3.3V** | Regulator pentru ESP-01 | VIN 5V, VOUT 3.3V | | **AMS1117 3.3V** | Regulator pentru ESP-01 | VIN 5V, VOUT 3.3V |
-| **Modul MicroSD** | Stocare ​persistentă ​| SPI, CS pe A3 |+| **Modul MicroSD** | Stocare ​persistenta ​| SPI, CS pe A3 |
  
 ==== Maparea pinilor Arduino ==== ==== Maparea pinilor Arduino ====
Line 113: Line 112:
 ^ Pin Arduino ^ Conectat la ^ Justificare ^ ^ Pin Arduino ^ Conectat la ^ Justificare ^
 | **5V** | OLED, PN532, PCF8574, RF, MicroSD, AMS1117 VIN | Alimentare module compatibile 5V | | **5V** | OLED, PN532, PCF8574, RF, MicroSD, AMS1117 VIN | Alimentare module compatibile 5V |
-| **GND** | Toate modulele | Referință comună ​+| **GND** | Toate modulele | Referinta comuna ​
-| **D2** | DATA receptor SRX887 | Pin cu întrerupere externă ​INT0 |+| **D2** | DATA receptor SRX887 | Pin cu intrerupere externa ​INT0 |
 | **D3** | LED RGB - R | PWM | | **D3** | LED RGB - R | PWM |
-| **D4** | ESP-01 TX către ​Arduino | SoftwareSerial RX |+| **D4** | ESP-01 TX catre Arduino | SoftwareSerial RX |
 | **D5** | LED RGB - G | PWM | | **D5** | LED RGB - G | PWM |
 | **D6** | LED RGB - B | PWM | | **D6** | LED RGB - B | PWM |
 | **D7** | ESP-01 RX de la Arduino | SoftwareSerial TX | | **D7** | ESP-01 RX de la Arduino | SoftwareSerial TX |
-| **D8** | DATA emițător ​STX882 | Ieșire digitală ​pentru transmisie RF |+| **D8** | DATA emitator ​STX882 | Iesire digitala ​pentru transmisie RF |
 | **D9** | RST OLED | Reset display | | **D9** | RST OLED | Reset display |
 | **D10** | CS OLED | Chip select SPI OLED | | **D10** | CS OLED | Chip select SPI OLED |
-| **D11** | MOSI SPI | Date către ​OLED și MicroSD |+| **D11** | MOSI SPI | Date catre OLED si MicroSD |
 | **D12** | MISO SPI | Date de la MicroSD | | **D12** | MISO SPI | Date de la MicroSD |
 | **D13** | SCK SPI | Clock SPI | | **D13** | SCK SPI | Clock SPI |
-| **A0** | DC OLED | Selectare ​comandă/date OLED |+| **A0** | DC OLED | Selectare ​comanda/date OLED |
 | **A1** | RESET PN532 | Reset hardware PN532 | | **A1** | RESET PN532 | Reset hardware PN532 |
 | **A2** | IRQ PN532 | Pin rezervat pentru IRQ PN532 | | **A2** | IRQ PN532 | Pin rezervat pentru IRQ PN532 |
 | **A3** | CS MicroSD | Chip select SD | | **A3** | CS MicroSD | Chip select SD |
-| **A4** | SDA PCF8574 + PN532 | Magistrală ​I2C | +| **A4** | SDA PCF8574 + PN532 | Magistrala ​I2C | 
-| **A5** | SCL PCF8574 + PN532 | Magistrală ​I2C |+| **A5** | SCL PCF8574 + PN532 | Magistrala ​I2C |
  
-==== Conexiuni ​importante ​====+==== Conexiuni ====
  
 === OLED SPI === === OLED SPI ===
Line 166: Line 165:
 | IRQ | A2 | | IRQ | A2 |
  
-=== PCF8574 ​și butoane ===+=== PCF8574 ​si butoane ===
  
 ^ Pin PCF8574 ^ Conexiune ^ ^ Pin PCF8574 ^ Conexiune ^
Line 185: Line 184:
 | SRX887 | CS | GND pentru activare | | SRX887 | CS | GND pentru activare |
 | SRX887 | DATA | D2 / INT0 | | SRX887 | DATA | D2 / INT0 |
-| SRX887 | ANT | Antenă ​433 MHz |+| SRX887 | ANT | Antena ​433 MHz |
 | STX882 | VCC | 5V | | STX882 | VCC | 5V |
 | STX882 | GND | GND | | STX882 | GND | GND |
 | STX882 | DATA | D8 | | STX882 | DATA | D8 |
-| STX882 | ANT | Antenă ​433 MHz |+| STX882 | ANT | Antena ​433 MHz |
  
 === ESP-01 === === ESP-01 ===
  
-^ Pin ESP-01 ^ Conectat la ^ Observații ​+^ Pin ESP-01 ^ Conectat la ^ Observatii ​
-| VCC | 3.3V AMS1117 | ESP-ul nu se alimentează ​direct din 5V | +| VCC | 3.3V AMS1117 | ESP-ul nu se alimenteaza ​direct din 5V | 
-| GND | GND comun | Masă comună ​+| GND | GND comun | Masa comuna ​
-| TX | D4 Arduino | Arduino ​primește ​prin SoftwareSerial |+| TX | D4 Arduino | Arduino ​primeste ​prin SoftwareSerial |
 | RX | D7 Arduino | Arduino trimite comenzi AT | | RX | D7 Arduino | Arduino trimite comenzi AT |
 | CH_PD / EN | 3.3V | Activare modul | | CH_PD / EN | 3.3V | Activare modul |
Line 204: Line 203:
 ==== Mediu de dezvoltare ==== ==== Mediu de dezvoltare ====
  
-Proiectul a fost dezvoltat ​în **Visual Studio Code** folosind **PlatformIO** ​și toolchain-ul AVR-GCC pentru Arduino UNO. Framework-ul folosit este Arduino, deoarece proiectul ​integrează ​mai multe biblioteci ​și periferice externe.+Proiectul a fost dezvoltat ​in **Visual Studio Code** folosind **PlatformIO** ​si toolchain-ul AVR-GCC pentru Arduino UNO. Framework-ul folosit este Arduino, deoarece proiectul ​integreaza ​mai multe biblioteci ​si periferice externe.
  
 Biblioteci folosite: Biblioteci folosite:
-  * `U8g2 / U8x8` – afișare ​text pe OLED SH1106 ​fără ​framebuffer,​ pentru economie de RAM; +  * `U8g2 / U8x8` - afisare ​text pe OLED SH1106 ​fara framebuffer,​ pentru economie de RAM; 
-  * `SD` – acces la cardul MicroSD; +  * `SD` acces la cardul MicroSD; 
-  * `Wire` ​– comunicație ​I2C cu PCF8574 ​și PN532; +  * `Wire` ​- comunicatie ​I2C cu PCF8574 ​si PN532; 
-  * `SPI` – comunicație ​cu OLED și MicroSD; +  * `SPI` - comunicatie ​cu OLED si MicroSD; 
-  * `SoftwareSerial` ​– comunicație serială ​cu ESP-01; +  * `SoftwareSerial` ​- comunicatie seriala ​cu ESP-01; 
-  * `RCSwitch` ​– folosit doar în firmware-ul RF dedicat.+  * `RCSwitch` ​folosit doar in firmware-ul RF dedicat.
  
-Pentru a evita depășirea ​memoriei Flash, proiectul este împărțit în două environment-uri PlatformIO:+Pentru a evita depasirea ​memoriei Flash, proiectul este impartit in doua environment-uri PlatformIO:
  
 <code ini> <code ini>
Line 224: Line 223:
 </​code>​ </​code>​
  
-==== Motivul ​modularizării în două firmware-uri ====+==== Motivul ​modularizarii in doua firmware-uri ====
  
-Microcontrollerul ATmega328P are doar 32 KB Flash și 2 KB SRAM. În timpul ​dezvoltăriiîncercarea ​de a include toate funcțiile într-un singur firmware a dus la depășirea ​limitei de Flash sau la instabilitate runtime, mai ales când erau folosite simultan:+Microcontrollerul ATmega328P are doar 32 KB Flash si 2 KB SRAM. In timpul ​dezvoltariiincercarea ​de a include toate functiile intr-un singur firmware a dus la depasirea ​limitei de Flash sau la instabilitate runtime, mai ales cand erau folosite simultan:
   * biblioteca SD;   * biblioteca SD;
   * biblioteca RCSwitch;   * biblioteca RCSwitch;
Line 234: Line 233:
   * analiza WiFi;   * analiza WiFi;
  
-Soluția finală ​a fost separarea proiectului ​în două coduri: +Solutia finala ​a fost separarea proiectului ​in doua coduri: 
-  * firmware-ul **main_demo**,​ pentru functionalitate RFID/​WiFi/​SD ​și raw RF; +  * firmware-ul **main_demo**,​ pentru functionalitate RFID/​WiFi/​SD ​si raw RF; 
-  * firmware-ul **rf_demo**,​ pentru functionalitate ​specializată ​RF cu RCSwitch ​și salvare pe SD.+  * firmware-ul **rf_demo**,​ pentru functionalitate ​specializata ​RF cu RCSwitch ​si salvare pe SD.
  
 ==== Firmware 1: Flipper One Main ==== ==== Firmware 1: Flipper One Main ====
  
 Firmware-ul principal si cel mai "​product ready" din cele 2: Firmware-ul principal si cel mai "​product ready" din cele 2:
-  * captură ​RF raw;+  * captura ​RF raw;
   * retransmitere RF raw;   * retransmitere RF raw;
   * scanare RFID;   * scanare RFID;
   * salvare UID RFID pe card MicroSD;   * salvare UID RFID pe card MicroSD;
-  * scanare WiFi cu ESP-01 si salvare autoamta ​în `WIFIDB.TXT` a retelelor;​ +  * scanare WiFi cu ESP-01 si salvare autoamta ​in `WIFIDB.TXT` a retelelor;​ 
-  * analiză ​WiFi pe OLED; +  * analiza ​WiFi pe OLED; 
-  * browser SD pentru ​fișierele ​salvate;+  * browser SD pentru ​fisierele ​salvate;
   * status general.   * status general.
  
-=== Captură ​RF raw ===+=== Captura ​RF raw ===
  
-În modul raw, receptorul RF este conectat la D2, iar codul folosește întreruperea externă ​INT0 pentru a măsura ​timpul dintre ​tranzițiile ​semnalului. Fiecare ​durată ​este salvată într-un buffer de tip `uint16_t`.+In modul raw, receptorul RF este conectat la D2, iar codul foloseste intreruperea externa ​INT0 pentru a masura ​timpul dintre ​tranzitiile ​semnalului. Fiecare ​durata ​este salvata intr-un buffer de tip `uint16_t`.
  
-Avantajul acestei ​abordări ​este că nu presupune ​cunoașterea ​protocolului. ​În teorie, poate captura orice secvență ​de impulsuri OOK/ASK suficient de simplă.+Avantajul acestei ​abordari ​este ca nu presupune ​cunoasterea ​protocolului. ​In teorie, poate captura orice secventa ​de impulsuri OOK/ASK suficient de simpla.
  
-Dezavantajul major este sensibilitatea la zgomot. Receptorul SRX887 poate genera ​tranziții ​chiar și în lipsa unui semnal real, din cauza AGC-ului ​și a zgomotului RF din mediu. Astfel, bufferul se poate umple cu zgomot ​înainte ​ca utilizatorul ​să apese telecomanda. Din acest motiv, captura RF este cea mai instabilă ​parte a proiectului.+Dezavantajul major este sensibilitatea la zgomot. Receptorul SRX887 poate genera ​tranzitii ​chiar si in lipsa unui semnal real, din cauza AGC-ului ​si a zgomotului RF din mediu. Astfel, bufferul se poate umple cu zgomot ​inainte ​ca utilizatorul ​sa apese telecomanda. Din acest motiv, captura RF este cea mai instabila ​parte a proiectului.
  
 === RFID === === RFID ===
  
-Modulul PN532 este controlat prin I2C. Pentru economie de memorie, nu este folosită ​biblioteca ​completă ​Adafruit PN532, ci un driver minimal care implementează ​doar comenzile necesare: +Modulul PN532 este controlat prin I2C. Pentru economie de memorie, nu este folosita ​biblioteca ​completa ​Adafruit PN532, ci un driver minimal care implementeaza ​doar comenzile necesare: 
-  * `GetFirmwareVersion` pentru verificarea ​prezenței ​modulului;+  * `GetFirmwareVersion` pentru verificarea ​prezentei ​modulului;
   * `SAMConfiguration` pentru configurarea modului normal;   * `SAMConfiguration` pentru configurarea modului normal;
   * `InListPassiveTarget` pentru citirea cardurilor ISO14443A.   * `InListPassiveTarget` pentru citirea cardurilor ISO14443A.
  
-După detectarea unui card, UID-ul este afișat ​pe OLED și poate fi salvat pe SD într-un fișier ​`.UID`. Numele ​fișierului ​este generat automat, iar indexul ​fișierelor ​salvate este păstrat în `UIDIDX.TXT`.+Dupa detectarea unui card, UID-ul este afisat ​pe OLED si poate fi salvat pe SD intr-un fisier ​`.UID`. Numele ​fisierului ​este generat automat, iar indexul ​fisierelor ​salvate este pastrat in `UIDIDX.TXT`.
  
-Exemplu format ​fișier ​RFID:+Exemplu format ​fisier ​RFID:
  
 <code text> <code text>
Line 276: Line 275:
 === WiFi === === WiFi ===
  
-Pentru scanarea WiFi este folosit un modul ESP-01 / ESP8266 cu firmware AT. Arduino ​comunică ​prin SoftwareSerial ​și trimite comanda:+Pentru scanarea WiFi este folosit un modul ESP-01 / ESP8266 cu firmware AT. Arduino ​comunica ​prin SoftwareSerial ​si trimite comanda:
  
 <code text> <code text>
Line 282: Line 281:
 </​code>​ </​code>​
  
-Răspunsurile ​de forma `+CWLAP:​(...)` sunt salvate automat pe cardul MicroSD ​în fișierul ​`WIFIDB.TXT`. Am luat aceasta decizie de implementare pentru a economisi RAM, rețelele ​nefiind ​păstrate într-un vector mare, ci scrise direct pe SD și apoi citite la nevoie.+Raspunsurile ​de forma `+CWLAP:​(...)` sunt salvate automat pe cardul MicroSD ​in fisierul ​`WIFIDB.TXT`. Am luat aceasta decizie de implementare pentru a economisi RAM, retelele ​nefiind ​pastrate intr-un vector mare, ci scrise direct pe SD si apoi citite la nevoie.
  
-Date analizate pentru fiecare ​rețea:+Date analizate pentru fiecare ​retea:
   * SSID;   * SSID;
   * RSSI;   * RSSI;
Line 293: Line 292:
   * cipher pairwise/​group;​   * cipher pairwise/​group;​
   * protocol b/g/n;   * protocol b/g/n;
-  * observații ​simple despre calitatea semnalului ​și congestie.+  * observatii ​simple despre calitatea semnalului ​si congestie.
  
 === SD Browser === === SD Browser ===
  
-Firmware-ul principal include un browser simplu de fișiere ​salvate. Acesta ​citește ​indexul linie cu linie și afișează fișierele ​pe OLED. Pentru a evita directoarele ​și operații ​costisitoare pe SD, sunt folosite ​fișiere ​index:+Firmware-ul principal include un browser simplu de fisiere ​salvate. Acesta ​citeste ​indexul linie cu linie si afiseaza fisierele ​pe OLED. Pentru a evita directoarele ​si operatii ​costisitoare pe SD, sunt folosite ​fisiere ​index:
   * `UIDIDX.TXT` pentru UID-uri RFID;   * `UIDIDX.TXT` pentru UID-uri RFID;
-  * `RFIDX.TXT` pentru capturi RF raw, în varianta ​inițială+  * `RFIDX.TXT` pentru capturi RF raw, in varianta ​initiala
-  * `WIFIDB.TXT` pentru scanarea WiFi curentă.+  * `WIFIDB.TXT` pentru scanarea WiFi curenta.
  
 ==== Firmware 2: Flipper One RF ==== ==== Firmware 2: Flipper One RF ====
  
-Firmware-ul RF este o variantă specializată ​pentru testarea RF 433 MHz. Acesta include:+Firmware-ul RF este o varianta specializata ​pentru testarea RF 433 MHz. Acesta include:
   * OLED;   * OLED;
   * PCF8574 + butoane;   * PCF8574 + butoane;
Line 312: Line 311:
   * MicroSD pentru salvarea codurilor RF decodate.   * MicroSD pentru salvarea codurilor RF decodate.
  
-Nu include PN532, ESP-01 sau analiza WiFi, tocmai pentru a păstra ​suficient ​spațiu ​pentru RCSwitch, pentru logica de salvare RF si ca devena redundant.+Nu include PN532, ESP-01 sau analiza WiFi, tocmai pentru a pastra ​suficient ​spatiu ​pentru RCSwitch, pentru logica de salvare RF si ca devena redundant.
  
 Meniul firmware-ului RF: Meniul firmware-ului RF:
-  * **Capture RF** – așteaptă ​un cod RF compatibil RCSwitch; +  * **Capture RF** - asteapta ​un cod RF compatibil RCSwitch; 
-  * **Emit Last** ​– retransmite ultimul cod capturat sau încărcat+  * **Emit Last** ​retransmite ultimul cod capturat sau incarcat
-  * **Save Last** ​– salvează ​codul RF curent pe SD; +  * **Save Last** ​- salveaza ​codul RF curent pe SD; 
-  * **Saved RF** – listează fișierele ​RF salvate ​și permite ​încărcarea ​lor; +  * **Saved RF** - listeaza fisierele ​RF salvate ​si permite ​incarcarea ​lor; 
-  * **Status** ​– afișează ​valoarea, bit length, protocolul, delay-ul ​și starea SD.+  * **Status** ​- afiseaza ​valoarea, bit length, protocolul, delay-ul ​si starea SD.
  
-=== Captură ​RF cu RCSwitch ===+=== Captura ​RF cu RCSwitch ===
  
-În acest firmware, ​în loc să se salveze ​tranzițiile ​brute, biblioteca RCSwitch ​încearcă să decodeze semnalul. ​Dacă reușește, firmware-ul ​reține+In acest firmware, ​in loc sa se salveze ​tranzitiile ​brute, biblioteca RCSwitch ​incearca sa decodeze semnalul. ​Daca reuseste, firmware-ul ​retine
-  * `value` ​– valoarea ​numerică decodată+  * `value` ​valoarea ​numerica decodata
-  * `bits` ​– numărul ​de biți+  * `bits` ​- numarul ​de biti
-  * `protocol` ​– protocolul detectat de RCSwitch; +  * `protocol` ​protocolul detectat de RCSwitch; 
-  * `delayUs` ​– lungimea pulsului.+  * `delayUs` ​lungimea pulsului.
  
-Această ​reprezentare este mult mai compactă decât ​raw pulse capture. Un cod RF poate fi salvat ​în câțiva ​bytes, ​în timp ce varianta raw are nevoie de un buffer de durate.+Aceasta ​reprezentare este mult mai compacta decat raw pulse capture. Un cod RF poate fi salvat ​in cativa ​bytes, ​in timp ce varianta raw are nevoie de un buffer de durate.
  
 === Salvarea RF pe SD === === Salvarea RF pe SD ===
  
-În firmware-ul RF, codurile decodate pot fi salvate pe card MicroSD ​în fișiere ​separate, similar cu salvarea UID-urilor RFID. Există ​un fișier ​index `RFIDX.TXT`,​ iar fiecare cod RF este salvat ​într-un fișier ​`.RFC`.+In firmware-ul RF, codurile decodate pot fi salvate pe card MicroSD ​in fisiere ​separate, similar cu salvarea UID-urilor RFID. Exista ​un fisier ​index `RFIDX.TXT`,​ iar fiecare cod RF este salvat ​intr-un fisier ​`.RFC`.
  
-La selectarea unui fișier ​din meniul **Saved RF**, codul este încărcat în RAM și poate fi retransmis prin **Emit Last**.+La selectarea unui fisier ​din meniul **Saved RF**, codul este incarcat in RAM si poate fi retransmis prin **Emit Last**.
  
-=== Limitări ​RF ===+=== Limitari ​RF ===
  
-Deși firmware-ul RF este mai eficient ​și mai bine structurat ​decât ​captura raw, rezultatele practice nu au fost perfecte. Uneori receptorul produce zgomot ​și RCSwitch nu decodează ​nimic valid. Alteori semnalul telecomenzii nu este compatibil cu protocoalele suportate. Astfel, partea RF rămâne ​cea mai instabilă ​parte a proiectului.+Desi firmware-ul RF este mai eficient ​si mai bine structurat ​decat captura raw, rezultatele practice nu au fost perfecte. Uneori receptorul produce zgomot ​si RCSwitch nu decodeaza ​nimic valid. Alteori semnalul telecomenzii nu este compatibil cu protocoalele suportate. Astfel, partea RF ramane ​cea mai instabila ​parte a proiectului.
  
 ==== Folosirea conceptelor din laboratoare ==== ==== Folosirea conceptelor din laboratoare ====
  
-Proiectul ​folosește ​mai multe concepte ​studiate în laboratoarele de Proiectarea cu Microprocesoare:​+Proiectul ​foloseste ​mai multe concepte ​din laboratoarele de Proiectarea cu Microprocesoare. Am incercat sa le aplic practic, nu doar separat, ci intr-un sistem in care toate modulele trebuie sa functioneze impreuna:
  
-  * **GPIO** – configurarea ​și folosirea ​pinilor digitali pentru LED RGB, RF TX, chip select-uri SPI și semnale de control. +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2024|Laboratorul 0 - GPIO]] - configurarea pinilor digitali pentru LED RGB, RF TX, chip select-uri SPI si semnale de control. 
-  * **Întreruperi** – folosirea pinului D2 / INT0 pentru ​recepția ​RF raw și pentru ​recepția ​RCSwitch. +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab1-2023|Laboratorul 1 - UART]] - comunicatia cu ESP-01 prin SoftwareSerial si comenzi AT. 
-  * **PWM / Timere** – controlul LED-ului RGB cu `analogWrite()` pe pinii D3, D5 și D6. +  ​[[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2023|Laboratorul 2 - Intreruperi]] - folosirea pinului D2 / INT0 pentru ​receptia ​RF raw si pentru ​receptia ​RCSwitch. 
-  * **SPI** – comunicația ​cu OLED-ul ​și cardul MicroSD. +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024|Laboratorul 3 - Timere ​si PWM]] - controlul LED-ului RGB cu `analogWrite()` pe pinii D3, D5 si D6. 
-  * **I2C TWI** – comunicația ​cu PCF8574 ​și PN532 pe A4/A5+  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5-2023-2024|Laboratorul 5 - SPI]] - comunicatia ​cu OLED-ul ​si cardul MicroSD ​pe aceeasi magistrala SPI, cu CS-uri separate
-  * **UART / SoftwareSerial** – comunicația cu ESP-01 prin comenzi AT. +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024|Laboratorul 6 - I2C]] - comunicatia ​cu PCF8574 ​si PN532 pe A4/A5.
-  * **Sisteme de fișiere pe SD** – salvarea și citirea persistentă a UID-urilor RFID, scanărilor WiFi și codurilor RF. +
-  * **Mașină de stări** – meniul principal și submeniurile sunt gestionate prin stări software. +
-  * **Optimizare de memorie** – folosirea PROGMEM, U8x8 fără framebuffer,​ fișiere index și separarea proiectului în două firmware-uri.+
  
-==== Optimizări importante ====+Pe langa laboratoarele propriu-zise,​ am folosit si concepte de organizare software: masina de stari pentru meniuri, fisiere index pe SD, separarea proiectului in doua firmware-uri si optimizarea memoriei pentru ATmega328P.
  
-Pentru a rula pe Arduino UNO, au fost necesare mai multe optimizări+==== Optimizari importante ==== 
-  * folosirea U8x8 în loc de un framebuffer complet pentru OLED; + 
-  * salvarea ​scanărilor ​WiFi direct pe SD, nu în RAM; +Pentru a rula pe Arduino UNO, au fost necesare mai multe optimizari
-  * folosirea de stringuri ​în PROGMEM; +  * folosirea U8x8 in loc de un framebuffer complet pentru OLED; 
-  * implementare ​minimală ​PN532;+  * salvarea ​scanarilor ​WiFi direct pe SD, nu in RAM; 
 +  * folosirea de stringuri ​in PROGMEM; 
 +  * implementare ​minimala ​PN532;
   * limitarea bufferelor locale;   * limitarea bufferelor locale;
-  * dezactivarea Serial debug în build-ul final; +  * dezactivarea Serial debug in build-ul final; 
-  * modularizarea ​în două firmware-uri separate.+  * modularizarea ​in doua firmware-uri separate.
  
 Fara aceste modularizari proiectul ar fi fost prea mare pentru ATmega328P. In momentul de fata, firmware-ul main atinge 99.5% din memoria flash. Fara aceste modularizari proiectul ar fi fost prea mare pentru ATmega328P. In momentul de fata, firmware-ul main atinge 99.5% din memoria flash.
  
-===== Rezultate ​obținute ​=====+===== Rezultate ​obtinute ​=====
  
-În urma implementăriiasamblării și testării ​FlipperOne, s-au obținut următoarele ​rezultate ce confirmă ​atingerea si depasirea obiectivelor initial propuse: ​+In urma implementariiasamblarii si testarii ​FlipperOne, s-au obtinut urmatoarele ​rezultate ce confirma ​atingerea si depasirea obiectivelor initial propuse: ​
   - RFID:   - RFID:
-    * PN532 este inițializat ​corect pe I2C;+    * PN532 este initializat ​corect pe I2C;
     * cardurile/​tag-urile ISO14443A sunt detectate;     * cardurile/​tag-urile ISO14443A sunt detectate;
-    * UID-ul este afișat ​corect pe OLED;+    * UID-ul este afisat ​corect pe OLED;
     * UID-ul poate fi salvat pe MicroSD;     * UID-ul poate fi salvat pe MicroSD;
-    * fișierele ​salvate pot fi regăsite ​prin index.+    * fisierele ​salvate pot fi regasite ​prin index.
   - Wi-Fi, a depasit asteptarile:​   - Wi-Fi, a depasit asteptarile:​
-    * ESP-01 ​răspunde ​la comenzile AT, scaneaza retelele din jur si le salveaza automat in `WIFIDB.TXT`;​ +    * ESP-01 ​raspunde ​la comenzile AT, scaneaza retelele din jur si le salveaza automat in `WIFIDB.TXT`;​ 
-    * lista rețelelor ​poate fi afișată ​pe OLED; +    * lista retelelor ​poate fi afisata ​pe OLED; 
-    * detaliile ​fiecărei rețele ​pot fi analizate;​ +    * detaliile ​fiecarei retele ​pot fi analizate;​ 
-    * analiza include RSSI, securitate, canal, MAC/BSSID, WPS și observații ​simple.+    * analiza include RSSI, securitate, canal, MAC/BSSID, WPS si observatii ​simple.
   - RF raw, foarte sensibil la zgomot:   - RF raw, foarte sensibil la zgomot:
-    * Captura RF raw este instabilă în practică. Uneori receptorul ​captează ​foarte mult zgomot, alteori semnalul util nu poate fi separat clar de zgomot. ​Această problemă ​vine atât din natura receptorului RF, cât și din limitările ​Arduino UNO. +    * Captura RF raw este instabila in practica. Uneori receptorul ​capteaza ​foarte mult zgomot, alteori semnalul util nu poate fi separat clar de zgomot. ​Aceasta problema ​vine atat din natura receptorului RF, cat si din limitarile ​Arduino UNO. 
-    * Raw RF rămâne ​insa interesant ca experiment, deoarece ​arată ​cum pot fi măsurate tranzițiile ​folosind ​întreruperi, dar nu este suficient de stabil pentru o demonstrație sigură ​de tip „capturează ​telecomanda ​și retransmite.+    * Raw RF ramane ​insa interesant ca experiment, deoarece ​arata cum pot fi masurate tranzitiile ​folosind ​intreruperi, dar nu este suficient de stabil pentru o demonstratie sigura ​de tip "​captureaza ​telecomanda ​si retransmite".
   - RF cu RCSwitch:   - RF cu RCSwitch:
-      * Firmware-ul RF cu RCSwitch este mai curat și mai eficient, dar nu rezolvă ​complet problema. ​Dacă telecomanda ​folosește ​un protocol suportat ​și semnalul este curat, codul poate fi decodat ​și salvat. ​Dacă semnalul este zgomotos sau protocolul nu este compatibil, nu apare nicio captură validă+      * Firmware-ul RF cu RCSwitch este mai curat si mai eficient, dar nu rezolva ​complet problema. ​Daca telecomanda ​foloseste ​un protocol suportat ​si semnalul este curat, codul poate fi decodat ​si salvat. ​Daca semnalul este zgomotos sau protocolul nu este compatibil, nu apare nicio captura valida
-      * Totuși, modulul RF dedicat ar trebui sa aiba următoarele funcționalități funcționalecaptură ​RCSwitch atunci ​când semnalul este compatibil, ​afișarea ​codului decodat, retransmiterea codului decodat, salvarea codului pe SD în fișiere ​`.RFC`, listarea ​și încărcarea ​codurilor RF salvate.+      * Totusi, modulul RF dedicat ar trebui sa aiba urmatoarele functionalitati functionalecaptura ​RCSwitch atunci ​cand semnalul este compatibil, ​afisarea ​codului decodat, retransmiterea codului decodat, salvarea codului pe SD in fisiere ​`.RFC`, listarea ​si incarcarea ​codurilor RF salvate.
  
-==== Probleme ​întâlnite ​====+==== Probleme ​intalnite ​====
  
 Cele mai mari probleme au fost: Cele mai mari probleme au fost:
-  * zgomotul RF produs de receptor ​în lipsa unui semnal util+  * zgomotul RF produs de receptor ​in lipsa unui semnal util; 
-  * bufferul mic disponibil pentru raw RF; +  * memoria Flash foarte ​limitata
-  * incompatibilitatea unor telecomenzi cu RCSwitch+  * memoria RAM limitata, mai ales cand SD, SoftwareSerial ​si OLED sunt folosite simultan; 
-  * memoria Flash foarte ​limitată+  * conflictele ​intalnite pe parcursul motanrii ​pe SPI intre OLED si MicroSD;
-  * memoria RAM limitată, mai ales când SD, SoftwareSerial ​și OLED sunt folosite simultan; +
-  * conflictele ​potențiale ​pe SPI între ​OLED și MicroSD, rezolvate prin control atent al pinilor CS.+
  
 ===== Concluzii ===== ===== Concluzii =====
  
-Proiectul a ieșit ​mai bine decât mă așteptam, mai ales având în vedere ​numărul ​mare de module conectate la un Arduino UNO. Cele mai stabile ​și reușite părți ​sunt RFID-ul ​și WiFi-ul: UID-urile sunt citite ​și salvate corect, iar scanarea WiFi împreună ​cu analiza ​rețelelor funcționează ​foarte bine.+Proiectul a iesit mai bine decat ma asteptam, mai ales avand in vedere ​numarul ​mare de module conectate la un Arduino UNO. Cele mai stabile ​si reusite parti sunt RFID-ul ​si WiFi-ul: UID-urile sunt citite ​si salvate corect, iar scanarea WiFi impreuna ​cu analiza ​retelelor functioneaza ​foarte bine. 
 + 
 +Partea RF a fost cea mai dificila. Captura raw este foarte expusa la noise, iar varianta cu RCSwitch, desi mult mai eficienta, depinde de protocoalele suportate si de calitatea semnalului. Din acest motiv, RF-ul ramane o functionalitate partiala si experimentala in proiect. 
 +Pe langa RF, resursele foarte limitate ale lui ATmega328P au adus mai multe **constrangerile de memorie** greu de rezolvat, combinatia dintre OLED, SD, ESP, PN532, RF Raw/​RCSwitch a fortat optimizari serioase. In final, modularizarea in doua firmware-uri separate a fost solutia corecta: firmware-ul principal pentru RFID/​WiFi/​SD/​RFraw si firmware-ul RF pentru captura/​decodare/​salvare RF. 
 + 
 +===== Link-uri si Resurse ===== 
 + 
 +Pentru documentarea si realizarea acestui proiect, am consultat urmatoarele resurse tehnice si bibliografii:​ 
 + 
 +==== Cod ==== 
 + 
 +  * **GitHub:** [[https://​github.com/​George0Simion/​FlipperOne|FlipperOne]] 
 + 
 +==== Laboratoare PM ==== 
 + 
 +Resurse utilizate pentru implementarea interfetelor,​ perifericelor si comunicatiilor cu modulele externe:
  
-Partea RF a fost cea mai dificilăCaptura raw este foarte expusă la noise, iar varianta cu RCSwitch, deși mult mai eficientă, depinde de protocoalele suportate și de calitatea semnaluluiDin acest motiv, RF-ul rămâne o funcționalitate parțială și experimentală în proiect.+  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2024|Lab 0 - GPIO]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab1-2023|Lab 1 - UART]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2023|Lab 2 - Intreruperi]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024|Lab 3 - Timere / PWM]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5-2023-2024|Lab 5 - SPI]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024|Lab 6 - I2C / TWI]]
  
-Cea mai importantă lecție a fost legată de **constrângerile de memorie**. ATmega328P are resurse foarte limitate, iar combinația dintre OLED, SD, ESP, PN532, RF și RCSwitch a forțat optimizări serioase. În final, modularizarea în două firmware-uri separate a fost soluția corectă: firmware-ul principal pentru RFID/​WiFi/​SD și firmware-ul RF pentru captură/​decodare/​salvare RF.+==== Datasheet-uri si Documentatii Componente ====
  
-Chiar dacă RF-ul nu este perfect, proiectul demonstrează integrarea unui număr mare de periferice și concepte embedded într-un singur montaj. Din punct de vedere educațional,​ proiectul și-atins scopulam lucrat cu GPIO, întreruperi,​ PWM, SPI, I2C, UART software, card SD, management de memorie și proiectare software modulară.+Documentatia tehnica oficiala ​componentelor si bibliotecilor utilizate:
  
-===== Bibliografie ​Resurse =====+  * **Microcontroler:​** [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]] 
 +  * **Arduino UNO:** [[https://​docs.arduino.cc/​hardware/​uno-rev3/​|Arduino UNO Rev3 Documentation]] 
 +  * **PlatformIO:​** [[https://​docs.platformio.org/​|PlatformIO Documentation]] 
 +  * **OLED SH1106 / U8g2-U8x8:​** [[https://​github.com/​olikraus/​u8g2|U8g2 / U8x8 Library]] 
 +  * **RCSwitch:​** [[https://​github.com/​sui77/​rc-switch|RCSwitch Library]] 
 +  * **ESP8266 / ESP-01 AT Commands:** [[https://​www.espressif.com/​sites/​default/​files/​4a-esp8266_at_instruction_set_en_v1.5.4_0.pdf|ESP8266 AT Instruction Set]] 
 +  * **PN532 RFID/NFC:** [[https://​www.nxp.com/​docs/​en/​user-guide/​141520.pdf|PN532 NXP User Manual]] 
 +  * **Arduino SD Library:** [[https://​docs.arduino.cc/​libraries/​sd/​|SD Library Documentation]]
  
-  * Documentație Arduino UNO ATmega328P +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>
-  * Documentație PlatformIO +
-  * Documentație U8g2 U8x8 +
-  * Documentație RCSwitch +
-  * Documentație ESP8266 AT Commands +
-  * Documentație PN532 +
-  * Documentație SD library Arduino +
-  * Laboratoarele de Proiectarea cu Microprocesoare:​ GPIO, întreruperi,​ PWM/timere, SPI, I2C, UART+
pm/prj2026/atoader/george.simion2005.1779631587.txt.gz · Last modified: 2026/05/24 17:06 by george.simion2005
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