This shows you the differences between two versions of the page.
| — |
pm:prj2026:cezar.zlatea:eduard.vasilescu [2026/05/09 22:26] (current) eduard.vasilescu created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Robot pentru Cartografiere 2D cu LiDAR ====== | ||
| + | ===== Introducere ===== | ||
| + | |||
| + | Proiectul constă în realizarea unui robot mobil pe roți, controlat wireless printr-un controller PS4 (Bluetooth), capabil să cartografieze în timp real spațiul unei camere folosind un senzor LiDAR cu scanare 360°. Robotul transmite datele de scanare prin **WiFi (UDP)** către o aplicație software rulată pe laptop, care construiește incremental o hartă 2D a mediului înconjurător. | ||
| + | |||
| + | **Ce face proiectul:** | ||
| + | * Se deplasează prin cameră sub control wireless (controller PS4 prin Bluetooth) | ||
| + | * Scanează continuu mediul cu LiDAR la 10Hz (~3860 puncte/secundă) | ||
| + | * Transmite datele LiDAR prin **WiFi UDP** către aplicația de pe laptop | ||
| + | * Aplicația Python pe laptop transformă datele polare în coordonate carteziene și desenează harta 2D a camerei în timp real | ||
| + | |||
| + | ===== Descriere generală ===== | ||
| + | |||
| + | {{:pm:prj2026:cezar.zlatea:schema_bloc_general.png?700|Schema bloc generală a sistemului}} | ||
| + | |||
| + | **Module hardware și interacțiunea lor:** | ||
| + | |||
| + | * **ESP32 DevKit V1** - microcontroler dual-core care orchestrează tot sistemul. Folosește FreeRTOS pentru task-uri paralele pe cele două nuclee. Dispune de WiFi 2.4GHz și Bluetooth Classic integrate, esențiale pentru comunicarea dublă wireless. | ||
| + | * **LiDAR M1C1** - scanează 360° la 10Hz, trimite pachete binare prin UART la 150000 baud către ESP32. | ||
| + | * **MPU6050 (IMU)** - oferă date de orientare prin I2C, folosite pentru a corecta harta când robotul se rotește. | ||
| + | * **Driver L298N** - punte H care primește semnale PWM (3.3V) de la ESP32 și controlează motoarele DC cu putere mare din baterie. | ||
| + | * **Buck Converter 5V/3A** - regulator separat pentru a asigura alimentare stabilă pentru LiDAR și ESP32, izolată de zgomotul motoarelor. | ||
| + | * **Controller PS4** - input wireless prin Bluetooth Classic. | ||
| + | * **Laptop (Python + Pygame)** - aplicație care primește pachete UDP prin WiFi de la ESP32 și desenează harta 2D în timp real. | ||
| + | |||
| + | **Fluxul de date end-to-end:** | ||
| + | |||
| + | - **Input control**: Joystick PS4 → Bluetooth → ESP32 (Core 0) | ||
| + | - **Procesare comenzi**: ESP32 generează semnale PWM → L298N → Motoare DC | ||
| + | - **Achiziție senzori**: LiDAR (UART) + IMU (I2C) → ESP32 (Core 1) | ||
| + | - **Buffer & parsare**: Core 1 procesează pachetele binare LiDAR | ||
| + | - **Transmisie WiFi**: Core 1 împachetează datele în UDP datagrame → WiFi 2.4GHz → Laptop | ||
| + | - **Vizualizare**: Aplicație Python primește UDP, transformă coordonate polare în carteziene, desenează cu Pygame | ||
| + | |||
| + | ===== Hardware Design ===== | ||
| + | |||
| + | ==== Listă de piese ==== | ||
| + | |||
| + | ^ Componentă ^ Model ^ Cantitate ^ Rol ^ | ||
| + | | Microcontroller | ESP32 DevKit V1 | 1 | Procesare centrală + WiFi/BT | | ||
| + | | Senzor LiDAR | M1C1 Mini 360° | 1 | Scanare mediu | | ||
| + | | Cablu adaptor | JST-PH 1.25mm 4-pin → Female Dupont | 1 | Conexiune LiDAR-ESP32 | | ||
| + | | Șasiu robot | Kit 2WD acril cu motoare și encodere | 1 | Mecanică | | ||
| + | | Driver motoare | L298N Dual H-Bridge | 1 | Control putere motoare | | ||
| + | | Convertor DC-DC | Buck MP1584 sau LM2596 (5V/3A) | 1 | Alimentare stabilă logică | | ||
| + | | IMU | MPU6050 (GY-521) | 1 | Orientare robot (Lab I2C) | | ||
| + | | Acumulatori | Li-ion 18650 3000mAh | 2 | Sursă energie | | ||
| + | | Suport baterii | 2× 18650 serial cu fire | 1 | Asamblare baterii | | ||
| + | | Încărcător | TP4056 sau extern dual | 1 | Reîncărcare | | ||
| + | | Senzori encoder | LM393 IR slot | 2 | Odometrie roți (Lab Întreruperi) | | ||
| + | | Switch | ON/OFF rocker | 1 | Pornire sistem | | ||
| + | | Fire Dupont | Set Male-Male, Male-Female | 1 set | Conectică | | ||
| + | | Breadboard | 400 puncte | 1 | Prototipare | | ||
| + | | Controller PS4 | Sony DualShock 4 (sau clonă) | 1 | Input wireless | | ||
| + | |||
| + | ==== Pinout ESP32 DevKit V1 ==== | ||
| + | |||
| + | <note warning> | ||
| + | **În lucru** - Pinout-ul exact urmează să fie stabilit în timpul fazei | ||
| + | de implementare hardware. Tabelul de mai jos este | ||
| + | preliminar și poate suferi modificări în funcție de testarea practică. | ||
| + | </note> | ||
| + | |||
| + | ^ Pin ESP32 ^ Conexiune ^ Funcție ^ Lab ^ | ||
| + | | GPIO 16 (RX2) | LiDAR M1C1 - TX | Recepție date LiDAR | Lab 1 (UART) | | ||
| + | | GPIO 17 (TX2) | LiDAR M1C1 - RX | Comandă LiDAR (opțional) | Lab 1 (UART) | | ||
| + | | GPIO 21 (SDA) | MPU6050 - SDA | Date I2C | Lab 6 (I2C) | | ||
| + | | GPIO 22 (SCL) | MPU6050 - SCL | Clock I2C | Lab 6 (I2C) | | ||
| + | | GPIO 18 | L298N - IN1 | Direcție motor stânga (1) | Lab 0 (GPIO) | | ||
| + | | GPIO 19 | L298N - IN2 | Direcție motor stânga (2) | Lab 0 (GPIO) | | ||
| + | | GPIO 23 | L298N - IN3 | Direcție motor dreapta (1) | Lab 0 (GPIO) | | ||
| + | | GPIO 5 | L298N - IN4 | Direcție motor dreapta (2) | Lab 0 (GPIO) | | ||
| + | | GPIO 25 (PWM) | L298N - ENA | Viteză motor stânga | Lab 3 (PWM) | | ||
| + | | GPIO 26 (PWM) | L298N - ENB | Viteză motor dreapta | Lab 3 (PWM) | | ||
| + | | GPIO 34 (ADC) | Divizor rezistiv baterie | Monitor tensiune baterie | Lab 4 (ADC) | | ||
| + | | GPIO 32 | Encoder roată stânga | Întrerupere odometrie | Lab 2 (Întreruperi) | | ||
| + | | GPIO 33 | Encoder roată dreapta | Întrerupere odometrie | Lab 2 (Întreruperi) | | ||
| + | | GPIO 2 | LED status WiFi | Indicator conexiune | Lab 0 (GPIO) | | ||
| + | | VIN (5V) | Buck converter OUT | Alimentare placă | - | | ||
| + | | GND | GND comun | Masa | - | | ||
| + | |||
| + | |||
| + | ===== Software Design ===== | ||
| + | |||
| + | ==== Mediu de dezvoltare ==== | ||
| + | * **Firmware ESP32**: Arduino IDE 2.x cu suport ESP32 (ESP32 Arduino Core), alternativ ESP-IDF | ||
| + | * **Aplicație PC**: Python 3.x cu Pygame pentru vizualizare, biblioteca standard ''socket'' pentru UDP | ||
| + | |||
| + | ==== Librării și surse 3rd-party ==== | ||
| + | * **WiFi.h** și **WiFiUdp.h** - libraryii standard ESP32 Arduino pentru rețea | ||
| + | * **Bluepad32** - librărie pentru gestionarea controllerului PS4 prin Bluetooth Classic pe ESP32 (https://github.com/ricardoquesada/bluepad32) | ||
| + | * **Wire.h** - librărie I2C standard Arduino pentru MPU6050 | ||
| + | * **MPU6050 library** by Electronic Cats (sau driver custom) | ||
| + | * **socket** (Python stdlib) - comunicare UDP | ||
| + | * **Pygame** - vizualizare hartă 2D | ||
| + | * **NumPy** - calcule transformări coordonate | ||
| + | |||
| + | **Notă**: Driverul UART pentru LiDAR M1C1 va fi implementat de la zero, fără bibliotecă. Documentația protocolului va fi reconstruită din observarea fluxului de date și din resurse GitHub disponibile. | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | //Această secțiune va fi completată progresiv pe măsură ce proiectul avansează. La momentul actual (Milestone Săpt 9) este în faza de proiectare și aprobare temă.// | ||
| + | |||
| + | **Etape planificate:** | ||
| + | * **Săpt 10-11**: Asamblare hardware, testare individuală module (motoare, LiDAR, IMU, WiFi) | ||
| + | * **Săpt 12-13**: Integrare firmware, sincronizare task-uri, implementare protocol UDP | ||
| + | * **Săpt 14**: Aplicație Python receiver UDP + algoritm cartografiere | ||
| + | * **Săpt 15-16**: Testing end-to-end, optimizări, demonstrație finală | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | //Va fi completat la finalizarea proiectului.// | ||
| + | |||
| + | ===== Download ===== | ||
| + | |||
| + | <note warning> | ||
| + | Arhivele cu surse, scheme și documentație vor fi încărcate aici la finalizarea fiecărei etape. | ||
| + | </note> | ||
| + | |||
| + | ===== Jurnal ===== | ||
| + | |||
| + | * **Săpt 9 (curentă)**: Alegerea temei, definitivare componente, schemă bloc, aprobare asistent. | ||
| + | * **Cercetare conector LiDAR**: Identificat că LiDAR M1C1 folosește JST-PH 1.25mm 4-pin (rar), găsit cablu adaptor pentru conexiune directă fără lipit. | ||
| + | * **Decizie alimentare**: Adăugat Buck Converter separat după ce am observat că regulatorul L298N are limită ~500mA, insuficient pentru ESP32 + LiDAR + IMU simultan. | ||
| + | * **Decizie microcontroler**: Ales ESP32 DevKit V1 standard pentru documentație extinsă, pini lipiți și WiFi/BT integrate. | ||
| + | * **Decizie protocol comunicare**: Ales UDP în locul TCP/USB Serial pentru a permite robot complet autonom (fără cablu) cu latență minimă pentru streaming LiDAR. | ||
| + | |||
| + | ===== Bibliografie/Resurse ===== | ||
| + | |||
| + | ==== Resurse Hardware ==== | ||
| + | * Datasheet ESP32: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf | ||
| + | * Datasheet L298N: https://www.st.com/resource/en/datasheet/l298.pdf | ||
| + | * Datasheet MPU6050: https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf | ||
| + | * Pinout ESP32 DevKit V1: https://lastminuteengineers.com/esp32-pinout-reference/ | ||
| + | * LiDAR M1C1 (community): căutare GitHub "M1C1 LIDAR protocol" | ||
| + | |||
| + | ==== Resurse Software ==== | ||
| + | * Bluepad32 (PS4 controller): https://github.com/ricardoquesada/bluepad32 | ||
| + | * ESP32 Arduino Core: https://github.com/espressif/arduino-esp32 | ||
| + | * FreeRTOS pe ESP32: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html | ||
| + | * ESP32 WiFi UDP tutorial: https://randomnerdtutorials.com/esp32-udp-client-arduino-ide/ | ||
| + | * Python socket module: https://docs.python.org/3/library/socket.html | ||
| + | * Pygame: https://www.pygame.org/docs/ | ||
| + | |||
| + | ==== Laboratoare PM utilizate ==== | ||
| + | * Lab 0 - GPIO: https://ocw.cs.pub.ro/courses/pm/lab/lab0-2024 | ||
| + | * Lab 1 - UART: https://ocw.cs.pub.ro/courses/pm/lab/lab1-2023 | ||
| + | * Lab 2 - Întreruperi: https://ocw.cs.pub.ro/courses/pm/lab/lab2-2023 | ||
| + | * Lab 3 - Timere/PWM: https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024 | ||
| + | * Lab 4 - ADC: https://ocw.cs.pub.ro/courses/pm/lab/lab4-2023-2024 | ||
| + | * Lab 6 - I2C: https://ocw.cs.pub.ro/courses/pm/lab/lab6-2023-2024 | ||
| + | |||
| + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||