Differences

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

Link to this comparison view

pm:prj2025:fstancu:albertina.enache [2025/05/18 23:32]
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 proiectului: +Totul început cu o întrebare simplă: **„Cum ar fi dacă un robot ar putea curăța singur ​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ă ideeinspirată 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 necunoscutsă 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țiemiș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țieicontrolul 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 proiectului ====== +Ideea nu 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 casebirouri sau spații industriale.
-{{:pm:​prj2025:​fstancu:​schemabloc-alberta.png?​300|}} +
-<note tip> +
-Proiectul este organizat ​în mai multe moduleconectate logic astfel:+
  
-- **Unitate de control (Arduino Uno):** coordonează întregul sistem, primește informații de la senzori și transmite comenzi către actuatori. +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.
-- **Modul de recunoaștere ​(ESP32-CAM):​** detectează numărul ​de înmatriculare al mașinii care urmează să fie parcată. +
-- **Modul de detecție (Senzor ultrasonic HC-SR04):** detectează prezența unei mașini în zona de intrare și trimite semnale către Arduino pentru inițierea procesului de parcare. +
-- **Modul de afișare (LCD 1602 + I2C):** afișează în timp real informații despre starea sistemului ​și locurile disponibile. +
-- **Modul de mișcare:** +
-  - **Servomotor:​** controlează bariera automată pentru accesul în sistemul de parcare. +
-  - **Motoare DC:** deplasează platforma mobilă care transportă mașinuța spre locul liber. +
-  - **Motor pas cu pas:** controlează mișcarea pe verticală a platformei, în cazul în care parcarea are mai multe nivele. +
-- **Modul de siguranță (Limitatori de cursă):** oferă feedback privind pozițiile extreme ale platformei și ale barierei pentru a preveni coliziunile. +
-**Modul de conectivitate (ESP-01):** permite comunicarea între Arduino ​și ESP32-CAM ​și poate transmite datele către o interfață web. +
-**Interfață web:** utilizatorul poate accesa statistici ​și informații despre starea sistemului și parcările efectuate.+
  
-Fiecare modul este alimentat și sincronizat software prin Arduino IDE, iar întregul sistem funcționează autonom, fără intervenție umană directă.+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>​ </​note>​
  
 +===== Descriere generală =====
  
 +{{:​pm:​prj2025:​fstancu:​imagine_pm_componente.jpg?​500|}}
 +<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.
  
-====== Hardware Design ======+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.
  
 +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.
 +
 +</​note>​
 +
 +===== Hardware Design =====
  
----- 
-{{:​pm:​prj2025:​fstancu:​imagine.hard-pm.jpg?​300|}} 
 <note tip> <note tip>
-**Listă de piese:** +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:
-- ATmega328P / Arduino Uno  +
-https://​www.emag.ro/​placa-dezvoltare-compatibila-arduino-uno-r3-ch340g-cu-cablu-usb-emg356/​pd/​D82QYSYBM/​+
  
 +  * **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
 +  ​
 +  * **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.
  
-- Modul driver motor L298N, General, 2 motoare, 40V, 3A, PCB +   
-https://​www.emag.ro/​modul-driver-motor-l298n-general-2-motoare-40v-3a-pcb-gd-0165/pd/DLPT18YBM/+ **LCD 16x2 I2C** – afișează distanța și mesajele de stare. Este conectat prin SDA (A4) și SCL (A5). 
 +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 
 +   
 + **LED și Buzzer** – oferă feedback vizual și auditiv:  
 +    * LED-ul se aprinde în timpul evitării obstacolelor. 
 +    * Buzzer-ul sună o singură dată la pornire.
  
 +  * **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
  
-- Motor pas cu pas RASK Nema 17, 42N.cm, 38mm, Negru/​Argintiu +</note>
-https://​www.emag.ro/​motor-pas-cu-pas-rask-nema-17-42n-cm-38mm-negru-argintiu-dyj-3dpj/​pd/​DC43H6YBM/+
  
 +{{:​pm:​prj2025:​fstancu:​schema123pm.jpg?​300|}}
 +{{:​pm:​prj2025:​fstancu:​masinutacurobotelpm.jpg?​200|}}
 +{{:​pm:​prj2025:​fstancu:​masinutapm.jpg?​200|}}
  
-- Senzor ultrasonic HC-SR04  +===== Software Design =====
-https://​www.emag.ro/​senzor-ultrasonic-hc-sr04-3/​pd/​D3NL48YBM/?​utm_source=mobile%20app&​utm_campaign=share%20product&​utm_medium=ios+
  
 +Software-ul aspiratorului inteligent este responsabil pentru interpretarea informațiilor primite de la senzori, luarea deciziilor și coordonarea acțiunilor hardware.
  
