Differences

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

Link to this comparison view

pm:prj2025:mdinica:razvan.baldovin [2025/05/25 19:38]
razvan.baldovin Update descriere generala
pm:prj2025:mdinica:razvan.baldovin [2025/05/30 09:37] (current)
razvan.baldovin Update software
Line 2: Line 2:
  
 <note tip> <note tip>
-Nume: Baldovin-Răzvan-Mihai-Marian+Nume: Baldovin Răzvan-Mihai-Marian
  
 Grupa: 332CA Grupa: 332CA
Line 42: Line 42:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Piesele au fost alese cu urmatoarele caracteristici in gand: 
-Aici puneţi tot ce ţine de hardware design+  * Dimensiunea spatiului util 
-  * listă de piese +  * Caracteristicile Lego-ului (pentru a putea misca Lego-ul) 
-  * scheme electrice ​(se pot lua şi de pe Internet şi din datasheet-urie.ghttp://www.captain.at/electronic-atmega16-mmc-schematic.png) + 
-  * diagrame ​de semnal ​ +Astfel, inainte sa detaliem piesele pe care le-am achizitionat,​ hai sa detaliem putin cu ce lucram 
-  ​* rezultatele simulării + 
-</​note>​+{{ :​pm:​prj2025:​mdinica:​lego_under.png?​500 |}} 
 + 
 +Avem aici 2 zone in care putem lucra
 +  * Rosu - 10.4 x 5.5 x 3.2 cm (lungime x latime x inaltime) 
 +  * Verde - 10.4 x 4.0 x 6.0 cm 
 +  * Albastru - 8.0 x 5.5 x 6.0 cm 
 + 
 +(In functie de nevoie, putem alege intre verde si albastru ca spatiu (ambele sunt valide in situatia de fata) 
 + 
 +{{ :​pm:​prj2025:​mdinica:​lego_side.jpeg?​700 |}} 
 + 
 +Specificatii Lego: 
 +  * Dimensiuni: 65.0 x 27.0 x 13.0 cm 
 +  * Greutate: 1.4kg 
 +  * Diametru roti: 8.0 cm 
 + 
 +Ca sa stabilim viteza cu care ar trebui sa se invarta motorul am facut urmatoarele calcule 
 + 
 +  - Calculam circumferinta rotii 
 +    * circumferinta = π * diametru = π * 0.08 m = 0.2513 m 
 +  - Calculam numarul de rotatii per minut al rotii 
 +    * Presupunem o viteza de 10km/h 
 +    * 10 km/h = 2.78 m/s 
 +    * RPS roata = viteza / circumferinta = 2.78 m/s / 0.2513 m ≈ 11.06 RPS 
 +    * RPM roata = RPS roata * 60 s = 11.06 * 60 = 664 RPM 
 +  - Calculam numarul de rotatii per minut al motorului 
 +    * Observam ca o rotatie a axului de motor reuseste sa invarta aproximativ jumatate de roata 
 +    * RPM motor = RPM roata * 2 = 664 RPM * 2 = 1328 RPM 
 + 
 +Totusi, viteza motorului nu este totul, ne trebuie si destul cuplu cat sa putem pleca de pe loc 
 + 
 +  - Calculam forta de rezistenta la rulare 
 +    * F rezistenta = coef de rezistenta la rulare * masa * gravitatia = 0.01 * 1.4kg * 9.81m/s^2 = 0.137N 
 +    * coeficientul de rezistenta la rulare pentru cauciuc am gasit sa fie 0.01 
 +  - Calculam Cuplul minim necesar 
 +    * cuplu = F rezistenta * raza rotii = 0.137N * 4cm = 0,0055 N*m 
 +    * transformam ​din N*m in kg * cm 
 +    * 0.0055 N*m ≈ 0.056 kg * cm 
 +  ​Luam ca marja de eroare un factor de 4xcare sa tina cont de flexarea, rezistenta si frecarea pieselor Lego 
 +    * cuplu final = cuplu minim * 4 = 0.056 kg * cm * 4 ≈ 0.2 kg * cm 
 + 
 +==== Bill of Materials ==== 
 + 
 +^ Piesa                          ^ Cantitate ^ Pret           ^ Link ^ 
 +| ESP32-S3-N16R8 ​                | 1         | 5.75 (96% off) | [[https://www.aliexpress.com/item/​1005008089716920.html?​spm=a2g0o.order_list.order_list_main.5.5c1c18028T4YqN | AliExpress]] | 
 +| Driver de motor TB6612FNG ​     | 1         | 24.99          | [[https://​www.optimusdigital.ro/​ro/​drivere-de-motoare-cu-perii/​134-tb6612fng-dual-motor-driver-1-a.html?​search_query=+Driver+de+Motoare+Dual+TB6612FNG+%281+A%29+&​results=1 | Optimus Digital]] | 
 +| Modul DC-DC Step-Down LM2596 ​  | 1         | 16.49          | [[https://​www.optimusdigital.ro/​ro/​surse-coboratoare-reglabile/​805-modul-dc-dc-lm2596-cu-afisaj-de-tensiune.html?​search_query=+Modul+DC-DC+LM2596+cu+Afisaj+de+Tensiune+&​results=1 | Optimus Digital]] | 
 +| Motor brushless FK-180SH-3244 ​ | 1         | 14.99          | [[https://​www.optimusdigital.ro/​ro/​motoare-fara-perii/​2364-motor-fara-perii-de-mare-viteza-fk-180sh-3244-13000-rpm-la-37-v.html?​search_query=FK-180SH-3244&​results=1 | Optimus Digital]] | 
 +| Servomotor MG90S               | 1         | 19.33          | [[https://​www.optimusdigital.ro/​ro/​motoare-servomotoare/​271-servomotor-mg90s.html?​search_query=MG90S&​results=1 | Optimus Digital]] | 
 +| Suport de Baterii 2 x 18650    | 1         | 3.99           | [[https://​www.optimusdigital.ro/​ro/​suporturi-de-baterii/​941-suport-de-baterii-2-x-18650.html?​search_query=+Suport+de+Baterii+2+x+18650+&​results=13 | Optimus Digital]] | 
 +| 18650 LI-ION 3450mA 8A         | 4         | 26.18 4      | [[https://​www.emag.ro/​acumulator-18650-li-ion-3450ma-8a-samsung-lincr18650-35e-tp/​pd/​DWVV74MBM/?​ref=history-shopping_421527723_8383_1 | eMAG]] | 
 + 
 +==== Wiring ==== 
 + 
 +{{ :​pm:​prj2025:​mdinica:​wiring.png?​700 |}} 
 + 
 +==== Pinout ==== 
 + 
 +=== ESP32 === 
 + 
 +^ Pin ESP ^ Componenta legata ​    ^ Pin componenta ^ Protocol ^ Functie ​                       ^ 
 +| 5Vin    | Modul DC-DC Step-Down | Vout+          | Power    | Sursa de 5V                    | 
 +| GND     | Modul DC-DC Step-Down | Vout-          | Power    | Ground ​                        |  
 +| GPIO10 ​ | Servomotor ​           | IN             | PWM      | Controleaza servomotorul ​      | 
 +| GND     | Servomotor ​           | GND            | Power    | Ground ​                        | 
 +| GPIO4   | Motor Driver ​         | AIN2           | GPIO     | Controleaza directia motorului | 
 +| GPIO5   | Motor Driver ​         | AIN1           | GPIO     | Controleaza directia motorului | 
 +| GPIO6   | Motor Driver ​         | PWMA           | PWM      | Controleaza viteza motorului ​  | 
 +| GPIO7   | Motor Driver ​         | STBY           | GPIO     | Activeaza motor driverul ​      |  
 +| GND     | Motor Driver ​         | GND            | Power    | Ground ​                        |  
 + 
 +=== Motor Driver ===
  
 +^ Pin driver ^ Componenta legata ​    ^ Pin componenta ^ Protocol ^ Functie ​                       ^
 +| PWMA       | ESP32                 | GPIO6          | PWM      | Controleaza viteza motorului ​  |
 +| AIN2       | ESP32                 | GPIO4          | GPIO     | Controleaza directia motorului |
 +| AIN1       | ESP32                 | GPIO5          | GPIO     | Controleaza directia motorului |
 +| STBY       | ESP32                 | GPIO7          | GPIO     | Activeaza motor driverul ​      ​| ​
 +| GND        | ESP32                 | GND            | Power    | Ground ​                        |
 +| VM         | Modul DC-DC Step-Down | Vout+          | Power    | Alimentare motor               |
 +| VCC        | Modul DC-DC Step-Down | Vout+          | Power    | Alimentare logica ​             |
 +| A1         | Motor                 | VCC            | Power    | Activeaza motorul ​             |
 +| A2         | Motor                 | GND            | Power    | Ground ​                        |
 ===== Software Design ===== ===== Software Design =====
  
 +Initial am vrut sa fac o aplicatie mobila pentru a utiliza BLE (care este ceva mai responsiv), insa avand acces doar la iPhone si neavand Mac, nu am putut gasi metode "​oficiale"​ de a dezvolta aplicatii (deoarece, din cate am gasit pe net, iti trebuie Xcode care se gaseste doar pe sisteme MacOS)
  
-<note tip> +Astfel, am ales sa folosesc a doua cea mai buna optiune, care este spre norocul meu si universala, un web server hostat local care controleaza masina ​(design-ul a fost creat cu urmatorul gand, ca sa controlezi masina trebuie sa o vezi/​urmaresti,​ deci ar avea mai mult sens sa fie orientata catre un telefon, in loc de laptop) 
-Descrierea codului aplicaţiei ​(firmware): + 
-  * mediu de dezvoltare (if any) (e.gAVR StudioCodeVisionAVR) +[[https://​github.com/​2amazing4me/​Lego-Technic-RC-mod | Link GitHub]] 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib+ 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +Codul a fost dezvoltat in Arduino IDE. 
-  * (etapa 3surse şi funcţii implementate + 
-</note>+Am folosit urmatoarele biblioteci
 +  * ESP32Servo.h - Pentru a controla servomotorul prin functii predefinite 
 +  * WiFi.h - Pentru a permite conexiunea la Wi-Fi 
 +  * WebServer.h - Pentru a crea un server web local 
 + 
 +Am creat o pagina web destul de elementaracare are doua slidere: 
 +  * Cel din stanga are rolul unui volan, astfel se ocupa de virat stanga-dreapta 
 +  * Cel din dreapta are rolul de a propulsa/​opri masina ​(inainte-inapoi) 
 + 
 +Flow-ul programului:​ 
 +  * Se initializeaza conexiunea WiFi 
 +  * Se initializeaza serverul web (pe o adresa locala, deci trebuie sa ne aflam in aceeasi retea) 
 +  * Asteapta input de la utilizator prin serverul web 
 +  * Comenzile, sunt transformate in semnale PWM catre componentele respective:​ 
 +    * Slider stanga -> servomotor ​(intre 0 si 180
 +    * Slider dreapta -motor (intre -255 (maxim inapoi) si 255 (maxim inainte))
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 79: Line 176:
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +24.04.2025-26.04.2025 - Am inceput researchul, cautand piese potrivite pentru proiect. Am pornit cu aproape 0 cunostinte despre proiectul pe care vreau sa il fac asa ca a trebuit sa fac ore intregi de research (cateva dintre calculele si gandurile importante sunt reprezentate in sectiunde de Hardware Design) 
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul ​de proiect ​progresul ​proiectului+ 
-</​note>​+26.04.2025 - Am dat comanda finala ​de piese 
 + 
 +07.05.2025 - Au ajuns toate piesele 
 + 
 +08.05.2025 - Cu ajutorul unui prieten, am printat 3D niste conectori servomotor-Lego axle si motor-Lego axle 
 + 
 +18.05.2025 - Folosind diverse datasheet-uri si videouri pe youtube, am reusit sa prototipez hardwareul ​care va da viata masinii. Am creat un cod simplu care ruleaza un PWM de la 0 la 255 ca sa verific, si am decis sa sudez majoritatea circuitului pentru a ma asigura ca nu voi pierde ​progresul ​facut
 + 
 +19.05.2025 - Am incercat sa conectez hardware-ul la masina din Lego, siii.... nu a functionat :( 
 + 
 +19.05.2025 - Am identificat urmatoarele probleme: 
 +  * Servomotorul (SG90) nu era destul de puternic pentru steering 
 +  * Motorul se rotea in gol, deoarece conectorul nu statea fix pe acesta 
 +  * Devboard-ul este prea mare ca sa incapa in Lego 
 + 
 +21.05.2025 - Am gasit urmatoarele solutii: 
 +  * Am achizitionat un servomotor mai puternic (MG90S) 
 +  * Am printat un conector 3D reglabil, pentru a putea strange mai mult ca motorul sa poata transmite putere la Lego 
 +  * Daca scot ESP32-ul din Devboard, si schimb din fire tata-tata in fire tata-mama, poate incapea totul 
 + 
 +23.05.2025 - Din cauza unei singure piese din Lego, nu incapea motorul cu noul conector, am stat undeva la 2 ore pentru a desface masina (si documenta, pentru a o reface la loc :)) ), urmata de a muta piesa mai in spate pentru a crea spatiu, iar apoi reasamblat. 
 + 
 +23.05.2025 - Din nou, am observat ca motorul se invarte in gol, chit ca am strans mai mult piesa 3D. 
 + 
 +24.05.2025 - Am incercat sa adaug diferite bucati subtire de material intre motor si conector ca sa incerc sa conectez mai bine si sa adaug frecare (poate-poate merge). Din pacate nu a mers, tot se invarte in gol. 
 + 
 +28.05.2025 - Am desfacut lipiturile vechi pentru a putea inlocui cu fire tata-mama pentru a putea scapa de dev board. 
 + 
 +28.05.2025 - Am incercat sa actionez MG90S, dar nu am avut succes, am schimbat temporar inapoi la SG90 pana gasesc o solutie mai buna 
 + 
 +29.05.2025 - Am incercat sa mai printez inca un conector pentru motor. (fara succes, problema finala este puterea :( ) 
 + 
 +29.05.2025 - Am folosit un alt motor (TT motor), si ARE DESTULA PUTERE SA MISTE MASINA :-D 
 + 
 +29.05.2025 - Update-uri la cod, pagina, si finalizare proiect pentru prezentare
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2025/mdinica/razvan.baldovin.1748191094.txt.gz · Last modified: 2025/05/25 19:38 by razvan.baldovin
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