This is an old revision of the document!
Grupa: 332CA
Odată cu explozia în popularitate a Formulei 1 de acum câțiva ani, am început și eu să urmăresc acest sport. Încă de la început m-a atras echipa McLaren și în special Lando Norris, care, deși nu câștiga curse atunci când am început eu să urmăresc F1, a reușit între timp să urce pe prima treaptă a podiumului. Chiar dacă McLaren nu era cea mai puternică echipă în acea perioadă, am rămas un fan al lor.
În 2022, LEGO a lansat un set Technic cu monopostul McLaren de Formula 1, la scară 1:8, semi-funcțional, în stilul clasic Technic. Am economisit bani, iar spre finalul anului am reușit să-l cumpăr. Asamblarea a durat două zile (cu tot cu pauze), urmate de săptămâni întregi în care pur și simplu am admirat cum o echipă de ingineri a reușit să creeze acest model de la zero, DIN LEGO.
Dar încă din secunda în care am terminat construcția, m-am gândit: „Are suspensii, volan funcțional, motor V6 care învârte roțile… Scheletul e acolo, ar fi mișto să o pot conduce!” Din păcate, am rămas mult timp doar cu gândul acesta, fiind descurajat de lipsa experienței în „ingineria adevărată”. Știam să scriu cod, dar nu aveam nicio idee cum să transform această idee în realitate.
Și aici intervine materia PM. Când am aflat că trebuie să realizăm un proiect cu un microcontroller și că avem libertatea să alegem orice temă, atâta timp cât îndeplinește cerințele minime, am știut imediat ce voi face. A sosit momentul să-i dau viață mașinii.
Acum că știți povestea din spatele deciziei, e timpul să vedem și implementarea.
Proiectul are ca și controller un ESP32-S3-N16R8, care va avea următoarele funcții:
Comunicația se va face astfel:
Din moment ce comenzile utilizatorului vor genera schimbări de stare, vom folosi și întreruperi.
Astfel, conceptele din laborator utilizate sunt:
Piesa | Cantitate | Pret | Link |
---|---|---|---|
ESP32-S3-N16R8 | 1 | 5.75 (96% off) | AliExpress |
Driver de motor TB6612FNG | 1 | 24.99 | Optimus Digital |
Modul DC-DC Step-Down LM2596 | 1 | 16.49 | Optimus Digital |
Motor brushless FK-180SH-3244 | 1 | 14.99 | Optimus Digital |
Servomotor MG90S | 1 | 19.33 | Optimus Digital |
Suport de Baterii 2 x 18650 | 1 | 3.99 | Optimus Digital |
18650 LI-ION 3450mA 8A | 4 | 26.18 * 4 | eMAG |
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 |
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 |
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)
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)
Codul a fost dezvoltat in Arduino IDE.
Am folosit urmatoarele biblioteci:
Am creat o pagina web destul de elementara, care are doua joystick-uri:
Flow-ul programului:
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.
07.05.2025 - Au ajuns toate piesele
18.05.2025 - Am implementat hardware-ul
19.05.2025-Prezent - Am incercat sa fac conexiunea la masina din Lego, fara succes :(