Smart Vacuum cleaner

Autor: Maholea Elena-Alexia
Grupa: 333CD
Github: https://github.com/alexia-maholea/Smart-Vacuum

Introducere

Proiectul intitulat „Vacuum Cleaner” reprezintă realizarea unui robot autonom de curățenie, construit cu ajutorul unui microcontroler Arduino Uno și mai mulți senzori. Robotul este capabil să se deplaseze pe o suprafață plană, să evite obstacolele cu ajutorul unui senzor ultrasonic și să aspire particule mici de pe jos printr-un ventilator alimentat separat.

Scopul principal al proiectului este dezvoltarea unui sistem funcțional, accesibil ca preț și ușor de reprodus, care să automatizeze procesul de curățenie pentru spații mici sau greu accesibile. Alegerea acestui proiect a fost motivată de dorința de a crea un dispozitiv util, care să combine mai multe concepte și tehnologii pentru a rezolva o problemă reală.

Ideea a pornit de la observația că majoritatea proiectelor cu roboți mobili se limitează la evitarea obstacolelor sau la linii de urmărire, fără o funcționalitate concretă care să simuleze o sarcină reală. Prin adăugarea unui ventilator și a unui senzor de vibrații, proiectul devine mai mult decât un simplu robot de test – devine un prototip de dispozitiv util, care simulează un aspirator portabil și inteligent.

Acest robot poate fi util pentru oricine vrea să înțeleagă cum funcționează dispozitivele care fac viața mai ușoară, cum ar fi aspiratoarele robotizate sau alte gadgeturi inteligente. Pentru mine, proiectul a fost o oportunitate de a pune în practică ce am învățat la curs, să înțeleg mai bine cum se integrează diverse piese și cum pot să creez un dispozitiv care să îndeplinească o sarcină reală. Cred că experiența aceasta mă va ajuta în viitor, mai ales dacă voi dori să lucrez la proiecte care îmbunătățesc viața de zi cu zi sau în domeniul tehnologiilor inovative.

Descriere generală

Acest sistem permite construirea unui robot de curățat autonom, care utilizează un Arduino UNO pentru a controla mai multe componente, inclusiv motoare, senzori și un ventilator pentru a aspira particulele de pe suprafețe. Robotul este echipat cu senzori de distanță pentru a detecta obstacolele și a naviga eficient prin încăpere, iar un senzor de vibrații și un LED sunt folosite pentru a semnaliza atunci când robotul trage obiecte mai mari sau mai solide de pe podea.

 Diagrama Smart Vacuum Cleaner

  • Arduino UNO reprezintă unitatea centrală de control, gestionând interacțiunea între senzorii de distanță, motorul pentru mișcare, ventilatorul pentru aspirație și senzorul de vibrații. Senzorul ultrasonic măsoară distanța până la obiecte și ajută robotul să evite coliziunile, în timp ce motorul DC cu ajutorul driverului L298N permite mișcarea acestuia în toate direcțiile.
  • Ventilatorul acționează pentru a colecta praful și resturile de mici dimensiuni, iar senzorul de vibrații, în combinație cu un LED de semnalizare, indică atunci când robotul a început să aspire un obiect mai mare sau mai greu, precum un obiect solid sau o piesă de mobilier mică.

Acest robot de curățat autonom este util pentru a explora concepte de automatizare și control al motoarelor, interacțiunea cu senzori și gestionarea unui sistem de operare autonom, fiind o metodă practică și interesantă de a învăța cum funcționează aceste tehnologii.

Hardware Design

Componente Model/Cod Cantitate
Microcontroller Arduino UNO Rev3 1
Senzor Ultrasonic HC-SR04 1
Driver pentru control motoare L298N Motor Driver Module 1
Ventilator 5V DC Fan 1
Motor pentru mișcare Motor DC 3V-6V cu ax de 6mm 2
Baterie Baterie 9V 1
Suport pentru baterie - 1
Fire jumper - -
Senzor de vibrații Senzor de vibratii ceramic 1
LED LED 5mm albastru (pentru semnalizare) 1

 Schematic Smart Vacuum Cleaner

