Package Delivery Car - Racovcen Laurențiu

Introducere

Proiectul este o mașinuță care poate livra colete singură, fără să fie controlată direct de cineva după specificarea traseului. Mașinuța primește traseul pe care trebuie să meargă printr-o aplicație web care rulează pe o plăcuță ESP32. După ce ajunge la destinație și lasă coletul, mașinuța se întoarce singură la locul de unde a plecat. Scopul proiectului este de a dezvolta o soluție pentru transportul autonom de colete de dimensiuni mici. Cred că acest proiect este util pentru că mă ajută să învăț cum să combin partea de hardware cu cea software, astfel încât să rezolv o problemă reală - livrarea coletelor.

Descriere generală

Hardware Design

Lista de piese:

Nr. crt. Denumire Cantitate
1. ESP-WROOM-32 1
2. L298N Dual Motor Driver 1
3. Motor 4
4. Modul coborâre tensiune LM2596 1
5. Senzor accelerometru și giroscop MPU6050 1
6. Servomotor SG90 2
7. Baterie 1

Circuit electric:

Circuitul conține un microcontroller ESP32, destinat să controleze patru motoare DC printr-un driver L298N, două servomotoare SG90 și să citească date de la un senzor MPU6050 (accelerometru și giroscop). Circuitul este alimentat de o baterie conectată la modulul de coborâre a tensiunii LM2596.

Bateria:

  • Bateria de 5V (5000mAh) alimentează toate componentele. Pentru a adapta tensiunea la nivelul necesar funcționării mașinuței, ieșirea bateriei este conectată la modulul de coborâre a tensiunii LM2596.

ESP32:

  • Primește alimentare prin pinul VN de la sursa de tensiune (5V) a driver-ului L298N.
  • Controlează driverul de motoare L298N prin pinii digitali, trimițând semnale PWM și de direcție pentru a controla cele patru motoare DC conectate la L298N.
  • Primește date de la senzorul MPU6050 (accelerometru și giroscop) prin interfața I2C (SCL și SDA).
  • Controlează două servomotoare SG90 prin pini digitali separați, oferind semnalul de control PWM necesar pentru poziționarea acestora.

Driverul L298N:

  • Primește alimentare direct de la modulul LM2596.
  • Primește semnale de control de la ESP32.

Modulul de coborâre a tensiunii LM2596:

  • Primește tensiunea de la baterie.
  • Scade tensiunea la un nivel sigur.

Senzorul MPU6050:

  • Este alimentat de la ESP32 (PIN-ul de 3.3V).
  • Comunică cu ESP32 prin interfața I2C (SCL și SDA).

Servomotoarele SG90:

  • Sunt alimentate de la sursa de tensiune a driver-ului (5V).
  • Primesc semnale de control de la ESP32 pentru a efectua mișcări (de până la 90°).

Software Design

Mediu de dezvoltare: PlatformIO (placă ESP32 – ESP32-WROOM).

Biblioteci folosite:

  • WiFi.h – conectivitate WiFi pentru control de la distanță
  • ESPAsyncWebServer.h – server web asincron pentru interfața de control și API
  • AsyncTCP.h – suport TCP asincron necesar pentru serverul web
  • Servo.h – controlul servomotoarelor pentru manipularea coletului
  • Adafruit_MPU6050.h – comunicare cu accelerometrul și giroscopul MPU6050 prin I²C
  • LittleFS.h – sistem de fișiere pentru stocarea paginilor web și a resurselor statice

Funcționalități implementate:

  • Control de la distanță printr-o pagină web: Mașinuța poate fi controlată manual (direcții, oprire, lăsare colet) sau automat (traseu definit de utilizator) printr-o interfață web intuitivă.
  • Parcurgere traseu programat: Utilizatorul poate configura un traseu cu acțiuni (mers înainte/înapoi, rotiri stânga/dreapta) și distanțe, iar mașinuța îl va executa pas cu pas.
  • Livrare automată colet: Servomotoarele acționează pentru a lăsa coletul la destinație, controlat din interfața web.
  • Monitorizare stare MPU6050: Accelerometrul și giroscopul monitorizează accelerația, rotația și temperatura, datele fiind afișate în timp real pe pagina web.
  • Feedback vizual și stare conexiune: LED-uri pentru starea conexiunii WiFi și funcționarea sistemului.
  • Actualizare firmware OTA: Suport pentru actualizare software Over-The-Air, fără conectare fizică la dispozitiv.

Motivația alegerii bibliotecilor:

  • WiFi.h – standard pentru conectivitate wireless pe ESP32
  • ESPAsyncWebServer.h & AsyncTCP.h – server web rapid și eficient, ideal pentru interacțiuni web în timp real
  • Servo.h – interfață simplă pentru controlul servomotoarelor
  • Adafruit_MPU6050.h – bibliotecă pentru citirea datelor de la MPU6050 (accelerometru + giroscop)
  • LittleFS.h – permite stocarea și servirea rapidă a fișierelor web direct din memoria ESP32 (pentru fișierele HTML, CSS, JavaScript)

Elemente de noutate:

  • Control web modern, atât manual cât și automat, cu feedback în timp real
  • Definirea și execuția unui traseu compus, configurabil din interfața web
  • Livrare automată de colet cu acționare servo, fără intervenție directă
  • Monitorizare senzorială (accelerație, rotație, temperatură) și afișare live pe pagina web

Justificarea utilizării funcționalităților din laborator:

  • PWM (Pulse Width Modulation): control fin al vitezei motoarelor și al poziției servomotoarelor pentru manevre precise.
  • I²C: interfață pentru citirea datelor de la senzorul MPU6050.
  • Timere și delay-uri: gestionarea duratei acțiunilor (mers, rotiri, pauze între pași).
  • Web server și API: comunicare între utilizator și sistem, integrare cu front-end web.
  • Sisteme de fișiere embedded: servirea paginilor web și a resurselor statice din memoria internă.
  • Actualizare software OTA și stocare fișiere web direct pe dispozitiv

Structura proiectului și interacțiunea funcționalităților:

  • Inițializare sistem: Configurare pini, conectare WiFi, pornire server web și încărcare pagini web din LittleFS.
  • Control manual: Utilizatorul poate acționa mașinuța în timp real (înainte, înapoi, stânga, dreapta, stop, lăsare colet) din interfața web.
  • Control automat: Utilizatorul definește un traseu (succesiune de acțiuni cu distanțe/rotiri), care este procesat și executat secvențial de mașinuță.
  • Livrare colet: La comanda utilizatorului, servomotoarele acționează pentru a lăsa coletul la destinație.
  • Monitorizare senzorială: Datele de la MPU6050 (accelerație, rotație, temperatură) sunt preluate periodic și afișate pe interfața web.
  • Feedback și siguranță: LED-uri indică starea conexiunii și funcționarea sistemului; sistemul poate fi oprit rapid la nevoie.
  • Actualizare OTA: Firmware-ul poate fi actualizat de la distanță, fără conectare USB.

Calibrarea senzorilor:

  • MPU6050: setare interval ±8g pentru accelerometru și ±250°/s pentru giroscop, pentru detecția rapidă a mișcărilor bruște și monitorizarea corectă a orientării.
  • Motoare și servo: calibrare poziții de start/stop și viteze PWM pentru mișcări precise și sincronizate

GitHub repo: https://github.com/laurentiu-racovcen/project-pm

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Bibliografie/Resurse

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

Export to PDF

pm/prj2025/fstancu/laurentiu.racovcen.txt · Last modified: 2025/05/28 15:04 by laurentiu.racovcen
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