Table of Contents

Hand Controlled Car

Balteanu Vlad-Gabriel 331CA

Introducere

Am implementat o masina care este controlata cu ajutorul miscarilor mainii. Are pe langa si un fel de “macara” cu care poate ridica obiecte metalice de pe jos.

Descriere generală

Descriere generală a proiectului: Mașină cu telecomandă controlată prin mișcarea mâinii Acest proiect constă în realizarea unei mașini cu telecomandă controlată prin mișcările mâinii, detectate cu ajutorul unui accelerometru. Sistemul este alcătuit din două microcontrolere ESP32 care comunică wireless între ele, având fiecare un rol bine definit:

  • Modulul de control (primul ESP32) este atașat la mâna utilizatorului și este conectat la un accelerometru (precum MPU6050 sau ADXL345). Acesta citește în timp real mișcările mâinii (înclinări pe axele X/Y/Z) și le transmite prin conexiune wireless (Wi-Fi) către al doilea ESP32, folosind protocolul esp-now.
  • Modulul de acționare (al doilea ESP32) este montat pe șasiul mașinii și primește comenzile de la modulul de control. În funcție de mișcările detectate, acesta comandă motoarele (prin driver-e motor L298N) pentru a efectua deplasarea înainte/înapoi, rotirea stânga/dreapta, sau oprirea.

Proiectul pune accent pe controlul intuitiv și natural al mișcării vehiculului, oferind o alternativă la metodele clasice de comandă (joystick, telecomandă). Comunicarea wireless între cele două ESP32-uri face sistemul portabil și ușor de extins.

Hardware Design

Software Design

  • Dezvoltat folosind Arduino IDE
  • Am folosit librării precum:
    • Wifi.h pentru aflarea adresei Mac a receiverului.
    • esp_now.h pentru comunicarea între esp-uri
    • MPU6050_light.h pentru accelerometru
  • M-am folosit de o structură numită message cu care îmi definesc practic structura unui mesaj transmis de controllere.

Architecture

1. *MAC.ino*

  1. Am folosit acest cod pentru aflarea adresei MAC a unei placuțe esp32. Adresa o iau și o scriu ca și constantă în fișierul pentru Transmitter.

2. * Transmitter.ino *

  1. setup() - folosit pentru a inițializa protocolul de esp_now și comunicarea cu accelerometrul.
  2. loop() - începe prin a primi date de la senzor, apoi, în funcție de unghiriule pe axele x și y, creez o structură pe care o trimit prin esp_now_send().

3. * Receiver.ino *

  1. setup() - La fel ca mai sus este folosit pentru a inițializa protoculul de esp_now(), și declară o “întrerupere” pentru atunci când receiverul primește un mesaj.
  2. OnDataRecv() - rutina de întrerupere pentru momentul când primesc un mesaj de la transmitter. Acolo creez structura pe care o folosesc pentru a vedea cum trebuie să mișc mașina.
  3. carMovement() - folosite pentru a genera output pe pinii conectați la motoare.

Concluzii

https://github.com/Ullutz/Proiect_PM https://youtube.com/shorts/fBFNsN1GtAk?feature=share

Download

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

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

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

Export to PDF