• Descriere detaliată a componentelor hardware

Microcontroller – Arduino UNO Rev3

Placa Arduino UNO este centrul de control al întregului sistem. Ea gestionează senzorii, motoarele și activarea ventilatorului și LED-ului.

Ventilator 12V (cu control prin MOSFET)

Ventilatorul este alimentat la 12V și este activat printr-un MOSFET conectat la un pin digital al Arduino-ului.

Conectarea pinilor:

Pin Ventilator Conectare
V+ 12V (prin MOSFET)
GND GND comun
Control MOSFET (Gate) D10 Arduino

Senzor ultrasonic HC-SR04

Folosit pentru detecția obstacolelor din față.

Conectarea pinilor:

Pin HC-SR04 Pin Arduino
VCC 5V
GND GND
Trig D12
Echo D13

Driver motoare L298N + motoare DC

Controlează două motoare DC pentru deplasarea robotului.

Conectarea pinilor:

Pin L298N Pin Arduino
IN1 D2
IN2 D3
IN3 D4
IN4 D7
ENA D5
ENB D6
+12V P+ (de la BMS)
GND P− comun cu Arduino și MOSFET

Senzor piezoelectric de vibrații

Detectează obiecte solide aspirate de ventilator. Ieșirea este analogică.

Conectarea pinilor:

Pin Senzor Piezo Pin Arduino
S (semnal) A2
+ (VCC) 5V
– (GND) GND

LED semnalizare

Se aprinde când senzorul detectează vibrații puternice (ex: hârtie sau obiect).

Conectarea pinilor:

Pin LED Pin Arduino
+ (anod) A1
– (catod) GND (prin rezistor)

Comutator (DIP switch)

Pornește/oprește robotul printr-un pin analogic configurat cu INPUT_PULLUP.

Conectarea pinilor:

Pin Switch Pin Arduino
L1 A0
L2 GND

• Implementare hardware - Milestone 1

 Milestone 1 Hardware Smart Vacuum Cleaner

• Implementare hardware - Milestone 2

 Milestone 2 Hardware Smart Vacuum Cleaner

• Implementare hardware - Finală

 Final Hardware Smart Vacuum Cleaner

Software Design

• Descrierea fluxului aplicației

1. Inițializare

  • Se configurează toți pinii: direcție și viteză pentru motoare (IN1–IN4 și ENA/ENB), senzor ultrasonic (Trig/Echo), ventilator (MOSFET), LED de semnalizare, senzor de vibrații și comutatorul (switch).
  • Se afișează un mesaj în consola serială că robotul așteaptă pornirea.

2. Activare robot

Când comutatorul este apăsat (valoare LOW deoarece este configurat cu INPUT_PULLUP), robotul intră în modul activ:

  • Pornește ventilatorul (pin D10)
  • Se citește senzorul de vibrații (A2)
  • Dacă se detectează o valoare peste prag, LED-ul (A1) se aprinde pentru 1.5 secunde

Se trimite un impuls cu Trig (D12) și se citește ecoul cu Echo (D13). Dacă distanța detectată este mai mare de 20 cm:

  • Robotul merge înainte.
  • Se controlează ambele motoare în sens înainte.
  • Se setează o viteză mică (analogWrite pe enA și enB, ex: 100).

Dacă este detectat un obstacol:

  • Robotul se rotește pe loc (un motor înainte, unul înapoi).
  • Viteza de rotație este setată mai mare (analogWrite ~150).
  • După rotație, revine în bucla principală.

4. Dezactivare robot

Când comutatorul este dezactivat (HIGH):

  • Se opresc motoarele, LED-ul și ventilatorul
  • Se afișează în consolă „Switch OFF”

• Mediu de dezvoltare

  • Arduino IDE
  • Platforma hardware: Arduino UNO R3

