This shows you the differences between two versions of the page.
pm:prj2025:eradu:vlad.balteanu [2025/05/12 16:59] vlad.balteanu [Hardware Design] |
pm:prj2025:eradu:vlad.balteanu [2025/05/30 09:27] (current) vlad.balteanu [Rezultate Obţinute] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Hand Controlled Crane Car ====== | + | ====== Hand Controlled Car ====== |
Balteanu Vlad-Gabriel 331CA | Balteanu Vlad-Gabriel 331CA | ||
Line 10: | Line 10: | ||
Descriere generală a proiectului: Mașină cu telecomandă controlată prin mișcarea mâinii | 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: | 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 sau Bluetooth) către al doilea ESP32. | + | * 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, ex. L298N) pentru a efectua deplasarea înainte/înapoi, rotirea stânga/dreapta, sau oprirea. | + | * 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. | 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. | ||
</note> | </note> | ||
+ | |||
+ | {{:pm:prj2025:eradu:schemablock.png?800|}} | ||
Line 21: | Line 23: | ||
<note tip> | <note tip> | ||
Piese folosite: | Piese folosite: | ||
- | * 2 x esp32 | + | * 2 x esp32 - https://www.optimusdigital.ro/ro/placi-cu-bluetooth/4371-placa-de-dezvoltare-esp32-cu-wifi-i-bluetooth-42.html?search_query=esp32&results=28 |
- | * 4 motoare | + | * 4 motoare - https://www.emag.ro/sasiu-dublu-masina-inteligenta-cu-4-roti-3874784221220/pd/DWKRZKYBM/ |
- | * servomotor | + | * servomotor - |
- | * driver motor | + | * driver motor - https://www.optimusdigital.ro/ro/drivere-de-motoare-cu-perii/145-driver-de-motoare-dual-l298n.html?search_query=driver+motor&results=119 |
- | * accelerometru pe 3 dimensiuni | + | * accelerometru pe 3 axe - https://www.optimusdigital.ro/ro/senzori-senzori-inertiali/97-modul-accelerometru-cu-3-axe-adxl345.html?search_query=accelerometru&results=68 |
</note> | </note> | ||
- | {{:pm:prj2025:eradu:schematic_pm-draft_2025-05-12-2.png?200|}} | + | {{:pm:prj2025:eradu:schematic_pm-draft_2025-05-30.png?800|}} |
===== Software Design ===== | ===== Software Design ===== | ||
Line 34: | Line 36: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | * Dezvoltat folosind Arduino IDE |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Am folosit librării precum: |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Wifi.h pentru aflarea adresei Mac a receiverului. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * esp_now.h pentru comunicarea între esp-uri |
- | * (etapa 3) surse şi funcţii implementate | + | * MPU6050_light.h pentru accelerometru |
+ | * M-am folosit de o structură numită message cu care îmi definesc practic structura unui mesaj transmis de controllere. | ||
+ | * | ||
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | === Architecture === |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | 1. ***MAC.ino*** |
- | </note> | + | - 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 *** | ||
+ | - setup() - folosit pentru a inițializa protocolul de esp_now și comunicarea cu accelerometrul. | ||
+ | - 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 *** | ||
+ | - 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. | ||
+ | - 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. | ||
+ | - carMovement() - folosite pentru a genera output pe pinii conectați la motoare. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | https://github.com/Ullutz/Proiect_PM | ||
+ | https://youtube.com/shorts/fBFNsN1GtAk?feature=share | ||
===== Download ===== | ===== Download ===== | ||