Differences

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

Link to this comparison view

pm:prj2025:iotelea:elena.maholea [2025/05/26 20:42]
elena.maholea
pm:prj2025:iotelea:elena.maholea [2025/05/28 03:11] (current)
elena.maholea
Line 20: Line 20:
  
  
-{{ :​pm:​prj2025:​iotelea:​diagrama_alexiam.png?400 | Diagrama Smart Vacuum Cleaner }}+{{ :​pm:​prj2025:​iotelea:​diagrama_alexiamah.png?400 | Diagrama Smart Vacuum Cleaner }}
  
  
Line 37: Line 37:
 | Ventilator ​         | 5V DC Fan                                          | 1         | | Ventilator ​         | 5V DC Fan                                          | 1         |
 | Motor pentru mișcare ​        | Motor DC 3V-6V cu ax de 6mm                         | 2         | | Motor pentru mișcare ​        | Motor DC 3V-6V cu ax de 6mm                         | 2         |
-Baterii ​          | Baterie ​Li-Ion 18650 3.7V                          ​        | +Baterie ​          | Baterie ​9V         | 
-| Suport pentru ​baterii ​| -                    | 1         |+| Suport pentru ​baterie ​| -                    | 1         |
 | Fire jumper ​        | -   | -         | | Fire jumper ​        | -   | -         |
-| Senzor de vibrații ​    ​| ​SW-420 ​                          | 1         | +| Senzor de vibrații ​    ​| ​Senzor de vibratii ceramic ​                          | 1         | 
-| LED                    | LED 5mm alb (pentru semnalizare) ​                  | 1         |+| LED                    | LED 5mm albastru ​(pentru semnalizare) ​                  | 1         |
  
-{{ :​pm:​prj2025:​iotelea:​alexiam_pm2.png?800 | Diagrama ​Smart Vacuum Cleaner }}+{{ :​pm:​prj2025:​iotelea:​schematicfinal2.png?800 | Schematic ​Smart Vacuum Cleaner }}
  
  
-==== ► Descriere detaliată a componentelor hardware ====+==== • Descriere detaliată a componentelor hardware ====
  
 ==== Microcontroller – Arduino UNO Rev3 ==== ==== Microcontroller – Arduino UNO Rev3 ====
Line 81: Line 81:
 | IN2       | D3          | | IN2       | D3          |
 | IN3       | D4          | | IN3       | D4          |
-| IN4       ​| ​D5          | +| IN4       ​| ​D7          | 
-| ENA       ​| ​Jumper ON (activ permanent) ​+| ENA       ​| ​D5 
-| ENB       ​| ​Jumper ON (activ permanent) ​|+| ENB       ​| ​D6 |
 | +12V      | P+ (de la BMS) | | +12V      | P+ (de la BMS) |
 | GND       | P− comun cu Arduino și MOSFET | | GND       | P− comun cu Arduino și MOSFET |
Line 114: Line 114:
 | L1         | A0          | | L1         | A0          |
 | L2         | GND         | | L2         | GND         |
 +
 +
 +==== • Implementare hardware - Milestone 1 ====
 +
 +{{ :​pm:​prj2025:​iotelea:​alexiamahpm1.jpeg?​600 | Milestone 1 Hardware Smart Vacuum Cleaner }}
 +
 +==== • Implementare hardware - Milestone 2   ====
 +
 +{{ :​pm:​prj2025:​iotelea:​pm2.jpeg?​600 | Milestone 2 Hardware Smart Vacuum Cleaner }}
 +
 +==== • Implementare hardware - Finală ====
 +
 +{{ :​pm:​prj2025:​iotelea:​maholea_finalhw.jpeg?​600 | 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
 +
 +=== 3. Navigare ===
 +
 +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.
 +
 +[[https://​drive.google.com/​file/​d/​1Wte0fMdgGPsbugWVTxkHbJ1yJlkrOVbb/​view?​usp=sharing | 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ă =====
 +
 +Pentru descărcare:​ {{:​pm:​prj2025:​iotelea:​alexia-maholea_333cd_smart-vacuum2.zip|}}
 +
 +===== Bibliografie/​Resurse =====
 +
 +=== Resurse Software ===
 +
 +  * [[https://​www.arduino.cc/​en/​software|Arduino IDE]] – mediu de dezvoltare utilizat pentru scrierea și încărcarea codului pe placa Arduino.
 +
 +  * [[https://​www.arduino.cc/​reference/​en/​|Arduino Reference (Official)]] – documentația completă a funcțiilor și comenzilor din Arduino C++.
 +
 +  * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/​millis/​|Arduino millis() Function]] – pentru măsurarea timpului fără a bloca execuția cu delay().
 +
 +  * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​pulsein/​|pulseIn() – Arduino Reference]] – funcție utilizată pentru citirea duratei unui impuls de la senzorul ultrasonic.
 +
 +  * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​digital-io/​digitalwrite/​|digitalWrite() – Arduino Reference]] – pentru comenzi logice către pinii digitali.
 +
 +=== Resurse Hardware ===
 +
 +  * [[https://​content.arduino.cc/​assets/​UNO-TH_Rev3e_sch.pdf|Arduino UNO Rev3 Schematic]] – schema oficială a plăcii Arduino UNO.
 +
 +  * [[https://​components101.com/​ultrasonic-sensor-working-pinout-datasheet|HC-SR04 Ultrasonic Sensor Datasheet]] – fișa tehnică a senzorului de distanță.
 +
 +  * [[https://​components101.com/​motor-driver/​l298n-motor-driver|L298N Motor Driver Datasheet]] – informații despre modulul de control pentru motoare.
 +
 +  * [[https://​components101.com/​misc/​switch|Switch Basics – Components101]] – explicații despre comutatoare (DIP switch).
 +
 +  * [[https://​components101.com/​transistor/​irf520-mosfet|IRF520 MOSFET Datasheet]] – pentru controlul ventilatorului de 12V.
 +
 +  * [[https://​components101.com/​sensors/​piezoelectric-sensor|Piezoelectric Vibration Sensor Datasheet]] – documentație pentru senzorul piezoelectric de vibrații.
 +
 +  * [[https://​components101.com/​resistor|Resistor – Components101]] – informații despre utilizarea rezistorilor (ex: cu LED).
  
  
pm/prj2025/iotelea/elena.maholea.1748281333.txt.gz · Last modified: 2025/05/26 20:42 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