• Librării și funcții utilizate

  • pinMode(), digitalWrite(), analogRead(), analogWrite() – pentru configurarea și controlul părților hardware: motoare, LED, senzor de vibrații, ventilator.
  • pulseIn() – pentru măsurarea duratei impulsurilor de la senzorul ultrasonic HC-SR04, folosită în calculul distanței față de obstacole.
  • millis() – pentru temporizarea aprinderii LED-ului fără blocarea execuției (spre deosebire de delay()).
  • Serial.begin(), Serial.print(), Serial.println() – pentru inițializarea și trimiterea de mesaje în consola serială, utile pentru debugging și afișarea distanței și vibrațiilor detectate.
  • delayMicroseconds() – pentru generarea impulsurilor precise necesare funcționării corecte a senzorului ultrasonic.
  • delay() – folosit în timpul întoarcerii robotului pentru a permite o rotație controlată (ex: delay(1100) în cazul obstacolelor).

• Mediu de dezvoltare

  • Arduino IDE
  • Platforma hardware: Arduino UNO R3

• Librării și surse third-party

  • `millis()`, `delay()` – funcții standard Arduino pentru temporizare fără blocaj
  • `pulseIn()` – pentru măsurarea timpului de ecou de la senzorul ultrasonic HC-SR04
  • `Serial.begin()`, `Serial.println()` – pentru mesaje de stare și debugging în consolă
  • `pinMode()`, `digitalWrite()`, `analogRead()` – pentru configurarea și controlul părților hardware

Rezultate Obţinute

Proiectul demonstrează cu succes integrarea mai multor componente hardware și controlul acestora într-un mod coerent și funcțional. Robotul poate fi extins cu funcționalități suplimentare precum mapare, colectare praf reală sau control prin aplicații mobile.

Pe lângă realizarea unui robot funcțional, proiectul a consolidat cunoștințele despre integrarea componentelor electronice și controlul lor logic. A reprezentat un exemplu practic de aplicare a noțiunilor teoretice studiate la curs.

Smart Vacuum Cleaner DEMO

Concluzii

Proiectul Smart Vacuum Cleaner a reprezentat o experiență practică valoroasă în integrarea componentelor electronice și programarea lor cu ajutorul platformei Arduino. Am reușit să construiesc un robot funcțional care poate detecta obstacole, se deplasează autonom și semnalează aspirarea obiectelor printr-un LED de avertizare.

Implementarea controlului vitezei motoarelor prin pinii PWM a îmbunătățit controlul mișcării, iar integrarea senzorului de vibrații a adăugat un plus de funcționalitate practică. Am înțeles mai bine importanța gestionării resurselor hardware și a debug-ului serial în proiecte embedded.

Proiectul poate fi extins în viitor prin adăugarea unui sistem de mapare a spațiului, control prin aplicație mobilă sau chiar utilizarea unor senzori suplimentari pentru o navigație mai inteligentă.

Jurnal

Data Activitate desfășurată
08.05.2025 Alegerea temei proiectului – „Smart Vacuum Cleaner” și definirea funcționalităților de bază.
10.05.2025 Comandarea componentelor electronice: Arduino UNO, senzor ultrasonic, motoare, driver L298N, senzor vibrații, ventilator, MOSFET, LED-uri și fire jumper.
13.05.2025 Schițarea diagramei hardware și testarea separată a senzorului ultrasonic și a senzorului de vibrații.
15.05.2025 Montarea pe breadboard a componentelor principale și testarea individuală a motoarelor DC cu driverul L298N.
17.05.2025 Configurarea MOSFET-ului pentru controlul ventilatorului și testarea ventilatorului la 12V.
20.05.2025 Implementarea funcției de evitare obstacole și a logicii pentru aprinderea LED-ului în caz de vibrații.
22.05.2025 Integrarea tuturor modulelor într-un singur sketch și optimizarea vitezei motoarelor cu PWM.
25.05.2025 Realizarea primei versiuni de montaj final – fixarea componentelor pe suport, cablare permanentă (lipire).
26.05.2025 Testare finală în condiții reale – verificarea comportamentului robotului pe suprafață plană și în jurul obstacolelor.

Arhivă

Bibliografie/Resurse

Resurse Software

  • Arduino IDE – mediu de dezvoltare utilizat pentru scrierea și încărcarea codului pe placa Arduino.

Resurse Hardware

pm/prj2025/iotelea/elena.maholea.txt · Last modified: 2025/05/28 03:11 by elena.maholea
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