Masinuta cu telecomanda
Introducere
Proiectul își propune să implementeze o mașinuță teleghidată, cu o telecomandă dedicată și o cameră pentru a putea vizualiza împrejurimile. Datorită camerei cu direcție controlată prin două servomotoare, mașinuța poate fi folosită pentru a inspecta vizual locuri greu accesibile.
Proiectul a pornit de la ideea unei mașinuțe simple (fără cameră), controlată printr-o aplicație pe telefon, însă a evoluat până la utilizarea unei camere și a unei telecomenzi dedicate, cu un display integrat.
Descriere generală
Hardware Design
Lista Piese
2x ESP32 S3
2x Switch
2x LM2596
2x HW-504
5x LED
5x Resitance > 1k
2x H-Bridge
4x Motoare 12V
2x SG90
1x OV2640
2x PCB Custom
1x Baterie LiPo
2x 18650
Carcasa de baterie
Platforma masina
Schema Electrica
Schema PCB
PCB Fizic
Software Design
Mediu de Dezvoltare
PlatformIO IDE (VS Code) cu două environment-uri: env:car și env:remote.
Framework Arduino pe ESP32-S3, compilator Xtensa GCC (ESP-IDF toolchain).
Biblioteci 3rd-Party
| Bibliotecă | Nod | Utilizare |
arduino-esp32 | Car + Remote | Wi-Fi, AsyncUDP, ADC, FreeRTOS |
esp32-camera | Car | Driver OV2640, captură JPEG, PSRAM |
NimBLE-Arduino | Car + Remote | BLE Coded PHY Extended Advertising |
LovyanGFX | Remote | Display ILI9341 parallel 8-bit, drawJpg() |
ESP-IDF LEDC | Car | PWM motoare DC (4 canale, 1 kHz, 10-bit) |
ESP-IDF MCPWM | Car | PWM servomotoare SG90 (50 Hz, 1 µs rezoluție) |
video_protocol.h / ble_protocol.h | Shared | Struct-uri și constante protocol custom |
Algoritmi și Structuri
Differential drive mixer — left = y + x, right = y − x; PWM = |mix| × speed × MAX_DUTY / 10000
Servo rate integration — task la 100 Hz integrează rata joystick în poziție float, mapată la µs (500–2500)
UDP frame reassembly — chunk_bitmap[128] pentru deduplicare; double buffer PSRAM cu swap zero-copy la completare
BLE Coded PHY — Extended Advertising 125 Kbps (FEC); WRITE_NR la 50 Hz; motorsStop() automat la deconectare
ADC calibrare — medie 64 samplee la startup; deadzone + normalizare asimetrică → [−100, +100]
FreeRTOS core pinning — Core 0: Wi-Fi + video; Core 1: BLE + control
Surse și Funcții Implementate
car/main.cpp: initMotors, motorsDrive, motorsStop, initServos, servoTask, initCamera, sendFrame, cameraTask, initWiFiAP, initBLE
remote/main.cpp: onPacketReceived, videoTask, calibrateJoysticks, readAxis, controlTask, connectToCar, startBLEScan, updateSpeedLEDs, LGFX (clasă display)
include/: video_protocol.h — VideoPacketHeader, constante UDP; ble_protocol.h — ControlCommand, UUID-uri BLE
Rezultate Obţinute
Ansamblu final
Concluzii
Download
design_circuit_voinea_radu_mihai_335ca.zip
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
4 aprilie 2026
Refactorizare formatare cod — îmbunătățiri de consistență și lizibilitate în protocoalele BLE și video
Refactorizare definiții pini și comentarii — claritate sporită în car_main și remote_main
Actualizare pin reset cameră — conexiunea pinului de reset mutat la 3V3 pe PCB
Actualizare rotație display — corectat pentru randare video și vizualizare cameră
Adăugare control BLE și funcționalitate motoare — integrare joystick (3 commit-uri)
3 aprilie 2026
1 aprilie 2026
30 martie 2026
Refactorizare setări cameră — control manual al expunerii; îmbunătățiri opțiuni socket pentru display
Îmbunătățire setări cameră — performanță mai bună în interior; corecție culori display
Optimizare control expunere automată — corecție culori pentru stream display
Refactorizare streaming video — trecere la UDP cu pachete fragmentate pentru fiabilitate și performanță sporite
Îmbunătățire fiabilitate cameră și display — opțiuni socket îmbunătățite și validare JPEG
Refactorizare cod cameră și display — claritate și îmbunătățiri de performanță
Refactorizare setări VCOM — control manual expunere și optimizare VCOM pentru stream display
29 martie 2026
26 martie 2026
25 martie 2026
Adăugare funcționalitate control servo — integrare joystick
Actualizare configurație logging Bluetooth — depanare îmbunătățită și claritate sporită (2 commit-uri)
Refactorizare control joystick și management viteză — integrare ADC
Actualizare definiții pini GPIO motoare — claritate și funcționalitate îmbunătățite
24 martie 2026
23 martie 2026
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF