This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:george.simion2005 [2026/05/22 15:11] 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ă a dispozitivului Flipper Zero**, construită în jurul unei plăci Arduino UNO cu microcontroller ATmega328P. Dispozitivul este gândit ca un instrument portabil de testare și analiză pentru comunicații wireless simple, module RFID/NFC și rețele WiFi din apropiere. | + | Proiectul **Flipper One** reprezinta o mini-replica educationala, realizata pe Arduino UNO, inspirata conceptual de dispozitivul de tip multi-tool folosit pentru pen-testing-ul comunicatiilor simple RF, RFID/NFC si WiFi. |
| - | Scopul proiectului este să demonstreze, la scară redusă și cu componente accesibile, funcționalități întâlnite în dispozitive de tip multi-tool: captură și retransmitere de semnale RF, citire RFID, scanare WiFi, salvare pe card MicroSD și interacțiune printr-un ecran OLED. | + | 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. |
| - | Spre deosebire de un dispozitiv comercial, Flipper One este realizat pe breadboard, folosind module separate și conexiuni explicite, ceea ce îl face util pentru înțelegerea modului în care comunică între ele componentele hardware. | + | Produsul final a fost impartit in doua firmware-uri separate: |
| + | * **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 si salvare pe card MicroSD. | ||
| - | Funcționalități principale: | + | 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. |
| - | * capturarea semnalelor RF 433 MHz de la telecomenzi simple | + | |
| - | * retransmiterea semnalelor RF capturate | + | |
| - | * citirea UID-urilor de pe carduri/tag-uri RFID/NFC folosind PN532 | + | |
| - | * salvarea semnalelor RF și a UID-urilor RFID pe card MicroSD | + | |
| - | * scanarea rețelelor WiFi din jur folosind ESP-01 / ESP8266 | + | |
| - | * afișarea stării sistemului pe ecran OLED | + | |
| - | * control prin 4 butoane conectate prin expander I2C PCF8574 | + | |
| - | * feedback vizual prin LED RGB | + | |
| - | În stadiul actual, partea RF, RFID, OLED, butoane, LED RGB, ESP și MicroSD este funcțională la nivel de testare. Pentru modulul ESP-01, capturarea/listarea rețelelor WiFi din jur funcționează prin comenzi AT. | + | Functionalitati principale implementate: |
| + | * citirea UID-urilor RFID folosind modulul PN532; | ||
| + | * salvarea UID-urilor RFID pe card MicroSD; | ||
| + | * scanarea retelelor WiFi din apropiere folosind ESP-01 / ESP8266; | ||
| + | * salvarea scanarilor WiFi pe card MicroSD; | ||
| + | * analiza retelelor WiFi detectate: RSSI, securitate, canal, WPS, MAC/BSSID si observatii simple; | ||
| + | * capturarea raw a semnalelor RF 433 MHz si retransmiterea lor in firmware-ul principal; | ||
| + | * capturarea/decodarea RF cu RCSwitch in firmware-ul RF dedicat; | ||
| + | * salvarea codurilor RF decodate in fisiere separate pe cardul MicroSD; | ||
| + | * interfata utilizator pe OLED 128x64; | ||
| + | * control prin 4 butoane conectate prin PCF8574; | ||
| + | * feedback vizual prin LED RGB. | ||
| - | Work in progress: | + | Din punct de vedere al rezultatului final, modulul RFID detecteaza cardurile si salveaza UID-urile pe SD, modulul WiFi realizeaza scanari, salveaza 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. |
| - | * adăugarea unei analize mai avansate pentru rețelele WiFi detectate, de exemplu afișarea unui grafic simplu cu puterea semnalului sau distribuția pe canale; | + | |
| - | * adăugarea posibilității de conectare la o rețea WiFi cunoscută. | + | |
| - | **Laboratoare folosite**: GPIO (Lab 0), Întreruperi (Lab 2), Timere/PWM (Lab 3), SPI (Lab 5), plus comunicatie I2C și UART software. | + | ===== Descriere generala ===== |
| - | ===== Descriere generală ===== | + | 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. |
| - | Sistemul este organizat în jurul unei plăci **Arduino UNO R3 / ATmega328P**, care coordonează toate modulele externe. Interacțiunea cu utilizatorul se face printr-un **ecran OLED SPI**, un set de **4 butoane** conectate prin PCF8574 și un **LED RGB** folosit pentru feedback vizual. | + | Interactiunea cu utilizatorul se face prin: |
| + | * un ecran **OLED SH1106 128x64 SPI**, folosit in mod text prin biblioteca U8x8; | ||
| + | * 4 butoane conectate la un **PCF8574** pe I2C; | ||
| + | * un **LED RGB** conectat la pini PWM pentru feedback vizual. | ||
| - | Pentru economisirea pinilor Arduino, butoanele sunt conectate la un **expander I2C PCF8574**, astfel încât toate cele 4 intrări de control folosesc doar magistrala I2C formată din A4/SDA și A5/SCL. | + | 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 RF este realizată cu un receptor și un emițător de **433 MHz**. Receptorul este conectat la pinul D2, care permite folosirea întreruperii externe INT0 pentru măsurarea precisă a tranzițiilor semnalului. Semnalul capturat este memorat ca o listă de durate ale pulsurilor, apoi poate fi retransmis prin emițătorul conectat la D8. | + | Partea de RF este realizata cu doua module de 433 MHz: |
| + | * **SRX887** - receptor, conectat pe D2, pin care suporta intrerupere externa INT0; | ||
| + | * **STX882** - emitator, conectat pe D8. | ||
| - | Modulul **PN532 RFID/NFC** este conectat pe I2C, împreună cu PCF8574. Această variantă a fost aleasă pentru stabilitate, deoarece separă complet RFID-ul de magistrala SPI folosită de OLED și MicroSD. PN532 este folosit pentru citirea UID-urilor cardurilor/tag-urilor compatibile ISO14443A. | + | 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,. |
| + | 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 decodata, numarul 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 **ESP-01 / ESP8266** este folosit pentru scanarea rețelelor WiFi din jur. Acesta comunică cu Arduino prin SoftwareSerial: ESP transmite către Arduino pe D4, iar Arduino transmite către ESP pe D7. ESP-ul este alimentat separat la 3.3V prin AMS1117. | + | 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 **MicroSD** este conectat pe magistrala SPI și este folosit pentru stocare persistentă. În implementarea curentă, semnalele RF capturate și UID-urile RFID citite pot fi salvate pe card, pentru a putea fi păstrate după resetarea dispozitivului. | + | 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. |
| - | Logica generală de funcționare: | + | Modulul **MicroSD** este conectat pe SPI si este folosit pentru stocarea persistenta a datelor: |
| - | - **Idle State**: sistemul așteaptă apăsări de buton și afișează starea curentă pe OLED. | + | * UID-uri RFID in fisiere `.UID`, indexate in `UIDIDX.TXT`; |
| - | - **RF Capture**: receptorul RF ascultă semnalul și salvează duratele pulsurilor detectate. | + | * scanari WiFi in `WIFIDB.TXT`; |
| - | - **RF Replay**: semnalul RF salvat este retransmis prin emițătorul de 433 MHz. | + | * coduri RF decodate in firmware-ul RF, in fisiere `.RFC`, indexate in `RFIDX.TXT`. |
| - | - **RFID Scan**: PN532 citește UID-ul unui card/tag RFID și îl afișează pe OLED/Serial. | + | |
| - | - **WiFi Scan**: ESP-01 scanează rețelele WiFi disponibile și transmite lista către Arduino. | + | |
| - | - **MicroSD Save**: datele RF și RFID pot fi salvate pe cardul MicroSD. | + | |
| - | - **LED Feedback**: LED-ul RGB indică diferite stări sau moduri de test. | + | |
| - | {{:pm:prj2026:atoader:flipperone_blockdiagram_george.simion2005.png?700|Schema bloc Flipper One}} | + | Logica generala a dispozitivului este bazata pe o masina de stari: |
| + | * **Main Menu** - utilizatorul alege modul de lucru; | ||
| + | * **RF Capture / RF Emit** - captura si retransmitere RF; | ||
| + | * **RFID Scan / Save UID** - citire si salvare UID; | ||
| + | * **WiFi Scan / View Networks** - scanare si afisare retele WiFi; | ||
| + | * **SD Browser** - vizualizarea fisierelor salvate; | ||
| + | * **Status** - afisarea starii sistemului. | ||
| + | {{:pm:prj2026:atoader:flipperone_blockdiagram_george.simion2005.png?600|}} | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | ==== Stadiul actual al implementării hardware ==== | + | 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. |
| - | În stadiul actual, proiectul este realizat pe un breadboard **SYB-120**, având ca unitate centrală un **Arduino UNO R3 / ATmega328P**. Pe montaj sunt conectate modulele principale pentru interacțiune și comunicație: display OLED SPI, receptor RF 433 MHz, emițător RF 433 MHz, LED RGB, expander PCF8574 cu 4 butoane, modul PN532 RFID/NFC, modul ESP-01 și cititor MicroSD. | + | Montajul este realizat pe breadboard si include urmatoarele module: |
| + | * Arduino UNO R3 / ATmega328P; | ||
| + | * OLED SH1106 128x64 pe SPI; | ||
| + | * receptor RF SRX887 433 MHz; | ||
| + | * emitator RF STX882 433 MHz; | ||
| + | * modul PN532 RFID/NFC pe I2C; | ||
| + | * expander PCF8574 pentru butoane pe I2C; | ||
| + | * 4 butoane tactile; | ||
| + | * LED RGB; | ||
| + | * ESP-01 / ESP8266 pentru scanare WiFi; | ||
| + | * regulator AMS1117 3.3V pentru ESP-01; | ||
| + | * modul MicroSD pe SPI. | ||
| - | Partea de alimentare este organizată pe magistrale de breadboard: | + | Alimentarea este impartita astfel: |
| - | * **5V** pentru modulele compatibile cu 5V: OLED, PN532, PCF8574, module RF, MicroSD; | + | * **5V** pentru Arduino, OLED, PN532, PCF8574, module RF si MicroSD; |
| - | * **3.3V** pentru ESP-01, generat cu AMS1117; | + | * **3.3V** pentru ESP-01, generat prin AMS1117; |
| * **GND comun** pentru toate modulele. | * **GND comun** pentru toate modulele. | ||
| - | Modulul PN532 este conectat pe **I2C**, nu pe SPI, pentru a evita conflictele cu OLED-ul și MicroSD-ul. Astfel, magistrala SPI este folosită de OLED și MicroSD, iar magistrala I2C este folosită de PCF8574 și PN532. | + | 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. |
| - | Modulul ESP-01 este conectat prin UART software. În montajul curent, Arduino transmite direct către RX-ul ESP-ului pe D7, iar ESP transmite către Arduino pe D4. ESP-ul rămâne alimentat exclusiv la 3.3V prin AMS1117. | + | {{:pm:prj2026:atoader:flipper1_real.png?650}} |
| - | MicroSD-ul este inclus funcțional în proiect și este folosit pentru salvarea datelor capturate: semnale RF și UID-uri RFID. | + | {{:pm:prj2026:atoader:schema_flipper1.png?650}} |
| - | {{:pm:prj2026:atoader:fliiper1_real.jpeg?900|Schema bloc hardware reală}} | + | ==== Componente folosite ==== |
| - | Pentru verificarea conexiunilor punct-cu-punct, am inclus și varianta detaliată, cu nodurile/rândurile de breadboard marcate explicit: | + | ^ Componenta ^ Rol in proiect ^ Interfata / observatii ^ |
| + | | **Arduino UNO R3 / ATmega328P** | Unitatea centrala a sistemului | GPIO, PWM, SPI, I2C, SoftwareSerial | | ||
| + | | **Breadboard SYB-120** | Suport pentru prototipare si distributie alimentare | 5V, 3.3V, GND | | ||
| + | | **OLED 1.3'' SH1106 128x64** | Afisarea meniurilor si a rezultatelor | SPI hardware, U8x8 fara framebuffer | | ||
| + | | **SRX887 433 MHz** | Receptie RF | DATA pe D2 / INT0, CS la GND in modul activ | | ||
| + | | **STX882 433 MHz** | Transmisie RF | DATA pe D8 | | ||
| + | | **LED RGB KY-016** | Feedback vizual | PWM pe D3, D5, D6 | | ||
| + | | **PCF8574** | Extinderea pinilor pentru butoane | I2C pe A4/A5 | | ||
| + | | **4 butoane tactile** | Navigare in meniu | P0-P3 pe PCF8574 | | ||
| + | | **PN532 RFID/NFC** | Citire UID carduri/tag-uri | I2C, reset pe A1 | | ||
| + | | **ESP-01 / ESP8266** | Scanare retele WiFi | SoftwareSerial D4/D7, alimentare 3.3V | | ||
| + | | **AMS1117 3.3V** | Regulator pentru ESP-01 | VIN 5V, VOUT 3.3V | | ||
| + | | **Modul MicroSD** | Stocare persistenta | SPI, CS pe A3 | | ||
| - | {{:pm:prj2026:atoader:schema_flipper1.png?900|Schema hardware detaliată a montajului}} | + | ==== Maparea pinilor Arduino ==== |
| - | ==== Componente folosite și rolul lor în proiect ==== | + | ^ Pin Arduino ^ Conectat la ^ Justificare ^ |
| + | | **5V** | OLED, PN532, PCF8574, RF, MicroSD, AMS1117 VIN | Alimentare module compatibile 5V | | ||
| + | | **GND** | Toate modulele | Referinta comuna | | ||
| + | | **D2** | DATA receptor SRX887 | Pin cu intrerupere externa INT0 | | ||
| + | | **D3** | LED RGB - R | PWM | | ||
| + | | **D4** | ESP-01 TX catre Arduino | SoftwareSerial RX | | ||
| + | | **D5** | LED RGB - G | PWM | | ||
| + | | **D6** | LED RGB - B | PWM | | ||
| + | | **D7** | ESP-01 RX de la Arduino | SoftwareSerial TX | | ||
| + | | **D8** | DATA emitator STX882 | Iesire digitala pentru transmisie RF | | ||
| + | | **D9** | RST OLED | Reset display | | ||
| + | | **D10** | CS OLED | Chip select SPI OLED | | ||
| + | | **D11** | MOSI SPI | Date catre OLED si MicroSD | | ||
| + | | **D12** | MISO SPI | Date de la MicroSD | | ||
| + | | **D13** | SCK SPI | Clock SPI | | ||
| + | | **A0** | DC OLED | Selectare comanda/date OLED | | ||
| + | | **A1** | RESET PN532 | Reset hardware PN532 | | ||
| + | | **A2** | IRQ PN532 | Pin rezervat pentru IRQ PN532 | | ||
| + | | **A3** | CS MicroSD | Chip select SD | | ||
| + | | **A4** | SDA PCF8574 + PN532 | Magistrala I2C | | ||
| + | | **A5** | SCL PCF8574 + PN532 | Magistrala I2C | | ||
| - | ^ Componentă ^ Rol în proiect ^ Interfață / observații ^ | + | ==== Conexiuni ==== |
| - | | **Arduino UNO R3 / ATmega328P** | Microcontroller principal; coordonează modulele și rulează logica de test/captură | GPIO, PWM, SPI, I2C, UART software | | + | |
| - | | **Breadboard SYB-120** | Suport de prototipare și distribuție pentru 5V, 3.3V și GND | Conexiuni pe rânduri/coloane | | + | |
| - | | **OLED 1.3'' 128x64 SPI** | Afișează meniul, starea sistemului și datele citite/capturate | SPI hardware + pini separați pentru RES, DC, CS | | + | |
| - | | **Receptor RF 433 MHz** | Primește semnale wireless de la telecomenzi simple | DATA pe D2, folosit ca pin de întrerupere INT0 | | + | |
| - | | **Emițător RF 433 MHz** | Retransmite semnalele RF capturate | DATA pe D8 | | + | |
| - | | **LED RGB KY-016** | Indicator vizual pentru starea dispozitivului | PWM pe D3, D5, D6 | | + | |
| - | | **PCF8574** | Extinde numărul de pini disponibili pentru butoane | I2C pe A4/A5 | | + | |
| - | | **4 butoane tactile** | Controlul funcțiilor principale: RF, RFID, LED, ESP | Intrări P0-P3 pe PCF8574 | | + | |
| - | | **PN532 RFID/NFC** | Citește UID-uri de carduri/tag-uri RFID/NFC | I2C pe A4/A5, IRQ pe A2, RESET pe A1 | | + | |
| - | | **ESP-01 / ESP8266** | Scanare/captură listă rețele WiFi din apropiere | UART software: D4 primește TX ESP, D7 transmite către RX ESP | | + | |
| - | | **AMS1117 3.3V** | Alimentare stabilă pentru ESP-01 | VIN din 5V, VOUT pe magistrala de 3.3V | | + | |
| - | | **Cititor MicroSD** | Stocare persistentă pentru RF și RFID | SPI hardware, CS pe A3 | | + | |
| - | ==== Maparea pinilor Arduino și justificare ==== | + | === OLED SPI === |
| - | ^ Pin Arduino ^ Conectat la ^ De ce este folosit aici ^ | + | ^ Pin OLED ^ Arduino ^ |
| - | | **3.3V** | Neutilizat ca sursă principală pentru ESP | ESP-ul este alimentat din AMS1117 pentru curent mai stabil | | + | | GND | GND | |
| - | | **5V** | Magistrala de 5V: OLED, PN532, RF 433 MHz, PCF8574, MicroSD, VIN AMS1117 | Alimentează modulele compatibile cu 5V și intrarea regulatorului AMS1117 | | + | | VCC | 5V | |
| - | | **GND** | Magistrala comună GND | Toate modulele trebuie să aibă aceeași referință electrică | | + | | SCK | D13 | |
| - | | **D2** | DATA receptor RF 433 MHz | D2 este INT0, util pentru capturarea tranzițiilor RF | | + | | SDA / MOSI | D11 | |
| - | | **D3** | LED RGB - canal R | Pin PWM pentru controlul roșului | | + | | RES | D9 | |
| - | | **D4** | ESP-01 TX către Arduino | SoftwareSerial RX; Arduino primește date de la ESP | | + | | DC | A0 | |
| - | | **D5** | LED RGB - canal G | Pin PWM pentru controlul verdelui | | + | | CS | D10 | |
| - | | **D6** | LED RGB - canal B | Pin PWM pentru controlul albastrului | | + | |
| - | | **D7** | ESP-01 RX direct | SoftwareSerial TX; Arduino trimite comenzi AT către ESP | | + | |
| - | | **D8** | DATA emițător RF 433 MHz | Pin digital folosit pentru retransmiterea semnalului RF | | + | |
| - | | **D9** | RES OLED | Reset hardware pentru display | | + | |
| - | | **D10** | CS OLED | Selectează OLED-ul pe magistrala SPI | | + | |
| - | | **D11** | MOSI SPI | Linie comună pentru OLED și MicroSD | | + | |
| - | | **D12** | MISO SPI | Linie folosită de MicroSD | | + | |
| - | | **D13** | SCK SPI | Clock SPI pentru OLED și MicroSD | | + | |
| - | | **A0** | DC OLED | Selectare comandă/date pentru OLED | | + | |
| - | | **A1** | RESET PN532 | Reset hardware pentru modulul RFID/NFC | | + | |
| - | | **A2** | IRQ / R0 PN532 | Linie IRQ pentru PN532 în modul I2C | | + | |
| - | | **A3** | CS MicroSD | Chip Select separat pentru cardul SD | | + | |
| - | | **A4** | SDA comun: PCF8574 + PN532 | Linia hardware I2C SDA | | + | |
| - | | **A5** | SCL comun: PCF8574 + PN532 | Linia hardware I2C SCL | | + | |
| - | ==== Conexiuni fizice pe breadboard ==== | + | === MicroSD === |
| - | === Alimentare și magistrale === | + | ^ Pin MicroSD ^ Arduino ^ |
| + | | VCC | 5V | | ||
| + | | GND | GND | | ||
| + | | SCK | D13 | | ||
| + | | MOSI | D11 | | ||
| + | | MISO | D12 | | ||
| + | | CS | A3 | | ||
| - | ^ Zonă breadboard ^ Conexiune ^ Explicație ^ | + | === PN532 RFID/NFC === |
| - | | **Coloana/rândul GND comun** | GND | Masă comună pentru toate modulele | | + | |
| - | | **Rând 59** | 5V | Distribuție 5V pentru modulele compatibile | | + | |
| - | | **Rând 49** | 3.3V | Distribuție 3.3V generată de AMS1117 | | + | |
| - | | **AMS1117 VIN** | 5V | Intrarea regulatorului 3.3V | | + | |
| - | | **AMS1117 GND** | GND comun | Masă regulator | | + | |
| - | | **AMS1117 VOUT** | 3.3V / rând 49 | Alimentare ESP-01 | | + | |
| - | === Expander PCF8574 și butoane === | + | ^ Pin PN532 ^ Arduino ^ |
| + | | VCC / 5V | 5V | | ||
| + | | GND | GND | | ||
| + | | SDA | A4 | | ||
| + | | SCL | A5 | | ||
| + | | RST | A1 | | ||
| + | | IRQ | A2 | | ||
| - | ^ Conexiune ^ Explicație ^ | + | === PCF8574 si butoane === |
| - | | **VCC PCF8574 -> 5V** | Expander alimentat la 5V | | + | |
| - | | **GND PCF8574 -> GND** | Masă comună | | + | |
| - | | **SDA PCF8574 -> A4** | Date I2C | | + | |
| - | | **SCL PCF8574 -> A5** | Clock I2C | | + | |
| - | | **P0 -> buton 1** | Funcție RF capture / replay | | + | |
| - | | **P1 -> buton 2** | Funcție RFID scan | | + | |
| - | | **P2 -> buton 3** | Funcție LED cycle | | + | |
| - | | **P3 -> buton 4** | Funcție ESP WiFi scan | | + | |
| - | | **P4-P7** | Libere momentan | | + | |
| - | === LED RGB === | + | ^ Pin PCF8574 ^ Conexiune ^ |
| + | | VCC | 5V | | ||
| + | | GND | GND | | ||
| + | | SDA | A4 | | ||
| + | | SCL | A5 | | ||
| + | | P0 | Buton UP | | ||
| + | | P1 | Buton DOWN | | ||
| + | | P2 | Buton SELECT | | ||
| + | | P3 | Buton BACK | | ||
| - | ^ Conexiune ^ Explicație ^ | + | === RF 433 MHz === |
| - | | **LED R -> D3** | Canal roșu, PWM | | + | |
| - | | **LED G -> D5** | Canal verde, PWM | | + | |
| - | | **LED B -> D6** | Canal albastru, PWM | | + | |
| - | | **LED GND -> GND** | Catod comun la masă | | + | |
| - | === Module RF 433 MHz === | + | ^ Modul ^ Pin ^ Arduino / conexiune ^ |
| + | | SRX887 | VCC | 5V | | ||
| + | | SRX887 | GND | GND | | ||
| + | | SRX887 | CS | GND pentru activare | | ||
| + | | SRX887 | DATA | D2 / INT0 | | ||
| + | | SRX887 | ANT | Antena 433 MHz | | ||
| + | | STX882 | VCC | 5V | | ||
| + | | STX882 | GND | GND | | ||
| + | | STX882 | DATA | D8 | | ||
| + | | STX882 | ANT | Antena 433 MHz | | ||
| - | ^ Modul ^ Conectat la ^ Explicație ^ | + | === ESP-01 === |
| - | | Receptor 433 MHz GND | GND | Masă receptor | | + | |
| - | | Receptor 433 MHz VCC | 5V | Alimentare receptor | | + | |
| - | | Receptor 433 MHz DATA | D2 | DATA receptor; folosit cu întrerupere externă | | + | |
| - | | Emițător 433 MHz GND | GND | Masă emițător | | + | |
| - | | Emițător 433 MHz VCC | 5V | Alimentare emițător | | + | |
| - | | Emițător 433 MHz DATA | D8 | Semnalul RF retransmis | | + | |
| - | === Magistrala SPI === | + | ^ Pin ESP-01 ^ Conectat la ^ Observatii ^ |
| + | | VCC | 3.3V AMS1117 | ESP-ul nu se alimenteaza direct din 5V | | ||
| + | | GND | GND comun | Masa comuna | | ||
| + | | TX | D4 Arduino | Arduino primeste prin SoftwareSerial | | ||
| + | | RX | D7 Arduino | Arduino trimite comenzi AT | | ||
| + | | CH_PD / EN | 3.3V | Activare modul | | ||
| - | ^ Semnal ^ Pin Arduino ^ Module conectate ^ | + | ===== Software Design ===== |
| - | | **SCK** | D13 | OLED, MicroSD | | + | |
| - | | **MOSI** | D11 | OLED, MicroSD | | + | |
| - | | **MISO** | D12 | MicroSD | | + | |
| - | | **CS OLED** | D10 | Select display OLED | | + | |
| - | | **CS MicroSD** | A3 | Select card SD | | + | |
| - | === OLED SPI === | + | ==== Mediu de dezvoltare ==== |
| - | ^ Pin OLED ^ Conectat la ^ Explicație ^ | + | 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. |
| - | | **GND** | GND | Masă comună | | + | |
| - | | **VCC** | 5V | Alimentare display | | + | |
| - | | **SCK** | D13 | Clock SPI | | + | |
| - | | **SDA / MOSI** | D11 | Date SPI către display | | + | |
| - | | **RES** | D9 | Reset display | | + | |
| - | | **DC** | A0 | Selectare comandă/date | | + | |
| - | | **CS** | D10 | Chip Select OLED | | + | |
| - | === PN532 RFID/NFC pe I2C === | + | Biblioteci folosite: |
| + | * `U8g2 / U8x8` - afisare text pe OLED SH1106 fara framebuffer, pentru economie de RAM; | ||
| + | * `SD` - acces la cardul MicroSD; | ||
| + | * `Wire` - comunicatie I2C cu PCF8574 si PN532; | ||
| + | * `SPI` - comunicatie cu OLED si MicroSD; | ||
| + | * `SoftwareSerial` - comunicatie seriala cu ESP-01; | ||
| + | * `RCSwitch` - folosit doar in firmware-ul RF dedicat. | ||
| - | ^ Pin PN532 ^ Conectat la ^ Explicație ^ | + | Pentru a evita depasirea memoriei Flash, proiectul este impartit in doua environment-uri PlatformIO: |
| - | | **5V** | 5V | Alimentare modul | | + | |
| - | | **GND** | GND | Masă comună | | + | |
| - | | **MO / SDA / TX** | A4 / SDA comun | Date I2C | | + | |
| - | | **NSS / SCL / RX** | A5 / SCL comun | Clock I2C | | + | |
| - | | **R0 / IRQ** | A2 | Linie IRQ | | + | |
| - | | **RST** | A1 | Reset hardware | | + | |
| - | | **SCK** | neconectat | Neutilizat în modul I2C | | + | |
| - | | **M / MISO** | neconectat | Neutilizat în modul I2C | | + | |
| - | Switch-uri PN532: | + | <code ini> |
| - | * **SET0 -> H** | + | [env:main_demo] |
| - | * **SET1 -> L** | + | ; Flipper One Main: RFID + WiFi + SD + raw RF |
| - | * mod de lucru: **I2C** | + | |
| - | === ESP-01 === | + | [env:rf_demo] |
| + | ; Flipper One RF: RF RCSwitch + SD | ||
| + | </code> | ||
| - | Pinii ESP-01 sunt notați cu modulul orientat cu antena/zig-zagul în sus: | + | ==== Motivul modularizarii in doua firmware-uri ==== |
| - | <code> | + | Microcontrollerul ATmega328P are doar 32 KB Flash si 2 KB SRAM. In timpul dezvoltarii, incercarea 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: |
| - | 1 2 3 4 | + | * biblioteca SD; |
| - | 5 6 7 8 | + | * biblioteca RCSwitch; |
| + | * SoftwareSerial pentru ESP; | ||
| + | * driverul PN532; | ||
| + | * meniurile OLED; | ||
| + | * analiza WiFi; | ||
| + | |||
| + | Solutia finala a fost separarea proiectului in doua coduri: | ||
| + | * firmware-ul **main_demo**, pentru functionalitate RFID/WiFi/SD si raw RF; | ||
| + | * firmware-ul **rf_demo**, pentru functionalitate specializata RF cu RCSwitch si salvare pe SD. | ||
| + | |||
| + | ==== Firmware 1: Flipper One Main ==== | ||
| + | |||
| + | Firmware-ul principal si cel mai "product ready" din cele 2: | ||
| + | * captura RF raw; | ||
| + | * retransmitere RF raw; | ||
| + | * scanare RFID; | ||
| + | * salvare UID RFID pe card MicroSD; | ||
| + | * scanare WiFi cu ESP-01 si salvare autoamta in `WIFIDB.TXT` a retelelor; | ||
| + | * analiza WiFi pe OLED; | ||
| + | * browser SD pentru fisierele salvate; | ||
| + | * status general. | ||
| + | |||
| + | === Captura RF raw === | ||
| + | |||
| + | 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 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 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 === | ||
| + | |||
| + | 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 prezentei modulului; | ||
| + | * `SAMConfiguration` pentru configurarea modului normal; | ||
| + | * `InListPassiveTarget` pentru citirea cardurilor ISO14443A. | ||
| + | |||
| + | 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 fisier RFID: | ||
| + | |||
| + | <code text> | ||
| + | LEN=4 | ||
| + | UID=04A1B2C3 | ||
| </code> | </code> | ||
| - | ^ Pin ESP-01 ^ Conectat la ^ Explicație ^ | + | === WiFi === |
| - | | **1** | GND | Masă | | + | |
| - | | **2** | 3.3V | GPIO2 tras HIGH | | + | |
| - | | **3** | 3.3V | GPIO0 tras HIGH pentru rulare normală | | + | |
| - | | **4** | Arduino D7 direct | RX ESP; primește comenzile AT de la Arduino | | + | |
| - | | **5** | Arduino D4 direct | TX ESP către Arduino | | + | |
| - | | **6** | 3.3V | CH_PD / EN tras HIGH | | + | |
| - | | **7** | 3.3V | RESET tras HIGH | | + | |
| - | | **8** | 3.3V | Alimentare ESP-01 | | + | |
| - | Observație: ESP-01 este alimentat doar la 3.3V din AMS1117. Linia D7 -> RX ESP este conectată direct în montajul curent. | + | Pentru scanarea WiFi este folosit un modul ESP-01 / ESP8266 cu firmware AT. Arduino comunica prin SoftwareSerial si trimite comanda: |
| - | === MicroSD === | + | <code text> |
| + | AT+CWLAP | ||
| + | </code> | ||
| - | ^ Pin MicroSD ^ Conectat la ^ Explicație ^ | + | 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. |
| - | | **VCC** | 5V | Alimentare modul MicroSD | | + | |
| - | | **GND** | GND | Masă comună | | + | |
| - | | **SCK** | D13 | Clock SPI | | + | |
| - | | **MOSI** | D11 | Date către card | | + | |
| - | | **MISO** | D12 | Date de la card | | + | |
| - | | **CS** | A3 | Chip Select MicroSD | | + | |
| - | ==== Explicații schema ==== | + | Date analizate pentru fiecare retea: |
| + | * SSID; | ||
| + | * RSSI; | ||
| + | * BSSID / MAC; | ||
| + | * canal; | ||
| + | * tip securitate; | ||
| + | * WPS; | ||
| + | * cipher pairwise/group; | ||
| + | * protocol b/g/n; | ||
| + | * observatii simple despre calitatea semnalului si congestie. | ||
| - | Principiul de conectare este următorul: | + | === SD Browser === |
| - | * Toate modulele folosesc **GND comun**, deoarece semnalele digitale trebuie să aibă aceeași referință electrică. | + | |
| - | * OLED-ul și MicroSD-ul folosesc magistrala **SPI hardware** a Arduino UNO: D13/SCK, D11/MOSI și D12/MISO. | + | |
| - | * Fiecare modul SPI are propriul pin de selectare: OLED pe D10 și MicroSD pe A3. | + | |
| - | * RFID-ul PN532 este conectat pe **I2C**, împreună cu PCF8574, pentru a evita conflictele pe SPI. | + | |
| - | * Receptorul RF este pus pe **D2**, deoarece acest pin are întreruperea externă INT0. | + | |
| - | * Emițătorul RF este pus pe **D8**, pin digital folosit pentru generarea semnalului retransmis. | + | |
| - | * LED-ul RGB este pus pe pini PWM pentru a permite controlul culorilor. | + | |
| - | * Butoanele sunt conectate la **PCF8574**, pentru a economisi pini pe Arduino. | + | |
| - | * ESP-01 este alimentat din **AMS1117 la 3.3V** și comunică prin SoftwareSerial cu Arduino. | + | |
| - | * MicroSD-ul este folosit pentru salvarea persistentă a datelor RF și RFID. | + | |
| - | ===== Software Design ===== | + | 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; | ||
| + | * `RFIDX.TXT` pentru capturi RF raw, in varianta initiala; | ||
| + | * `WIFIDB.TXT` pentru scanarea WiFi curenta. | ||
| - | ===== Rezultate Obţinute ===== | + | ==== Firmware 2: Flipper One RF ==== |
| + | |||
| + | Firmware-ul RF este o varianta specializata pentru testarea RF 433 MHz. Acesta include: | ||
| + | * OLED; | ||
| + | * PCF8574 + butoane; | ||
| + | * LED RGB; | ||
| + | * STX882 / SRX887; | ||
| + | * RCSwitch; | ||
| + | * MicroSD pentru salvarea codurilor RF decodate. | ||
| + | |||
| + | 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: | ||
| + | * **Capture RF** - asteapta un cod RF compatibil RCSwitch; | ||
| + | * **Emit Last** - retransmite ultimul cod capturat sau incarcat; | ||
| + | * **Save Last** - salveaza codul RF curent pe SD; | ||
| + | * **Saved RF** - listeaza fisierele RF salvate si permite incarcarea lor; | ||
| + | * **Status** - afiseaza valoarea, bit length, protocolul, delay-ul si starea SD. | ||
| + | |||
| + | === Captura RF cu RCSwitch === | ||
| + | |||
| + | In acest firmware, in loc sa se salveze tranzitiile brute, biblioteca RCSwitch incearca sa decodeze semnalul. Daca reuseste, firmware-ul retine: | ||
| + | * `value` - valoarea numerica decodata; | ||
| + | * `bits` - numarul de biti; | ||
| + | * `protocol` - protocolul detectat de RCSwitch; | ||
| + | * `delayUs` - lungimea pulsului. | ||
| + | |||
| + | 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 === | ||
| + | |||
| + | 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 fisier din meniul **Saved RF**, codul este incarcat in RAM si poate fi retransmis prin **Emit Last**. | ||
| + | |||
| + | === Limitari RF === | ||
| + | |||
| + | 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 ==== | ||
| + | |||
| + | 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: | ||
| + | |||
| + | * [[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. | ||
| + | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab1-2023|Laboratorul 1 - UART]] - comunicatia cu ESP-01 prin SoftwareSerial si comenzi AT. | ||
| + | * [[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. | ||
| + | * [[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. | ||
| + | * [[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. | ||
| + | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab6-2023-2024|Laboratorul 6 - I2C]] - comunicatia cu PCF8574 si PN532 pe A4/A5. | ||
| + | |||
| + | 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. | ||
| + | |||
| + | ==== Optimizari importante ==== | ||
| + | |||
| + | Pentru a rula pe Arduino UNO, au fost necesare mai multe optimizari: | ||
| + | * folosirea U8x8 in loc de un framebuffer complet pentru OLED; | ||
| + | * salvarea scanarilor WiFi direct pe SD, nu in RAM; | ||
| + | * folosirea de stringuri in PROGMEM; | ||
| + | * implementare minimala PN532; | ||
| + | * limitarea bufferelor locale; | ||
| + | * dezactivarea Serial debug in build-ul final; | ||
| + | * 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. | ||
| + | |||
| + | ===== Rezultate obtinute ===== | ||
| + | |||
| + | In urma implementarii, asamblarii si testarii FlipperOne, s-au obtinut urmatoarele rezultate ce confirma atingerea si depasirea obiectivelor initial propuse: | ||
| + | - RFID: | ||
| + | * PN532 este initializat corect pe I2C; | ||
| + | * cardurile/tag-urile ISO14443A sunt detectate; | ||
| + | * UID-ul este afisat corect pe OLED; | ||
| + | * UID-ul poate fi salvat pe MicroSD; | ||
| + | * fisierele salvate pot fi regasite prin index. | ||
| + | - Wi-Fi, a depasit asteptarile: | ||
| + | * ESP-01 raspunde la comenzile AT, scaneaza retelele din jur si le salveaza automat in `WIFIDB.TXT`; | ||
| + | * lista retelelor poate fi afisata pe OLED; | ||
| + | * detaliile fiecarei retele pot fi analizate; | ||
| + | * analiza include RSSI, securitate, canal, MAC/BSSID, WPS si observatii simple. | ||
| + | - RF raw, foarte sensibil la zgomot: | ||
| + | * 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 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: | ||
| + | * 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. | ||
| + | * Totusi, modulul RF dedicat ar trebui sa aiba urmatoarele functionalitati functionale: captura 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 intalnite ==== | ||
| + | |||
| + | Cele mai mari probleme au fost: | ||
| + | * zgomotul RF produs de receptor in lipsa unui semnal util; | ||
| + | * memoria Flash foarte limitata; | ||
| + | * memoria RAM limitata, mai ales cand SD, SoftwareSerial si OLED sunt folosite simultan; | ||
| + | * conflictele intalnite pe parcursul motanrii pe SPI intre OLED si MicroSD; | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | ===== Download ===== | + | 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]] | ||
| - | ===== Jurnal ===== | + | ==== Laboratoare PM ==== |
| - | ===== Bibliografie/Resurse ===== | + | Resurse utilizate pentru implementarea interfetelor, perifericelor si comunicatiilor cu modulele externe: |
| - | ==== Resurse Hardware ==== | + | * [[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]] | ||
| - | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]] | + | ==== Datasheet-uri si Documentatii Componente ==== |
| - | * [[https://www.nxp.com/docs/en/data-sheet/PCF8574.pdf|Datasheet PCF8574]] | + | |
| - | * [[https://www.nxp.com/docs/en/data-sheet/PN532_C1.pdf|Datasheet PN532]] | + | |
| - | * [[https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf|Datasheet ESP8266]] | + | |
| - | ==== Resurse Software ==== | + | Documentatia tehnica oficiala a componentelor si bibliotecilor utilizate: |
| - | * [[https://github.com/sui77/rc-switch|Librarie RCSwitch]] | + | * **Microcontroler:** [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]] |
| - | * [[https://github.com/olikraus/u8g2|Librarie U8g2 OLED]] | + | * **Arduino UNO:** [[https://docs.arduino.cc/hardware/uno-rev3/|Arduino UNO Rev3 Documentation]] |
| - | * [[https://github.com/RobTillaart/PCF8574|Librarie PCF8574]] | + | * **PlatformIO:** [[https://docs.platformio.org/|PlatformIO Documentation]] |
| - | * [[https://github.com/adafruit/Adafruit-PN532|Librarie Adafruit PN532]] | + | * **OLED SH1106 / U8g2-U8x8:** [[https://github.com/olikraus/u8g2|U8g2 / U8x8 Library]] |
| - | * [[https://github.com/bportaluri/WiFiEsp|Librarie WiFiEsp]] | + | * **RCSwitch:** [[https://github.com/sui77/rc-switch|RCSwitch Library]] |
| - | * [[https://flipperzero.one/|Flipper Zero - inspiratie]] | + | * **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]] |
| - | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab0-2024|PM Lab 0 - GPIO]] | + | * **PN532 RFID/NFC:** [[https://www.nxp.com/docs/en/user-guide/141520.pdf|PN532 NXP User Manual]] |
| - | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab2-2023|PM Lab 2 - Intreruperi]] | + | * **Arduino SD Library:** [[https://docs.arduino.cc/libraries/sd/|SD Library Documentation]] |
| - | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024|PM Lab 3 - Timere/PWM]] | + | |
| - | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab5-2023-2024|PM Lab 5 - SPI]] | + | |
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||