This shows you the differences between two versions of the page.
pm:prj2025:iotelea:elena.maholea [2025/05/26 20:52] 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 | 2 | | + | | Baterie | Baterie 9V | 1 | |
- | | 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 116: | Line 116: | ||
- | ==== ► Implementare hardware - Milestone 1 ==== | + | ==== • Implementare hardware - Milestone 1 ==== |
{{ :pm:prj2025:iotelea:alexiamahpm1.jpeg?600 | Milestone 1 Hardware Smart Vacuum Cleaner }} | {{ :pm:prj2025:iotelea:alexiamahpm1.jpeg?600 | Milestone 1 Hardware Smart Vacuum Cleaner }} | ||
- | ==== ► Implementare hardware - Milestone 2 ==== | + | ==== • Implementare hardware - Milestone 2 ==== |
{{ :pm:prj2025:iotelea:pm2.jpeg?600 | Milestone 2 Hardware Smart Vacuum Cleaner }} | {{ :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). | ||
+ | |||