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 mixerleft = 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 reassemblychunk_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.hVideoPacketHeader, constante UDP; ble_protocol.hControlCommand, 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

  • Adăugare streaming cameră și afișare de la distanță — configurare WiFi AP și transmisie UDP (2 commit-uri)
  • Adăugare control BLE și funcționalitate motoare — integrare joystick

1 aprilie 2026

  • Adăugare funcționalitate streaming cameră — configurare WiFi AP și transmisie video UDP
  • Refactorizare cod mașină și telecomandă — structură îmbunătățită și lizibilitate sporită (2 commit-uri)

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

  • Adăugare funcționalitate streaming cameră — configurații inițiale adăugate

26 martie 2026

  • Implementare control rată servo cu BLE — gestionare îmbunătățită a zonei moarte a joystick-ului
  • Adăugare control servo cu integrare joystick — actualizare definiții GPIO motoare

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

  • Adăugare control LED pentru indicare viteză — afișare stare conexiune în modulul telecomandă
  • Adăugare module mașină și telecomandă — funcționalitate BLE și control motoare

23 martie 2026

  • Refactorizare logică control motoare — utilizare PWM și îmbunătățire inițializare butoane
  • Inițializare structură proiect — configurare CMake și PlatformIO; control GPIO pentru funcții motoare

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2026/vlad.radulescu2901/radu_mihai.voinea04.txt · Last modified: 2026/05/23 00:29 by radu_mihai.voinea04
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