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 21:04]
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 }}
  
  
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 123: Line 123:
  
 {{ :​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 }}
 +
  
  
Line 131: Line 136:
 === 1. Inițializare === === 1. Inițializare ===
  
-Se configurează toți pinii: motoare, senzor ultrasonic, ventilator, LED, senzor de vibrații și comutatorul.+  * 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.+  * Se afișează un mesaj în consola serială că robotul așteaptă pornirea.
  
 === 2. Activare robot === === 2. Activare robot ===
  
-Când comutatorul este apăsat (LOW cu INPUT_PULLUP), ​se activează logica principală:+Când comutatorul este apăsat (valoare ​LOW deoarece este configurat ​cu INPUT_PULLUP), ​robotul intră în modul activ:
  
-Pornește ventilatorul (pin D10)+  * Pornește ventilatorul (pin D10)
  
-Se citește senzorul de vibrații (A2)+  * Se citește senzorul de vibrații (A2)
  
-Dacă se detectează o valoare peste prag, LED-ul (A1) se aprinde pentru 1.5 secunde+  * Dacă se detectează o valoare peste prag, LED-ul (A1) se aprinde pentru 1.5 secunde
  
 === 3. Navigare === === 3. Navigare ===
  
-Se trimite un impuls cu Trig (D12) și se citește ecoul cu Echo (D13)+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:
  
-Dacă nu sunt obstacole (distanța > 25cm): robotul ​merge înainte ​(IN1–IN4: D2–D5)+  * Robotul ​merge înainte.
  
-Dacă este obstacol: ​robotul ​se rotește ​pentru a ocoli+  * 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 === === 4. Dezactivare robot ===
Line 157: Line 172:
 Când comutatorul este dezactivat (HIGH): Când comutatorul este dezactivat (HIGH):
  
-Se opresc motoarele, LED-ul și ventilatorul+  * Se opresc motoarele, LED-ul și ventilatorul
  
-Se afișează în consolă „Switch OFF”+  * Se afișează în consolă „Switch OFF”
  
 ==== • Mediu de dezvoltare ==== ==== • Mediu de dezvoltare ====
Line 169: Line 184:
 ==== • Librării și funcții utilizate ==== ==== • Librării și funcții utilizate ====
  
-  * pinMode(), digitalWrite(),​ analogRead(),​ analogWrite() – pentru controlul părților hardware+  * pinMode(), digitalWrite(),​ analogRead(),​ analogWrite() – pentru ​configurarea și controlul părților hardware: motoare, LED, senzor de vibrații, ventilator.
  
-  * pulseIn() – pentru măsurarea impulsurilor de la senzorul ultrasonic+  * 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+  * 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).
  
-  * Serial.begin(),​ Serial.println() – pentru mesaje de debugging în consolă 
  
 ==== • Mediu de dezvoltare ==== ==== • Mediu de dezvoltare ====
Line 184: Line 204:
 ==== • Librării și surse third-party ==== ==== • Librării și surse third-party ====
  
-  * [[https://​github.com/​fdebrabander/​Arduino-LiquidCrystal-I2C-library|LiquidCrystal_I2C v1.1.2 by Frank de Brabander]] – bibliotecă pentru controlul LCD-ului 16x2 prin interfață I2C +  * `millis()`, `delay()` – funcții standard ​Arduino ​pentru temporizare fără blocaj 
-  * tone() – funcție Arduino standard ​pentru ​generarea semnalului PWM pentru buzzer pasiv +  * `pulseIn()– pentru ​măsurarea timpului de ecou de la senzorul ultrasonic HC-SR04 
-  * millis(), delay(), attachInterrupt() – funcții standard Arduino ​pentru ​controlul timpului ​și întreruperilor +  * `Serial.begin()``Serial.println()– pentru ​mesaje de stare și debugging în consolă 
- +  * `pinMode()`, `digitalWrite()``analogRead()` – pentru configurarea școntrolul părților hardware
- +
-<note tip> +
-Descrierea codului aplicaţiei (firmware): +
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party ​(e.g. Procyon AVRlib) +
-  * algoritmi şstructuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 203: Line 215:
 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. 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/​drive/u/2/my-drive ​| Smart Vacuum Cleaner DEMO]]+[[https://​drive.google.com/​file/d/1Wte0fMdgGPsbugWVTxkHbJ1yJlkrOVbb/view?​usp=sharing ​| Smart Vacuum Cleaner DEMO]]
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+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.
  
-<note warning>​ +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**.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script ​de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +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ă**.
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +^ Data ^ Activitate desfășurată ^ 
-Puteți avea și o secțiune de jurnal ​în care să poată urmări asistentul de proiect progresul proiectului+| 08.05.2025 | Alegerea temei proiectului – „Smart Vacuum Cleaner” și definirea funcționalităților de bază. | 
-</​note>​+| 10.05.2025 | Comandarea componentelor electronice:​ Arduino UNO, senzor ultrasonic, motoare, driver L298N, senzor vibrații, ventilator, MOSFET, LED-uri ș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 ===== ===== Bibliografie/​Resurse =====
Line 225: Line 246:
 === Resurse Software === === Resurse Software ===
  
-  * [[https://​www.arduino.cc/​reference/​en/​|Arduino Reference (Official)]] – Documentația limbajului ​Arduino C++ +  ​* [[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/​language/​functions/​external-interrupts/attachinterrupt/​|Arduino ​attachInterrupt()]] – Utilizare întreruperi externe + 
-  * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/millis/|Arduino millis() Function]] – Măsurarea timpului fără blocare ​(`delay`)+  ​* [[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 === === Resurse Hardware ===
  
-  * [[https://components101.com/sites/default/files/component_datasheet/A3144-Datasheet.pdf|A3144 Hall Effect ​Sensor Datasheet]] – Fișă tehnică ​completă pentru senzorul Hall A3144 +  * [[https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf|Arduino UNO Rev3 Schematic]] – schema oficială a plăcii Arduino UNO. 
-  * [[https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf|Arduino UNO Pinout ​(Schematic)]] – Schematics oficiale ​pentru ​placa UNO + 
- +  * [[https://components101.com/ultrasonic-sensor-working-pinout-datasheet|HC-SR04 Ultrasonic ​Sensor Datasheet]] – fiș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.1748282670.txt.gz · Last modified: 2025/05/26 21:04 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