-- Driver de motor pas cu pasStepstick, A4988, Multicolor +Codul a fost scris și testat în **Arduino IDE**folosind limbajul C++. Am utilizat următoarele librării:
-https://​www.emag.ro/​driver-de-motor-pas-cu-pas-stepstick-a4988-multicolor-stepstick-a4988-mod/​pd/​DNR798MBM/​+
  
 +  * **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
  
--Kit platforma sasiu robot cu 4 motoare +==== Structura codului ====
-https://​www.emag.ro/​kit-platforma-sasiu-robot-cu-4-motoare-40938/​pd/​D4MJTWMBM/​+
  
--Placa dezvoltare ESP32-CAM WIFI+Bluetooth,​ cu modul camera OV2640, 2MP +Codul este organizat pe mai multe componente logice:
-https://​www.emag.ro/​placa-dezvoltare-esp32-cam-wifi-bluetooth-cu-modul-camera-ov2640-2mp-ai934/​pd/​D83Q4HMBM/​+
  
 +  * **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
  
-- Motor DC sau stepper pentru mișcarea liftului +==== Exemplu de comportament ====
-- 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:** +**La pornire:** 
-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.+  * Buzzer-ul emite un sunet scurt. 
 +  * LCD-ul afișează mesajul „Robot pornit”. 
 +  * Robotul verifică distanța ​și începe deplasarea.
  
-**Diagrame de semnal:** +**Când apare un obstacol:** 
-- Semnal PWM pentru controlul motoarelor +  * Robotul se oprește și scanează lateral. 
-- UART pentru comunicarea serială+  * Alege direcția cu spațiu mai liber. 
 +  * Afișează pe LCD „Evitam obstacol”.
  
-**Simulări:​** +==== Mediu de dezvoltare ====
-- Se pot face inițial în Tinkercad sau Proteus pentru validarea logicii ​de bază. +
-</​note>​+
  
-====== Software Design ====== +  * **Arduino IDE** versiunea 1.8.19 sau 2.x 
-<note tip> +  * **Placă**: Arduino ​UNO 
-**Mediu de dezvoltare:** Arduino ​IDE+  * **Viteza Serial Monitor**: 9600 baud
  
-**Librării:** +Codul este disponibil aicihttps://​github.com/enache-albertina/​Proiect-PM/​tree/​main
-- Servo.h (pentru controlul servomotoarelor) +
-SoftwareSerial.h (dacă se folosește USART pe pini ne-standard)+
  
-**Structuri și algoritmi:​** +===== Rezultate Obținute =====
-- State machine cu stări precum IDLE, CĂUTARE, LIFT_UP, PARCARE, RETURN +
-- Timers pentru întârzieri și sincronizări +
-- ADC pentru interpretarea senzorilor analogici +
-- PWM pentru controlul precis al motoarelor și LED-urilor +
-- ISR pentru tratarea evenimentelor de tip buton reset +
- +
-**Funcții implementate (planificate):​** +
-- `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> <note tip>
-Această secțiune va fi completată ulterior, după finalizarea implementării ​și testării sistemului. +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:
-</​note>​+
  
-====== Concluzii ====== +  * Aspiratorul pornește corect, cu feedback sonor (buzzer) și mesaj inițial pe LCD.  
-Această secțiune va fi redactată în etapa finală a proiectuluipe baza observațiilor și rezultatelor obținute.+  ​* ​ 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 motoarefă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”)
  
-====== Download ====== +Robotul a fost testat pe trasee simple ​cu cutii și cărți pe podea, iar comportamentul a fost conform așteptărilor.
-<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+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>​
  
-====== ​Jurnal ​====== +===== Concluzii ​=====
-<note tip> +
-**Etapa 1 – Documentare și planificare **+
  
-**Etapa 2 – Achiziție componente ​și testare individuală **+Proiectul ​*Aspirator Inteligentne-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.
  
-**Etapa 3 – Implementare module esențiale **+Pe parcursul dezvoltării am învățat:
  
-**Etapa 4 – Integrare ​și testare finală **+  ​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.
  
-**Etapa 5 – Documentație și prezentare **+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.
  
-</​note>​+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ă.
  
-====== Bibliografie/​Resurse ====== 
-<​note>​ 
-**Bibliografie:​** 
-- ATmega328P Microcontroller Datasheet 
-- 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:** 
-- Arduino.cc – Documentație oficială 
-- OCW PM 2025 – https://​ocw.cs.pub.ro/​courses/​pm 
-- Tutoriale și exemple: randomnerdtutorials.com,​ lastminuteengineers.com 
- 
-**Resurse Hardware:** 
-- Tutoriale senzori IR și ultrasunete 
-- Ghiduri de utilizare pentru servomotoare 
-- Scheme de conectare L298N cu Arduino 
-</​note>​ 
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
  
pm/prj2025/fstancu/albertina.enache.1747600375.txt.gz · Last modified: 2025/05/18 23:32 by albertina.enache
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