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 (care costa peste 800 lei), proiectul de fata isi propune sa demonstreze functionalitatile de baza folosind componente standard.
Functionalitati principale:
Optional, sistemul poate fi extins cu un modul RFID pentru citirea si emularea cardurilor, un modul ESP pentru scanarea retelelor WiFi din jur, si un cititor de card SD pentru stocarea persistenta a semnalelor capturate.
Proiectul este util atat ca instrument educational pentru intelegerea protocoalelor wireless si a microcontrollerelor, cat si ca demonstratie practica a conceptelor invatate la laborator: GPIO, intreruperi, timere si comunicatie SPI.
Laboratoare folosite: GPIO (Lab 0), Intreruperi (Lab 2), Timere/PWM (Lab 3), SPI (Lab 5).
Sistemul este organizat in jurul unei plăci de dezvoltare cu microcontroller, 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.
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 pe pinul de date al receptorului si masoara duratele pulsurilor, salvandu-le intr-un buffer. La retransmitere, pulsurile salvate sunt regenerate prin emitator folosind un timer hardware.
Optional, sistemul include:
Logica de functionare:
Sistemul este centrat in jurul unei plăci de dezvoltare cu microcontroller ATmega328P.
| Componenta | Descriere | Protocol / Pinout |
|---|---|---|
| Arduino UNO R3 (ATmega328P) | Microcontroller principal | - |
| Display OLED 1.3” 128×64 | Ecran pentru meniu si forme de unda | SPI: SCK, MOSI, CS, DC, RST |
| Receptor RF 433 MHz | Capturarea semnalelor wireless | GPIO INT (pin de date) |
| Emitator RF 433 MHz | Retransmiterea semnalelor wireless | GPIO (pin de date) |
| LED RGB KY-016 | Indicarea starii (idle/recording/replay) | GPIO PWM x3 |
| Butoane push (x4) | Navigare meniu | GPIO INT cu pull-up intern |
| Optional: Modul RFID PN532 | Citire/emulare carduri | SPI sau I2C |
| Optional: Modul ESP-01 (ESP8266) | Scanare retele WiFi | UART (TX/RX) |
| Optional: Cititor card MicroSD | Stocare persistenta semnale | SPI |
| Convertor logic 5V ↔ 3.3V | Adaptare nivel logic pentru ESP-01 | - |
| Regulator de tensiune 3.3V | Alimentare ESP-01 | - |
| Breadboard + cabluri DuPont | Prototipare | - |
Receptorul si emitatorul de 433 MHz folosesc fiecare cate o antena externa (sarma rigida de aproximativ 17 cm) pentru a imbunatati distanta de receptie/emisie.
Pentru ca modulele SPI (display, RFID, card SD) sa partajeze aceeasi magistrala, fiecare are un pin CS (Chip Select) dedicat, controlat de microcontroller.
Modulul ESP-01 functioneaza la 3.3V si necesita un convertor de nivel logic pe liniile TX/RX pentru a putea comunica in siguranta cu Arduino-ul, care opereaza la 5V.
Mediu de dezvoltare: PlatformIO (in VSCode) / Arduino IDE.
Librarii si surse 3rd-party planificate:
Algoritmi si structuri planificate:
Functii principale planificate:
startRecording() / stopRecording() - activeaza/dezactiveaza capturareplaySignal(int index) - retransmite un semnal salvatrenderMenu() - deseneaza meniul curent pe OLEDonButtonPress(int btn) - handler de intrerupere pentru butoaneISR(TIMER1_CAPT_vect) - capteaza durata pulsului de la receptorsaveToSD(int index) / loadFromSD(int index) - stocare persistenta (optional)