Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:vlad.radulescu2901:george_victor.ioan [2026/05/15 19:57]
george_victor.ioan
pm:prj2026:vlad.radulescu2901:george_victor.ioan [2026/05/23 19:05] (current)
george_victor.ioan
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +Proiectul va fi o barcă controlată ​de la distanță. Barca va fi controlată ​de un microcontroler împreună cu două motoare șva primi comenzi de la un alt microcontroler echipat cu un giroscopÎn funcție de înclinarea giroscopuluiacest al doilea microcontroler va trimite comenzi bărcii pentru ​se deplasa înainteînapoila stânga sau la dreaptaTelecomanda va fi prinsă pe mâna utilizatorului.
-Prezentarea pe scurt a proiectului vostru: +
-  * ce face +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru alţii şpentru voi +
-</​note>​ +
-The project will be a remote-controlled boatThe boat will be controlled by a microcontroller along with two motorsand it will receive commands from another microcontroller equipped with gyroscope. Depending on the tilt of the gyroscopethis second microcontroller will send commands to the boat to move forwardbackward, left, or rightThe remote control will be strapped to the user's hand.+
  
-The goal of the project is to build a remote-controlled boata toy you can spend your free time withwhich can help you relax and improve your hand-eye coordination.+Scopul proiectului este construirea unei bărci controlate de la distanță ​— o jucărie cu care îți poți petrece timpul libercare te poate ajuta să te relaxezi și să îți îmbunătățești coordonarea mână-ochi.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> 
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care  
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html 
-</​note>​ 
  
 {{:​pm:​prj2026:​vlad.radulescu2901:​block_sch_ioan_george_victor.drawio.png?​|}} {{:​pm:​prj2026:​vlad.radulescu2901:​block_sch_ioan_george_victor.drawio.png?​|}}
Line 26: Line 15:
   * Driverul de motoare - este folosit pentru a putea transmite samnalele provenite de la esp-ul barca la o tensiune de maxim 3.3V la o tensiune de maxim 9V necesara pentru a misca motoarele.   * Driverul de motoare - este folosit pentru a putea transmite samnalele provenite de la esp-ul barca la o tensiune de maxim 3.3V la o tensiune de maxim 9V necesara pentru a misca motoarele.
   * Motoarele sunt folosite pentru deplasarea barcii inainte si inapoi si pentru a putea lua viraje stanga-dreapt.   * Motoarele sunt folosite pentru deplasarea barcii inainte si inapoi si pentru a putea lua viraje stanga-dreapt.
 +  * Modulul de Wifi integrat pe esp-uri pentru comunicarea intre cele doua folosind protocolul ESP NOW.
 </​note>​ </​note>​
 ===== Hardware Design ===== ===== Hardware Design =====
- 
-<note tip> 
-Aici puneţi tot ce ţine de hardware design: 
-  * listă de piese 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) 
-  * diagrame de semnal ​ 
-  * rezultatele simulării 
-</​note>​ 
  
  
 <note tip> <note tip>
-Component list:+Lista componentelor:
   * 2 X Micro Metal Gearmotor HPCB   * 2 X Micro Metal Gearmotor HPCB
-  * 2 X Plusivo ESP32 and BLE Compatible Wireless Development Board +  * 2 X Placă de dezvoltare wireless compatibilă cu Plusivo ESP32 și BLE 
-  * Gyroscope ​OKY3234 +  * Giroscop ​OKY3234 
-  * Motor driver drv8838+  * Driver de motor DRV8838
 </​note>​ </​note>​
  
Line 74: Line 56:
 </​note>​ </​note>​
  
-==== Imagini prototip ​====+===== Software Design =====
  
-Telecomanda si barca sunt momentan o o singura unitate:+Pentru implementare am folosit extensia platformIO din VSC.
  
 +Librarii:
 +  * esp_now.h biblioteca aceasta este pentruca telecomanda si barca comunica prin intermediul protocolului ESP NOW.
 +  * WiFi.h pentru a putea telecomanda sa se conecteze la barca fara a fi nevoie sa hardcodez mac-ul controlarului barcii pe controlarul de pe telecomanda.
 +  * Adafruit_MPU6050.h si Adafruit_Sensor.h aceasta biblioteca este folosita pentru conectarea giroscopului la telecomanda si pentru o mai usoara parsare a datelor.
 +  * Arduino.h biblioteca este folosita pentru functia standard de arduino analogWrite.
  
 +Formula folosit pentru inclinatia telecomenzii este urmatorul: $$ \text{Unghi}_{\text{final}} = \alpha \times (\text{Unghi}_{\text{anterior}} + \text{Gyro} \times dt) + (1 - \alpha) \times \text{Pitch}_{acc} $$
  
