This is an old revision of the document!
Gyroscope controlled car
Introducere
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.
Descriere generală
Device-ul este compus din doua componente:
Masina
Telecomanda
Proiectul constă in implementarea unui sistem de control wireless pentru un vehicul, bazat pe comunicația ESP-NOW între două plăci ESP32. Transmițătorul preia în timp real datele de la senzorul de mișcare MPU6050, interpretând înclinarea acestuia pentru a genera comenzi de deplasare. Receptorul primește aceste comenzi, le interpretează și controlează motoarele vehiculului în mod corespunzător. În plus, integrarea senzorului ultrasonic HC-SR04 a permis detectarea obstacolelor din fața vehiculului și oprirea automată a acestuia, prevenind astfel coliziunile.
Hardware Design
Lista de piese:
Diagrama bloc
Montajul final
Schema electrica
Descriere functinalitate hardware
Telecomada este formata dintr-un ESP32 care primeste informatii despre pozitie de la un senzor cu gyroscope MPU6050. Cele 2 comunica prin I2C.
Pe masina avem un alt ESP32 care comunica cu cel de pe telecomanda prin ESP-NOW. Motoarele sunt controlate prin intermediul unui driver de motoare L298N care este legat la ESP32 si utilizeaza PWM pentru controlul motoarelor. LCD-ul afiseaza tensiunea bateriei de la motoare si procentul acesteia, comunicand prin I2C. De asemenea am adaugat un senzor de distanta, care, daca detecteaza o distanta mai mica de 20cm, va misca masina inapoi.
Descriere pini
Telecomanda
Comunicare ESP32 - MPU6050
MPU6050 | ESP32 | Funcție |
VCC | 3V3 | Alimentare 3.3V |
GND | GND | GND |
SDA | GPIO 21 | I2C - Date |
SCL | GPIO 22 | I2C - Ceas |
Masina
Comunicare ESP32 - L298N
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 |
Comunicare ESP32 - LCD
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 |
Comunicare ESP32 - HC-SR04
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 |
Software Design
Mediul de dezvotare este ArduinoIDE.
Biblioteci utilizate
esp_now.h - Această bibliotecă permite comunicarea wireless directă între dispozitive ESP32 folosind protocolul ESP-NOW (dezvoltat de Espressif). Este utilă pentru transmisii rapide și fără un router Wi-Fi.
WiFi.h - Este necesară pentru a inițializa modulul Wi-Fi al ESP32. Deși ESP-NOW nu necesită o conexiune la rețea, modulul Wi-Fi trebuie pornit pentru a funcționa.
I2Cdev.h și MPU6050_6Axis_MotionApps20.h – Biblioteci open-source pentru comunicarea cu senzorul MPU6050.
vector
Wire.h - Este biblioteca standard pentru comunicația I2C. Necesară pentru a comunica cu periferice I2C.
LiquidCrystal_I2C.h - Bibliotecă open-source care permite afișarea datelor pe LCD cu interfață I2C.
Descriere software
Funcționarea modulului transmițător
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.
Etapele de inițializare:
Inițializarea conexiunii ESP-NOW
Modulul activează interfața Wi-Fi și configurează conexiunea ESP-NOW.
Se adaugă un nou peer (receptor) utilizând adresa sa MAC, pentru a permite transmiterea datelor.
Configurarea senzorului MPU6050
Senzorul MPU6050 este inițializat și calibrat cu ajutorul funcției setupMPU().
Această funcție setează senzorul în modul DMP (Digital Motion Processor), permițând obținerea de date prelucrate (pitch, roll, yaw).
Funcționarea loop():
Modulul citește în mod repetat datele din coada senzorului (FIFO).
Valorile sunt prelucrate și mapate în intervalul 0–254, pentru a fi compatibile cu formatul transmisiei ESP-NOW.
Datele sunt apoi incapsulate într-o structură și transmise către receptor prin ESP-NOW.
Funcționarea modulului 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.
Etapele de inițializare:
Inițializarea protocolului ESP-NOW
Configurarea pinilor de control
Inițializarea afișajului LCD
Recepția și procesarea datelor:
La primirea unui pachet de date prin ESP-NOW, este apelată funcția OnDataRecv().
Aceasta citește structura de date recepționată și, în funcție de valorile primite (corespunzătoare orientării sau accelerației), apelează funcția processCarMovement() cu parametrul corespunzător.
Pentru evitarea coliziunii, cu ajutorul senzorului de distanță, primul pas din funcția OnDataRecv() este determinarea distanței până la obstacol, iar dacă distanța este mai mică de 20 cm, se va introduce o întârziere de o secundă, timp în care funcția de primire a datelor nu va mai procesa informațiile primite.
Funcția processCarMovement() interpretează comanda și controlează direcția de deplasare a vehiculului, trimițând comenzi către motoare prin intermediul funcției rotateMotor().
Monitorizarea nivelului bateriei:
Pentru a monitoriza tensiunea bateriei care alimentează motoarele, pinul VCC al modulului L298N este conectat la pinul 34 al plăcii ESP32, care permite citiri analogice.
Se realizează o mediere a mai multor citiri analogice pentru a obține o valoare mai stabilă a tensiunii.
Nivelul bateriei este calculat în funcție de această medie și este afișat pe LCD.
Rezultate Obţinute
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.
Download
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF