This is an old revision of the document!
Proiectul Flipper One reprezinta o mini-replica a dispozitivului Flipper Zero, construita in jurul unei placi de dezvoltare cu microcontroller. Dispozitivul este capabil sa captureze, stocheze si retransmita semnale wireless provenite de la diverse telecomenzi (porti de garaj, prize wireless, sonerii fara fir, etc.), oferind utilizatorului un instrument portabil pentru analiza si interactiunea cu dispozitivele wireless din jur.
Ideea a pornit de la dorinta de a intelege mai bine cum functioneaza comunicatia wireless si dispozitivele de tip “multi-tool” pentru hackeri/pentesteri, dar la o scara redusa si la un cost accesibil. Spre deosebire de un Flipper Zero comercial, proiectul meu isi propune sa demonstreze functionalitatile de baza folosind componente standard.
Functionalitati principale:
Optional, sistemul include si un modul RFID pentru citirea si emularea cardurilor, un modul ESP-01 pentru scanarea retelelor WiFi din jur, si un cititor de card SD pentru stocarea persistenta a semnalelor capturate.
Laboratoare folosite: GPIO (Lab 0), Intreruperi (Lab 2), Timere/PWM (Lab 3), SPI (Lab 5), plus comunicatie I2C si UART.
Sistemul este organizat in jurul unei plăci Arduino UNO (ATmega328P), care coordoneaza toate celelalte module. Interactiunea cu utilizatorul se face printr-un ecran OLED pe care se afiseaza meniul si informatiile despre semnalele capturate, impreuna cu butoane pentru navigare si un LED RGB care indica starea curenta a dispozitivului.
Pentru ca pinii disponibili pe Arduino UNO nu ar fi fost suficienti pentru toate modulele, butoanele de navigare au fost mutate pe un expander I2C PCF8574, eliberand astfel 4 pini digitali pentru ESP-01 si modulele SPI.
Partea de captura si retransmitere a semnalelor wireless este realizata cu un receptor si un emitator de 433 MHz. La capturare, microcontrollerul foloseste o intrerupere externa pe pinul de date al receptorului si masoara duratele pulsurilor. La retransmitere, pulsurile salvate sunt regenerate prin emitator folosind un timer hardware.
Logica de functionare:
Î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-ul OLED SPI, receptorul și emițătorul RF 433 MHz, LED-ul RGB, expanderul de pini PCF8574 împreună cu cele 4 butoane, modulul RFID/NFC PN532 și modulul ESP-01 alimentat separat la 3.3V prin AMS1117 și protejat pe linia RX prin convertor logic.
Partea de alimentare este organizată pe magistrale de breadboard: 5V, GND și 3.3V. Toate modulele au masă comună cu Arduino. Modulul MicroSD este inclus în schema finală și are liniile SPI și pinul CS planificate, dar în montajul curent alimentarea sa nu este încă finalizată: VCC pe 4G și GND pe 3G sunt marcate ca fire de tras.
Pentru verificarea conexiunilor punct-cu-punct, am inclus și varianta detaliată, cu nodurile/rândurile de breadboard marcate explicit:
| Componentă | Rol în proiect | Interfață / observații |
|---|---|---|
| Arduino UNO R3 / ATmega328P | Microcontroller principal; rulează logica de meniu, captura și retransmiterea semnalelor | GPIO, PWM, SPI, I2C, UART software |
| Breadboard SYB-120 | Suport de prototipare și distribuție pentru 5V, 3.3V, GND și magistralele comune | Conexiuni pe rânduri/coloane |
| OLED 1.3'' 128×64 SPI | Afișează meniul, starea sistemului și datele citite/capturate | SPI hardware + pini separați pentru RES, DC, CS |
| Receptor RF 433 MHz | Citește semnale wireless de la telecomenzi | DATA pe D2, folosit ca pin de întrerupere INT0 |
| Emițător RF 433 MHz | Retransmite semnalele RF salvate | DATA pe D8, potrivit pentru generarea de pulsuri controlate |
| LED RGB KY-016 | Indicator vizual pentru starea dispozitivului: idle / record / replay | PWM pe D3, D5, D6 |
| PCF8574 | Extinde numărul de pini disponibili pentru butoane | I2C pe A4/A5 |
| 4 butoane tactile | Navigare prin meniu: UP, DOWN, OK, BACK | Intrări P0-P3 pe PCF8574, conectate la GND la apăsare |
| PN532 RFID/NFC | Citire carduri/tag-uri RFID/NFC | SPI hardware, CS separat pe A2 |
| ESP-01 / ESP8266 | Scanare WiFi / funcții opționale de comunicație | UART software: D4 primește TX ESP, D7 transmite către RX ESP prin convertor logic |
| AMS1117 3.3V | Alimentare stabilă pentru ESP-01 | VIN din 5V, VOUT pe magistrala de 3.3V |
| Convertor logic 5V ↔ 3.3V | Protejează intrarea RX a ESP-01 de nivelul logic de 5V al Arduino | D7 → HV1, LV1 → RX ESP |
| Cititor MicroSD | Stocare persistentă pentru semnale capturate | SPI hardware, CS pe A3; alimentare de finalizat |
| Pin Arduino | Conectat la | De ce este folosit aici |
|---|---|---|
| 3.3V | Alimentare auxiliară, după caz; ESP este alimentat din AMS1117 | ESP-01 are nevoie de 3.3V stabil, nu direct din pinul 3.3V Arduino |
| 5V | Magistrala de 5V pe breadboard: rând 2F și rând 59 | Alimentează OLED, PN532, RF 433 MHz, PCF8574 și intrarea AMS1117 |
| GND | Magistrala comună GND: rândurile 1, 52, 55, 56, 60 | Toate modulele trebuie să aibă masă comună pentru referință de semnal |
| D2 | DATA receptor RF 433 MHz, prin 23X | D2 este INT0 pe Arduino UNO, deci permite capturarea precisă a tranzițiilor semnalului RF |
| D3 | LED RGB - canal R, 39I | Pin PWM, folosit pentru controlul intensității culorii roșii |
| D4 | ESP-01 pin 5 / TX ESP | SoftwareSerial RX: Arduino primește date de la ESP; 3.3V este citit corect ca HIGH de ATmega328P |
| D5 | LED RGB - canal G, 40I | Pin PWM, folosit pentru controlul intensității culorii verzi |
| D6 | LED RGB - canal B, 41I | Pin PWM, folosit pentru controlul intensității culorii albastre |
| D7 | HV1 pe convertor logic, 44D | SoftwareSerial TX către ESP; trece prin convertor logic pentru a coborî nivelul de la 5V la 3.3V |
| D8 | DATA emițător RF 433 MHz, 24Y | Pin digital folosit pentru generarea semnalului retransmis |
| D9 | RES OLED | Reset hardware pentru display |
| D10 | CS OLED | Selectează OLED-ul pe magistrala SPI |
| D11 | MOSI SPI, 13F | Linia hardware MOSI, partajată între OLED, PN532 și MicroSD |
| D12 | MISO SPI, 12F | Linia hardware MISO, folosită de PN532 și MicroSD |
| D13 | SCK SPI, 14F | Clock hardware SPI, comun pentru OLED, PN532 și MicroSD |
| A0 | DC OLED | Selectare Data/Command pentru OLED |
| A1 | liber | Rezervă pentru extensii ulterioare |
| A2 | NSS / CS PN532 | Chip Select separat pentru RFID |
| A3 | CS MicroSD | Chip Select separat pentru cardul SD |
| A4 | SDA PCF8574, 41A/41C | Linia hardware I2C SDA |
| A5 | SCL PCF8574, 40A/40C | Linia hardware I2C SCL |
| Zonă breadboard | Conexiune | Explicație |
|---|---|---|
| 60, 55, 56 | GND | Rânduri folosite ca extensii de masă |
| 59 | 5V | Rând de distribuție pentru modulele alimentate la 5V |
| 53A | VIN AMS1117 | Intrare regulator 3.3V, alimentată din 5V |
| 52A | GND AMS1117 | Masă regulator |
| 53H | VOUT AMS1117 | Ieșire 3.3V către magistrala 50F-J |
| 50F-J | 3.3V | Alimentare ESP-01 prin rând comun |
| 47D, 47F | GND convertor logic | Masă comună pentru level shifter |
| 46D | HV convertor logic | Partea de 5V a convertorului logic |
| 46F | LV convertor logic | Partea de 3.3V a convertorului logic |
| 44D | HV1 convertor logic | Semnal TX Arduino de pe D7 |
| 44F / 43F | LV1 convertor logic | Semnal coborât la 3.3V către RX ESP-01 |
| Punct breadboard | Conexiune | Explicație |
|---|---|---|
| 43A, 43C | VCC PCF8574, legat la 59C | Alimentează expanderul la 5V |
| 42A, 42C | GND PCF8574, legat la 56C | Masă comună |
| 41A, 41C | SDA PCF8574, legat la A4 | Date I2C |
| 40A, 40C | SCL PCF8574, legat la A5 | Clock I2C |
| 36E/F și 34E/F | Buton UP | Un capăt la P0, celălalt la GND |
| 33E/F și 31E/F | Buton DOWN | Un capăt la P1, celălalt la GND |
| 30E/F și 28E/F | Buton OK | Un capăt la P2, celălalt la GND |
| 27E/F și 25E/F | Buton BACK | Un capăt la P3, celălalt la GND |
| A36, A33, A30, A27 | P0, P1, P2, P3 | Intrări PCF8574 pentru butoane |
| J34, J31, J28, J25 | GND | Revenirea butoanelor la masă |
| Punct breadboard | Conexiune | Explicație |
|---|---|---|
| 39I | LED R → D3 | Canal roșu, PWM |
| 40I | LED G → D5 | Canal verde, PWM |
| 41I | LED B → D6 | Canal albastru, PWM |
| 38I | LED GND → 1G | Catod comun la masă |
| Modul | Punct breadboard | Conectat la | Explicație |
|---|---|---|---|
| Receptor 433 MHz | 24X | C1 / GND | Masă receptor |
| Receptor 433 MHz | 23X | D2 Arduino | DATA receptor; se folosește întreruperea INT0 |
| Receptor 433 MHz | 21X | G2 / 5V | Alimentare receptor |
| Emițător 433 MHz | 24Y | D8 Arduino | DATA emițător |
| Emițător 433 MHz | 23Y | H2 / 5V | Alimentare emițător |
| Emițător 433 MHz | 22Y | C55 / GND | Masă emițător |
| Semnal | Puncte breadboard | Module conectate |
|---|---|---|
| SCK | D13 → 14F, 14G PN532, 14H → 7G MicroSD | OLED, PN532, MicroSD |
| MOSI | D11 → 13F, 13G PN532, 13H → 6G MicroSD | OLED, PN532, MicroSD |
| MISO | D12 → 12F, 12G PN532, 12I → 5G MicroSD | PN532, MicroSD |
| Pin OLED | Conectat la | Explicație |
|---|---|---|
| GND | 55D | Masă comună |
| VCC | 5V Arduino | Alimentare display |
| SCK | 14F / D13 | Clock SPI |
| SDA / MOSI | 13F / D11 | Date SPI către display |
| RES | D9 | Reset display |
| DC | A0 | Selectare comandă/date |
| CS | D10 | Chip Select OLED |
| Pin PN532 | Conectat la | Explicație |
|---|---|---|
| SCK | 14G | Clock SPI |
| M / MISO | 13G | Date de la modul către Arduino |
| MO / SDA / TX | 12G | Date de la Arduino către modul |
| NSS / SCL / RX | A2 | Chip Select dedicat PN532 |
| RST / R0 | liber | Momentan nu este controlat hardware |
| GND | 56B | Masă comună |
| 5V | 59D | Alimentare modul |
Pinii ESP-01 sunt notați cu modulul orientat cu antena/zig-zagul în față:
1 2 3 4 5 6 7 8
| Pin ESP-01 | Conectat la | Explicație |
|---|---|---|
| 1 | 56D | GND |
| 4 | 43F / LV1 convertor logic | RX ESP, primește semnal de 3.3V din D7 prin level shifter |
| 5 | D4 Arduino | TX ESP către RX SoftwareSerial Arduino |
| 6 | 49I / 3.3V | CH_PD/enable tras la 3.3V |
| 8 | 49H / 3.3V | Alimentare ESP-01 |
| Pin MicroSD | Conectat la | Stadiu |
|---|---|---|
| SCK | 7G, prin 14H | conectat la magistrala SPI |
| MOSI | 6G, prin 13H | conectat la magistrala SPI |
| MISO | 5G, prin 12I | conectat la magistrala SPI |
| CS | A3 | conectat logic la Arduino |
| VCC | 4G | de tras |
| GND | 3G | de tras |
Principiul de conectare este următorul: