This shows you the differences between two versions of the page.
pm:prj2025:fstancu:albertina.enache [2025/05/18 22:44] albertina.enache |
pm:prj2025:fstancu:albertina.enache [2025/05/28 12:44] (current) albertina.enache [Descriere generală] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== SmartPark: Simulare Embedded a unei Parcări Inteligente ====== | ||
+ | ====== Aspirator Inteligent ====== | ||
+ | ===== Introducere ===== | ||
- | ====== Introducere ====== | ||
<note tip> | <note tip> | ||
- | Prezentarea pe scurt a proiectului: | + | Totul a început cu o întrebare simplă: **„Cum ar fi dacă un robot ar putea curăța singur o cameră?”** |
- | * Sistem miniatural care simulează o parcare automatizată pe etaje, capabilă să detecteze locuri libere și să mute o platformă cu o mașinuță la un loc disponibil. | + | Această idee, inspirată din viața de zi cu zi, a stat la baza conceperii unui *aspirator autonom inteligent*, un dispozitiv capabil să se miște printr-un spațiu necunoscut, să detecteze obstacolele și să aleagă în timp real calea optimă de ocolire. |
- | * Scopul este familiarizarea cu tehnologii embedded printr-o aplicație practică ce combină detecție, mișcare controlată și interfață om-mașină. | + | |
- | * Ideea a pornit de la parcările aglomerate din mediul urban și interesul pentru automatizarea acestui proces la scară redusă. | + | |
- | * Este util pentru înțelegerea practică a controlului cu microcontroler, ideal pentru testare, demonstrații educaționale și prototipare. | + | |
- | </note> | + | |
- | ====== Descriere generală ====== | + | Am dorit să creăm nu doar un robot care se mișcă, ci un sistem **autonom**, capabil să *„înțeleagă”* mediul înconjurător și să reacționeze fără intervenția utilizatorului. Scopul proiectului a fost să îmbinăm teoria învățată despre microcontrolere, senzori, actuatori și algoritmi de decizie, într-un prototip funcțional și util. |
- | <note tip> | + | |
- | Proiectul conține următoarele module: | + | |
- | - **Modul Control (ATmega328P):** gestionează logica aplicației, controlul motoarelor și citirea senzorilor. | + | |
- | - **Modul Mișcare (Motoare DC și servo):** controlează liftul vertical și mutarea platformei în locul liber. | + | |
- | - **Modul Detecție (Senzori IR):** verifică dacă un loc este liber sau ocupat. | + | |
- | - **Modul Feedback (LED-uri RGB + Buzzer):** indică starea sistemului și oferă alerte sonore. | + | |
- | - **Interfață Serială (USART):** permite interacțiunea utilizatorului cu sistemul pentru comenzi precum PARK, RESET, STATUS. | + | |
- | Aceste componente interacționează secvențial, într-un flux controlat de temporizări și întreruperi, fiind gestionate software în Arduino IDE. | + | |
- | </note> | + | |
- | ======Schema bloc a proiectului====== | + | Ideea nu a fost inspirată doar de curiozitate tehnică, ci și de dorința de a crea ceva cu aplicabilitate reală: un model redus al unor sisteme moderne de curățenie folosite în case, birouri sau spații industriale. |
+ | Prin realizarea acestui proiect am avut ocazia să înțelegem complexitatea interacțiunii dintre componentele hardware (precum senzorii de distanță sau motoarele) și controlul software care le coordonează. În același timp, am învățat cum să comunicăm cu utilizatorul printr-un afișaj, și cum să semnalizăm acțiunile robotului cu LED-uri și sunete. | ||
- | ====== Hardware Design ====== | + | Mai mult decât un simplu proiect, **aspiratorul nostru inteligent** este o reflecție a ceea ce înseamnă gândirea sistemică, colaborarea și pasiunea pentru tehnologie. |
+ | </note> | ||
- | {{:pm:prj2025:fstancu:imagine.hard-pm.jpg|}} | + | ===== Descriere generală ===== |
- | <note tip> | + | |
- | **Listă de piese:** | + | |
- | - ATmega328P / Arduino Uno | + | |
- | - Driver motor L298N | + | |
- | - Motor DC sau stepper pentru mișcarea liftului | + | |
- | - 2x servomotoare pentru mișcarea platformei | + | |
- | - 3x senzori IR sau ultrasonic pentru detecția locurilor | + | |
- | - 3x LED-uri RGB | + | |
- | - 1x buzzer | + | |
- | - 1x modul FTDI pentru comunicare serială | + | |
- | - Butoane reset/manual | + | |
- | - Fire, breadboard sau placă prototip, structură fizică printată 3D sau construită manual | + | |
- | **Scheme electrice:** | + | {{:pm:prj2025:fstancu:imagine_pm_componente.jpg?500|}} |
- | - Se vor include conexiunile către pinii digitali (pentru PWM, LED, butoane), analogici (pentru senzori), cât și conexiunile de alimentare pentru motor și LED-uri. | + | <note tip> După definirea ideii și stabilirea scopului, am trecut la proiectarea efectivă a sistemului. Aspiratorul inteligent este construit pe baza unei structuri modulare, în care fiecare componentă are un rol bine definit și contribuie la comportamentul general al robotului. |
+ | În centrul sistemului se află placa Arduino UNO, care acționează ca un „creier” al robotului, preluând informații de la senzori și luând decizii în funcție de acestea. Pentru a detecta obstacolele, am utilizat un senzor ultrasonic HC-SR04, amplasat frontal, iar pentru a analiza spațiul din stânga și din dreapta, am montat acest senzor pe un servomotor SG90 care permite rotirea sa în unghiuri precise. | ||
- | **Diagrame de semnal:** | + | Mișcarea robotului este realizată prin două motoare DC, controlate de un driver L298N, ce permite reglarea direcției și vitezei fiecărei roți. Astfel, robotul poate merge înainte, se poate opri, sau poate vira stânga și dreapta în funcție de obstacolele întâlnite. |
- | - Semnal PWM pentru controlul motoarelor | + | |
- | - UART pentru comunicarea serială | + | Pentru a oferi feedback vizual și auditiv, am inclus un LED care se aprinde în timpul evitării obstacolelor și un buzzer care semnalizează pornirea sistemului. În plus, un ecran LCD I2C 16x2 afișează informații utile, precum distanța măsurată sau starea curentă a robotului („Mergem înainte”, „Ocolim obstacolul”, etc). |
+ | |||
+ | Interacțiunea dintre aceste module este una continuă: senzorul detectează, Arduino analizează, motoarele execută, iar utilizatorul este informat prin ecran și LED/buzzer. Această comunicare între hardware și software transformă un set de componente simple într-un sistem inteligent, capabil să se adapteze mediului său. | ||
- | **Simulări:** | ||
- | - Se pot face inițial în Tinkercad sau Proteus pentru validarea logicii de bază. | ||
</note> | </note> | ||
- | ====== Software Design ====== | + | ===== Hardware Design ===== |
<note tip> | <note tip> | ||
- | **Mediu de dezvoltare:** Arduino IDE | + | Pentru realizarea aspiratorului inteligent am utilizat componente hardware accesibile și ușor de integrat, fiecare având un rol precis în funcționarea sistemului. Mai jos este descrisă structura hardware: |
- | **Librării:** | + | * **Arduino UNO** – unitatea principală de control. Toate modulele sunt conectate la ea, iar deciziile de deplasare și afișare sunt luate pe baza informațiilor primite de la senzori. https://www.bitmi.ro/placa-de-dezvoltare-compatibila-arduino-uno-r3-atmega328p-10358.html |
- | - Servo.h (pentru controlul servomotoarelor) | + | |
- | - SoftwareSerial.h (dacă se folosește USART pe pini ne-standard) | + | * **Placa de extensie V5.0** – facilitează conectarea componentelor și distribuția tensiunii. Ne-a ajutat să evităm cablajul haotic. Este disponibilă individual. https://www.bitmi.ro/placa-de-dezvoltare-compatibila-arduino-uno-r3-atmega328p-10358.html |
+ | |||
+ | * **Senzor ultrasonic HC-SR04** – măsoară distanța față de obstacole și este montat pe un servomotor pentru a detecta atât în față, cât și lateral. | ||
+ | https://www.optimusdigital.ro/ro/senzori-senzori-de-distanta/8152-senzor-de-distana-ultrasonic-ioe-sr05-cu-interfaa-seriala-3-55-v.html?search_query=senzor+ultrasonic&results=42 | ||
+ | |||
+ | * **Servomotor SG90** – rotește senzorul la unghiuri de 30°, 90° și 150° pentru a oferi robotului o „vedere laterală” și a alege direcția optimă de ocolire. | ||
+ | https://www.optimusdigital.ro/ro/motoare-servomotoare/26-micro-servomotor-sg90.html | ||
+ | |||
+ | * **2x Motoare DC** – asigură mișcarea robotului (înainte/stânga/dreapta), fiecare fiind conectat la câte un canal al driverului. | ||
+ | https://www.bitmi.ro/set-motor-dc-3v-6v-cu-reductor-si-roata-11227.html | ||
+ | * **Driver motoare L298N** – modulează semnalele PWM și logice (IN1–IN4) venite de la Arduino pentru a controla motoarele. | ||
- | **Structuri și algoritmi:** | + | |
- | - State machine cu stări precum IDLE, CĂUTARE, LIFT_UP, PARCARE, RETURN | + | **LCD 16x2 I2C** – afișează distanța și mesajele de stare. Este conectat prin SDA (A4) și SCL (A5). |
- | - Timers pentru întârzieri și sincronizări | + | https://www.emag.ro/modul-de-afisare-lcd-1602-accesorii-pentru-placa-de-extensie-a-ecranului-pentru-portul-serial-raspberry-pi-picoi2c-ds241030530110/pd/D2QG7RYBM/?ref=graph_profiled_similar_fallback_1_18&provider=rec&recid=rec_49_d333e6c436ab874c8f3e945bd6c8b373e824df941622125ef07d5738faa83964_1748381582&scenario_ID=49 |
- | - ADC pentru interpretarea senzorilor analogici | + | |
- | - PWM pentru controlul precis al motoarelor și LED-urilor | + | **LED și Buzzer** – oferă feedback vizual și auditiv: |
- | - ISR pentru tratarea evenimentelor de tip buton reset | + | * LED-ul se aprinde în timpul evitării obstacolelor. |
+ | * Buzzer-ul sună o singură dată la pornire. | ||
- | **Funcții implementate (planificate):** | + | * **Alimentare** – un pachet de baterii (6–12V) conectat prin placa de extensie și driverul L298N pentru a alimenta sistemul fără a suprasolicita placa Arduino. https://www.bitmi.ro/modul-driver-l298n-cu-punte-h-dubla-pentru-motoare-dc-stepper-10400.html |
- | - `verificaLocuri()` – citește starea senzorilor | + | |
- | - `alegeLocLiber()` – selectează automat un loc disponibil | + | |
- | - `mutaLift()` – controlează motorul vertical | + | |
- | - `mutaPlatforma()` – poziționează platforma la locul alocat | + | |
- | - `comunicareSeriala()` – interpretează comenzile trimise de utilizator | + | |
- | </note> | + | |
- | ====== Rezultate Obţinute ====== | ||
- | <note tip> | ||
- | Această secțiune va fi completată ulterior, după finalizarea implementării și testării sistemului. | ||
</note> | </note> | ||
- | ====== Concluzii ====== | + | {{:pm:prj2025:fstancu:schema123pm.jpg?300|}} |
- | Această secțiune va fi redactată în etapa finală a proiectului, pe baza observațiilor și rezultatelor obținute. | + | {{:pm:prj2025:fstancu:masinutacurobotelpm.jpg?200|}} |
+ | {{:pm:prj2025:fstancu:masinutapm.jpg?200|}} | ||
- | ====== Download ====== | + | ===== Software Design ===== |
- | <note warning> | + | |
- | Fișierele vor include: | + | |
- | - Cod sursă în C/C++ pentru Arduino | + | |
- | - Scheme electrice realizate în Fritzing sau alte editoare | + | |
- | - Fișier README cu pași de programare și folosire | + | |
- | - Script de upload (opțional) | + | |
- | Namespace: :pm:prj2025:cc:enache_albertina | + | Software-ul aspiratorului inteligent este responsabil pentru interpretarea informațiilor primite de la senzori, luarea deciziilor și coordonarea acțiunilor hardware. |
- | </note> | + | |
- | ====== Jurnal ====== | + | Codul a fost scris și testat în **Arduino IDE**, folosind limbajul C++. Am utilizat următoarele librării: |
- | <note tip> | + | |
- | **Etapa 1 – Documentare și planificare ** | + | |
- | **Etapa 2 – Achiziție componente și testare individuală ** | + | * **Servo.h** – pentru controlul servomotorului SG90 |
+ | * **LiquidCrystal_I2C.h** – pentru interacțiunea cu ecranul LCD | ||
+ | * **Wire.h** – pentru comunicare I2C | ||
+ | * **pulseIn()** – funcție nativă Arduino pentru măsurarea duratei ecoului ultrasonic | ||
- | **Etapa 3 – Implementare module esențiale ** | + | ==== Structura codului ==== |
- | **Etapa 4 – Integrare și testare finală ** | + | Codul este organizat pe mai multe componente logice: |
- | **Etapa 5 – Documentație și prezentare ** | + | * **Inițializare**: Se configurează pinii pentru motoare, senzori, servo, buzzer, LED și LCD, și se setează servomotorul în poziția centrală (90°). |
+ | |||
+ | * **Loop**: Se măsoară distanța în față. Dacă este suficient spațiu, robotul merge înainte. Dacă apare un obstacol, senzorul se rotește în lateral pentru a analiza mediul și a decide direcția de ocolire. | ||
+ | |||
+ | * **Funcții auxiliare**: | ||
+ | - `masurareDistantaLa(unghi)` – rotește senzorul și măsoară distanța | ||
+ | - `mergiInainte()`, `vireazaStanga()`, `vireazaDreapta()` – controlează direcția | ||
+ | - `opresteMotoare()` – oprește mișcarea | ||
- | </note> | + | ==== Exemplu de comportament ==== |
- | ====== Bibliografie/Resurse ====== | + | **La pornire:** |
- | <note> | + | * Buzzer-ul emite un sunet scurt. |
- | **Bibliografie:** | + | * LCD-ul afișează mesajul „Robot pornit”. |
- | - ATmega328P Microcontroller Datasheet | + | * Robotul verifică distanța și începe deplasarea. |
- | - L298N Dual H-Bridge Motor Driver Datasheet | + | |
- | - Materiale curs/laborator PM – Universitatea Politehnica București | + | |
- | - Articole și publicații privind sisteme embedded și control mecatronic | + | |
- | **Resurse Software:** | + | **Când apare un obstacol:** |
- | - Arduino.cc – Documentație oficială | + | * Robotul se oprește și scanează lateral. |
- | - OCW PM 2025 – https://ocw.cs.pub.ro/courses/pm | + | * Alege direcția cu spațiu mai liber. |
- | - Tutoriale și exemple: randomnerdtutorials.com, lastminuteengineers.com | + | * Afișează pe LCD „Evitam obstacol”. |
- | **Resurse Hardware:** | + | ==== Mediu de dezvoltare ==== |
- | - Tutoriale senzori IR și ultrasunete | + | |
- | - Ghiduri de utilizare pentru servomotoare | + | * **Arduino IDE** versiunea 1.8.19 sau 2.x |
- | - Scheme de conectare L298N cu Arduino | + | * **Placă**: Arduino UNO |
+ | * **Viteza Serial Monitor**: 9600 baud | ||
+ | |||
+ | Codul este disponibil aici: https://github.com/enache-albertina/Proiect-PM/tree/main | ||
+ | |||
+ | ===== Rezultate Obținute ===== | ||
+ | |||
+ | <note tip> | ||
+ | După implementarea completă a hardware-ului și software-ului, aspiratorul inteligent a fost testat într-un mediu de simulare reală (pe podea, cu obstacole plasate în față). Sistemul a demonstrat o funcționare stabilă, cu următoarele rezultate pozitive: | ||
+ | |||
+ | * Aspiratorul pornește corect, cu feedback sonor (buzzer) și mesaj inițial pe LCD. | ||
+ | * Poate detecta obstacole aflate în fața lui și decide dacă este necesară o evitare. | ||
+ | * Servomotorul reușește să rotească senzorul ultrasonic la unghiurile prestabilite (30°, 90°, 150°). | ||
+ | * Direcția de ocolire este selectată corect în funcție de distanțele măsurate lateral. | ||
+ | * Mișcarea înainte și virajele sunt controlate precis de către motoare, fără blocaje sau drift. | ||
+ | * LED-ul se aprinde în timpul evitării obstacolelor pentru semnalizare vizuală. | ||
+ | * LCD-ul afișează în timp real distanța măsurată și mesajele de stare („Mergem înainte”, „Evitam obstacol”). | ||
+ | |||
+ | Robotul a fost testat pe trasee simple cu cutii și cărți pe podea, iar comportamentul a fost conform așteptărilor. | ||
+ | |||
+ | Nu s-au observat erori critice de funcționare, iar toate componentele hardware au fost alimentate stabil cu ajutorul plăcii de extensie. | ||
+ | https://youtube.com/shorts/8GMhqC1xah8?si=gH2okfgt58kvYBaDhttps://youtube.com/shorts/8GMhqC1xah8?si=gH2okfgt58kvYBaD | ||
</note> | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | ===== Concluzii ===== |
+ | |||
+ | Proiectul *Aspirator Inteligent* ne-a oferit oportunitatea de a aplica cunoștințele teoretice despre sisteme embedded într-un context practic, construit de la zero. Prin combinarea componentelor hardware și programarea logicii de decizie, am reușit să realizăm un sistem funcțional, autonom și modular. | ||
+ | |||
+ | Pe parcursul dezvoltării am învățat: | ||
+ | |||
+ | * cum să integrăm senzori, servomotoare și actuatori cu o placă de control Arduino; | ||
+ | * cum să structurăm codul pentru un comportament reactiv în timp real; | ||
+ | * cum să oferim interacțiune om-mașină prin semnalizare audio-vizuală și afișaj LCD; | ||
+ | * importanța alimentării corecte și a cablajului curat în sisteme autonome. | ||
+ | |||
+ | Proiectul poate fi extins în viitor cu funcții avansate, precum: | ||
+ | * cartografiere a spațiului (SLAM), | ||
+ | * detecție și clasificare a obiectelor cu ESP32-CAM, | ||
+ | * integrare cu aplicații mobile pentru control și monitorizare. | ||
+ | |||
+ | Realizarea acestui sistem ne-a confirmat faptul că și cu resurse limitate, se pot construi soluții inteligente cu potențial real în domeniul automatizărilor. Aspiratorul nostru reprezintă nu doar un proiect finalizat, ci o bază solidă pentru idei mai complexe și aplicabile în viața reală. | ||
+ | |||
+ | |||