Differences

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

Link to this comparison view

pm:prj2025:mdinica:razvan.baldovin [2025/05/26 23:22]
razvan.baldovin Adaugat capitolul de pinout
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 41: Line 41:
   * PWM   * PWM
 ===== Hardware Design ===== ===== Hardware Design =====
 +
 +Piesele au fost alese cu urmatoarele caracteristici in gand:
 +  * Dimensiunea spatiului util
 +  * Caracteristicile Lego-ului (pentru a putea misca Lego-ul)
 +
 +Astfel, inainte sa detaliem piesele pe care le-am achizitionat,​ hai sa detaliem putin cu ce lucram
 +
 +{{ :​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 4x, care 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 ==== ==== Bill of Materials ====
Line 56: Line 103:
  
 {{ :​pm:​prj2025:​mdinica:​wiring.png?​700 |}} {{ :​pm:​prj2025:​mdinica:​wiring.png?​700 |}}
- 
-<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>​ 
  
 ==== Pinout ==== ==== Pinout ====
Line 69: Line 108:
 === ESP32 === === ESP32 ===
  
-^ Pin ESP ^ Componenta legata ​    ^ Pin componenta ^ Protocol ​  ​^ Functie ​                       ^ +^ Pin ESP ^ Componenta legata ​    ^ Pin componenta ^ Protocol ^ Functie ​                       ^ 
-| 5Vin    | Modul DC-DC Step-Down | Vout+          | Power      | Sursa de 5V                    | +| 5Vin    | Modul DC-DC Step-Down | Vout+          | Power    | Sursa de 5V                    | 
-| GND     | Modul DC-DC Step-Down | Vout-          | Power      | Ground ​                        |  +| GND     | Modul DC-DC Step-Down | Vout-          | Power    | Ground ​                        |  
-| GPIO10 ​ | Servomotor ​           | IN             | PWM        | Controleaza servomotorul ​      | +| GPIO10 ​ | Servomotor ​           | IN             | PWM      | Controleaza servomotorul ​      | 
-| GND     | Servomotor ​           | GND            | Power      | Ground ​                        | +| GND     | Servomotor ​           | GND            | Power    | Ground ​                        | 
-| GPIO4   | Motor Driver ​         | AIN2           | GPIO       ​| Controleaza directia motorului | +| GPIO4   | Motor Driver ​         | AIN2           | GPIO     ​| Controleaza directia motorului | 
-| GPIO5   | Motor Driver ​         | AIN1           | GPIO       ​| Controleaza directia motorului | +| GPIO5   | Motor Driver ​         | AIN1           | GPIO     ​| Controleaza directia motorului | 
-| GPIO6   | Motor Driver ​         | PWMA           | PWM        | Controleaza viteza motorului ​  | +| GPIO6   | Motor Driver ​         | PWMA           | PWM      | Controleaza viteza motorului ​  | 
-| GPIO7   | Motor Driver ​         | STBY           | GPIO       ​| Activeaza motor driverul ​      |  +| GPIO7   | Motor Driver ​         | STBY           | GPIO     ​| Activeaza motor driverul ​      |  
-| GND     | Motor Driver ​         | GND            | Power      | Ground ​                        ​| ​+| GND     | Motor Driver ​         | GND            | Power    | Ground ​                        ​| ​
  
 === Motor Driver === === Motor Driver ===
  
-^ Pin driver ^ Componenta legata ​    ^ Pin componenta ^ Protocol ​  ​^ Functie ​                       ^ +^ Pin driver ^ Componenta legata ​    ^ Pin componenta ^ Protocol ^ Functie ​                       ^ 
-| PWMA       ​| ​Motor Driver ​         ​| GPIO6          | PWM        | Controleaza viteza motorului ​  | +| PWMA       ​| ​ESP32                 | GPIO6          | PWM      | Controleaza viteza motorului ​  | 
-| AIN2       ​| ​Motor Driver ​         ​| GPIO4          | GPIO       ​| Controleaza directia motorului | +| AIN2       ​| ​ESP32                 | GPIO4          | GPIO     ​| Controleaza directia motorului | 
-| AIN1       ​| ​Motor Driver ​         ​| GPIO5          | GPIO       ​| Controleaza directia motorului | +| AIN1       ​| ​ESP32                 | GPIO5          | GPIO     ​| Controleaza directia motorului | 
-| STBY       ​| ​Motor Driver ​         ​| GPIO7          | GPIO       ​| Activeaza motor driverul ​      |  +| STBY       ​| ​ESP32                 | GPIO7          | GPIO     ​| Activeaza motor driverul ​      |  
-| GND        | Motor Driver ​         ​| GND            | Power      | Ground ​                        | +| GND        | ESP32                 | GND            | Power    | Ground ​                        | 
-| VM         | Modul DC-DC Step-Down | Vout+          | Power      | Alimentare motor               | +| VM         | Modul DC-DC Step-Down | Vout+          | Power    | Alimentare motor               | 
-| VCC        | Modul DC-DC Step-Down | Vout+          | Power      | Alimentare logica ​             | +| VCC        | Modul DC-DC Step-Down | Vout+          | Power    | Alimentare logica ​             | 
-| A1         | Motor                 | VCC            | Power      | Activeaza motorul ​             | +| A1         | Motor                 | VCC            | Power    | Activeaza motorul ​             | 
-| A2         | Motor                 | GND            | Power      | Ground ​                        |+| 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 120: Line 175:
  
 ===== Jurnal ===== ===== Jurnal =====
 +
 +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)
 +
 +26.04.2025 - Am dat comanda finala de piese
  
 07.05.2025 - Au ajuns toate piesele 07.05.2025 - Au ajuns toate piesele
  
-18.05.2025 - Am implementat hardware-ul+08.05.2025 - Cu ajutorul unui prieten, am printat 3D niste conectori servomotor-Lego axle si motor-Lego axle
  
-19.05.2025-Prezent ​Am incercat ​sa fac conexiunea ​la masina din Legofara succes :(+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 verificsi am decis sa sudez majoritatea circuitului pentru a ma asigura ca nu voi pierde progresul facut.
  
-<note tip> +19.05.2025 - Am incercat sa conectez hardware-ul la masina din Lego, siii.... nu a functionat :( 
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului+ 
-</​note>​+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 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.1748290925.txt.gz · Last modified: 2025/05/26 23:22 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