Proiectul „Gyroscope Controlled Car” urmărește dezvoltarea unui sistem de control wireless pentru un vehicul cu două roți, operat printr-o telecomandă care detectează mișcarea utilizatorului cu ajutorul unui giroscop. Acest sistem este conceput pentru a oferi un mod intuitiv și hands-free de a controla deplasarea unui robot mobil, doar prin înclinarea telecomenzii.
Proiectul îmbină mai multe concepte din domeniul sistemelor embedded, precum: comunicație wireless low-latency (ESP-NOW), controlul motoarelor prin PWM, interfațare I2C, UART pentru debug, GPIO, prelucrarea datelor senzorilor de mișcare, afișare în timp real și măsurare a tensiunii analogice(ADC). Soluția propusă este modulară și extensibilă, reprezentând o bază solidă pentru dezvoltarea de vehicule autonome sau controlate prin metode alternative.
Device-ul este compus din doua componente:
Controlul vehiculului se bazează pe un senzor de mișcare MPU6050, montat pe o placă ESP32 aflată în telecomandă. Informațiile despre orientare (pitch, roll) sunt procesate și transmise în timp real către vehicul prin protocolul ESP-NOW, care permite o comunicare rapidă și directă între cele două microcontrolere ESP32, fără a necesita o rețea Wi-Fi.
Vehiculul, echipat cu un alt modul ESP32, primește comenzile, interpretează direcția dorită de deplasare și controlează două motoare prin intermediul unui driver L298N. Sistemul este completat de un ecran LCD care afișează în timp real starea bateriei, și de un senzor de distanță HC-SR04, ce permite detectarea obstacolelor și implementarea unei funcții de evitare a coliziunii..
Telecomanda este formată dintr-un modul ESP32 care primește informații despre poziție de la un senzor cu giroscop MPU6050. Cele două componente comunică între ele prin intermediul protocolului I2C.
Pe mașină se află un alt modul ESP32, care comunică cu cel de pe telecomandă prin protocolul ESP-NOW. Motoarele sunt controlate cu ajutorul unui driver de motoare L298N, conectat la ESP32 și utilizând semnale PWM pentru reglarea vitezei.
Un ecran LCD afișează tensiunea bateriei motoarelor și procentajul acesteia, comunicând tot prin I2C. De asemenea, a fost adăugat un senzor de distanță care, dacă detectează un obstacol la mai puțin de 20 cm, determină deplasarea înapoi a mașinii pentru a evita coliziunea.
MPU6050 | ESP32 | Funcție |
---|---|---|
VCC | 3V3 | Alimentare 3.3V |
GND | GND | GND |
SDA | GPIO 21 | I2C - Date |
SCL | GPIO 22 | I2C - Ceas |
ESP32 Pin | L298N Pin | Funcție |
---|---|---|
GPIO 32 | ENA | Viteză motor stânga (PWM) |
GPIO 33 | IN1 | Direcție motor stânga |
GPIO 25 | IN2 | Direcție motor stânga |
GPIO 26 | IN3 | Direcție motor dreapta |
GPIO 27 | IN4 | Direcție motor dreapta |
GPIO 14 | ENB | Viteză motor dreapta (PWM) |
ADC 34 | VCC | Măsurare tensiune baterie |
ESP32 Pin | LCD Pin (modul I2C) | Funcție |
---|---|---|
GPIO 21 | SDA | Date I2C |
GPIO 22 | SCL | Ceas I2C |
5V (Vin) | VCC | Alimentare |
GND | GND | GND |
ESP32 Pin | HC-SR04 Pin | Funcție |
---|---|---|
GPIO 12 | Trig | Transmitere impuls ultrasonic |
GPIO 14 | Echo | Recepție ecou (măsurare timp întârziere) |
5V | VCC | Alimentare senzor |
GND | GND | GND |
Mediul de dezvotare este ArduinoIDE.
Modulul transmițător are rolul de a colecta date de la senzorul de mișcare MPU6050 și de a le transmite, prin intermediul protocolului ESP-NOW, către un modul receptor.
Modulul receptor are rolul de a primi datele transmise prin ESP-NOW de la senzorul MPU6050 (de pe transmițător) și de a executa acțiuni corespunzătoare asupra motoarelor, în funcție de mișcările detectate.
Proiectul demonstrează eficiența comunicării ESP-NOW pentru aplicații low-latency și fiabilitatea senzorilor utilizați în contextul controlului robotic. Prin combinarea mai multor tehnologii (MPU6050, HC-SR04, ESP32, LCD I2C), s-a obținut un sistem complet, capabil să răspundă în timp real la comenzile utilizatorului. Acest proiect oferă o bază solidă pentru extinderea ulterioară către vehicule complet autonome sau controlate prin alte metode, precum aplicații mobile sau comenzi vocale.