-===== Software Design =====+<​note>​ 
 +Componentele formulei: 
 +  * $\text{Unghi}_{\text{final}}$ ​unghiul la care este inclinata telecomanda. 
 +  * $\alpha$ ​cat la mult valoarea data de giroscop este folosita pentru calcularea unghiului (98%). 
 +  * $\text{Unghi}_{\text{anterior}}$ ​unghiul vechi. 
 +  * $\text{Gyro}$ ​viteza de rotatie masurata de giroscop. 
 +  * $dt$ timpul scurs de la ultima citire a senzorului. 
 +  * $\text{Gyro} \times dt$ distanta unghiulara, imi spune cat sa rotit telecomanda de la ultima citire. 
 +  * $(1 - \alpha)$ ​cat la suta din acceleratie folosim pentru corectarea drift-ului. 
 +  * $\text{Pitch}_{acc}$ ​unghiul brut calculat folosind accelerometrul. 
 +</​note>​
  
 +Codul a fost implementat in doua fisiere main unul pentru barca si unul pentru telecomanda.
  
-<note tip> +Main barca, contine urmatoarele functii: 
-Descrierea codului aplicaţiei ​(firmware): +  * void controlMotoare(); - seteaza prin PWM viteza mototarelor. 
-  * mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+  * void my_esp_now_init(); - initializarea protocolului ESP NOW. 
-  * librării şi surse 3rd-party ​(e.g. Procyon AVRlib+  * void OnDataRecv(const uint8_t *mac_addrconst uint8_t *data, int data_len); - functia care este apelata cand vin date de la telecomanda. 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +  * void motorDirection(); - seteaza viteza tinta individuala a fiecarui motor in functie de directia aleasa. 
-  * (etapa 3surse şi funcţii implementate +  * void tranzitieMotoare();​ - incrementeaza viteza curenta pana la viteza tinta. 
-</​note>​+  * void setup(); - este functia unde sunt apelate initializarile pentru esp si pinii GPIO. 
 +  * void loop(); - este ciclul de functionare al barcii.
  
-I used VSC with platformIO extension.+Main telecomanda,​ contine urmatoarele functii: 
 +  * void init_esp_now_mod();​ - initializarea protocolului ESP NOW. 
 +  * void ScanForSlave();​ - scaneaza prin wifi daca barca este pornita. 
 +  * void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status); - functia prin care ESP NOW trimite date. 
 +  * void init_gyro();​ - initializarea giroscopului. 
 +  * void getGyroAngles();​ - returneaza unghiul curent al telecomenzii. 
 +  * uint8_t commandFromController();​ - trimite prin ESP NOW o directie barcii conform unghiului telecomenzii. 
 +  * uint8_t command(); - functie pentru debug citeste prin USART comenzi pentru directie si le trimite barcii.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 103: Line 110:
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Github[[https://​github.com/​VictorI76/​Proiect_barca|link]]
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, 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**. +Video[[https://www.youtube.com/shorts/UN26ZbDlU7M|video]]
-</note>+
  
 ===== Jurnal ===== ===== Jurnal =====
Line 115: Line 120:
 </​note>​ </​note>​
  
 +==== Imagini prototip ====
 +
 +Telecomanda si barca sunt momentan o o singura unitate:
 +
 +{{:​pm:​prj2026:​vlad.radulescu2901:​ioan_george_victor_merge_inainte.png|}}
 +
 +{{:​pm:​prj2026:​vlad.radulescu2901:​ioan_george_victor_merge_stanga.png|}}
 +
 +<​note>​
 +Dupa cum se poate vedea in cele doua imagini un esp trimite in functie de giroscop o comanda pentru directia barcii, iar al doilea esp receptioneaza acea comanda si trimite putere spre motoare in functie de directie.
 +
 +In prima imagine "​telecomanda"​ este inclinata spre fata deci ambele motoare vor primi putere pentru a merge inainte, iar in cea de a doua imagine "​telecomanda"​ este inclinata spre stanga deci doar motorul din dreapta va primi putere pentru a vira la stanga. ​
 +</​note>​
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2026/vlad.radulescu2901/george_victor.ioan.1778864245.txt.gz · Last modified: 2026/05/15 19:57 by george_victor.ioan
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