Differences

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

Link to this comparison view

pm:prj2025:vradulescu:ana_maria.persenea [2025/05/25 01:28]
ana_maria.persenea [Hardware Design]
pm:prj2025:vradulescu:ana_maria.persenea [2025/05/26 22:38] (current)
ana_maria.persenea [Download]
Line 120: Line 120:
   * **Digital IO**: utilizat pentru senzorul ultrasonic (D12, D13)   * **Digital IO**: utilizat pentru senzorul ultrasonic (D12, D13)
  
-==== Implementare concept hardware ​====+=== Implementare concept hardware ===
  
-Conectare Arduino cu LCD și senzorul ultrasonic +^ {{ :pm:​prj2025:​vradulescu:​arduino_amp.jpg?​nolink&​300 |}} ^ {{ :​pm:​prj2025:​vradulescu:​motoare_amp.jpg?​nolink&​300 |}} ^ 
-<​html><​br><​br></​html>​ +== Conectare toate modulele simultan ==  
-Explicație funcționarela detectarea unui obiect în dreptul senzorului, display-ul LCD își schimbă mesajul din "Ready for use" în "​Preparing..." +{{ :​pm:​prj2025:​vradulescu:​complet_amp.jpg?​nolink&​700 |}}
-^ {{ :​pm:​prj2025:​vradulescu:​test_senzor_1.jpg?​nolink&​200 |}} ^ {{ :​pm:​prj2025:​vradulescu:​test_senzor_2.png?​nolink&​200 |}} ^+
  
-Conectare Arduino cu cele două servomotoare 
-^ {{ :​pm:​prj2025:​vradulescu:​test_motor_1.jpg?​nolink&​200 |}} ^ {{ :​pm:​prj2025:​vradulescu:​test_motor_1.2.jpg?​nolink&​200 |}} ^ 
  
-Conectare toate modulele simultan 
-^ {{ :​pm:​prj2025:​vradulescu:​test_complet_1.jpg?​nolink&​200 |}} ^ {{ :​pm:​prj2025:​vradulescu:​test_complet_2.jpg?​nolink&​200 |}} ^ 
  
 +===== Software Design =====
  
 +Implementarea software este complet funcțională și a fost testată cu succes pe circuitul hardware. Sistemul detectează prezența unui pahar folosind un senzor ultrasonic HC-SR04, declanșează o secvență automată de mișcare a două servomotoare pentru pornirea și oprirea robinetelor,​ afișează mesaje pe un ecran LCD pentru a înștiința utilizatorul în vederea procesului de preparare și revine în modul standby după finalizare. Logica este temporizată precis cu un timer hardware (Timer2) și un sistem de stare (servoState).
  
-===== Software Design ​=====+=== Motivele alegerii bibliotecilor folosite ​===  
 +  * <​Servo.h>​ - Folosită pentru controlul simplu și precis al servomotoarelor. Am aleas-o deoarece oferă o interfață rapidă și sigură pentru comenzi PWM pe pinii digitali ai Arduino-ului. 
 + 
 +  * <​LiquidCrystal_I2C.h>​ - Utilizată pentru afișajul LCD 16x2 cu interfață I2C. Am utilizat-o pentru afișarea clară a mesajelor doritei. 
 + 
 +  * <​Wire.h>​ - Necesară pentru comunicarea I2C între Arduino și ecranul LCD. 
 + 
 +=== Elemente de noutate al proiectului ​=== 
 +  * Utilizarea unui sistem de stare (servoState) temporizat cu un timer hardware ISR, ceea ce oferă mai multă precizie și fiabilitate decât metodele bazate pe delay. 
 + 
 +  * Afișaj inteligent care reflectă starea sistemului în timp real, rămânând pe mesajul "​Done"​ până când paharul este efectiv retras — asigurând un feedback natural pentru utilizator. 
 + 
 +=== Justificarea utilizării funcționalităților din laborator === 
 +În cadrul implementării proiectului am folosit următoarele elemente studiate la laborator:​ 
 + 
 +  * Întreruperi,​ Timere (Laboratorul 2) - Am configurat Timer2 în modul CTC, generând întreruperi la fiecare 1 ms, ceea ce a permis controlul precis al secvenței de mișcare a servomotoarelor fără a bloca execuția principală a programului,​ eliminând complet utilizarea funcției delay() și asigurând un comportament eficient al sistemului. 
 + 
 +  * PWM (Laboratorul 3) - Am folosit un semnal PWM generat prin biblioteca Servo.h pentru a controla automat mișcarea servomotoarelor,​ implementând acțiuni precise în funcție de detecția senzorului. 
 + 
 +  * I2C (Laboratorul 6) - Am folosit comunicația I2C pentru a controla LCD-ul și a realiza o interfață clară om-mașină. 
 + 
 +=== Structura proiectului și interacțiunea funcționalităților === 
 +Scheletul logic: 
 + 
 +  * loop() verifică constant distanța unui posibil obiect față de senzor. Dacă este detectat un pahar și sistemul este inactiv, setează: 
 +    * isRunningSequence = true 
 +    * servoState = 1 
 + 
 +  * ISR-ul Timer2: 
 +    * Rulează la fiecare 1ms. 
 +    * Incrementă timerCounter. 
 +    * Controlează trecerile între stări (servo1 -> servo2 -> finalizare). 
 + 
 +  * LCD-ul afișează mesaje în funcție de starea sistemului:​ 
 +    * "Glass detected"​ când senzorul detectează prezența unui pahar. 
 +    * "​Preparing…"​ când începe secvența și mișcarea servomotoarelor. 
 +    * "​Done"​ când e finalizată prepararea. 
 +    * "Ready for use" după îndepărtarea paharului. 
 +=== Arhivă cod === 
 +{{:​pm:​prj2025:​vradulescu:​mix_master_code.zip|}}
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +
 +^ {{ :​pm:​prj2025:​vradulescu:​rez_4_amp.jpg?​nolink&​400 |}} ^ {{ :​pm:​prj2025:​vradulescu:​rez_6_amp.jpg?​nolink&​400 |}} ^
 +^ {{ :​pm:​prj2025:​vradulescu:​rez_1_amp.jpg?​nolink&​400 |}} ^ {{ :​pm:​prj2025:​vradulescu:​rez_3_amp.jpg?​nolink&​400 |}} ^
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Video Demo: https://​youtube.com/​shorts/​NtXiDtzjC6U
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +A fost un proiect interesant, care la început părea simplu, dar pe parcurs am descoperit că implică mai multe provocări decât anticipasem. Una dintre dificultățile întâmpinate a fost legată de controlul servomotoarelor:​ inițial am folosit modelul SG90, însă acesta s-a dovedit prea slab pentru a acționa robineții. Am fost nevoita să trec la modele MG995, mai puternice, ceea ce a implicat și adăugarea unui driver pentru motoare și a unei surse externe de alimentare, pentru a le face să funcționeze corect. De asemenea, montarea întregului ansamblu a fost o provocare, fiind un proiect voluminos, atât din cauza componentelor electronice,​ cât și a dimensiunii rezervoarelor de lichid. Per total, a fost o experiență foarte interesantă,​ cu seri mai bune și altele mai putin bune, dar din care am învățat multe.
 ===== Download ===== ===== Download =====
- 
-<note warning> 
-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**. 
-</​note>​ 
- 
-===== Jurnal ===== 
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+Arhiva finala: {{:​pm:​prj2025:​vradulescu:​arhiva_finala_mixmaster.zip|}}
 </​note>​ </​note>​
 +
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Software** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +  * https://​projecthub.arduino.cc/​dsanmart/​smart-dispenser-6b125b 
-</note>+  * https://​github.com/​Labrahmi/​water-dispenser-system 
 +  * https://​circuitdigest.com/​microcontroller-projects/​arduino-automatic-water-dispenser 
 +  * https://​www.tiktok.com/​@arduinowithzen/​video/​7458840164228402439 
 + 
 +**Resurse Hardware** 
 +  * https://www.optimusdigital.ro/​ro/​placi-avr/​4561-placa-de-dezvoltare-compatibila-cu-arduino-uno-r3-atmega328p-atmega16u2-cablu-50-cm.html?​search_query=arduino+uno&​results=129 
 +  * https://​docs.arduino.cc/​resources/​datasheets/​A000066-datasheet.pdf 
 +  * https://​www.emag.ro/​motor-servo-mg995-11kg-180grade-ai209-s296/​pd/​DZSHBRBBM 
 +  * https://​www.electronicoscaldas.com/​datasheet/​MG995_Tower-Pro.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​optoelectronice-lcd-uri/​2894-lcd-cu-interfata-i2c-si-backlight-albastru.html 
 +  * https://​www.handsontec.com/​dataspecs/​module/​I2C_1602_LCD.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​senzori-senzori-ultrasonici/​2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html 
 +  * https://​www.handsontec.com/​dataspecs/​HC-SR04-Ultrasonic.pdf 
 +  * https://​www.optimusdigital.ro/​ro/​drivere-de-motoare-cu-perii/​145-driver-de-motoare-dual-l298n.html?​search_query=modul+tensiune&​results=660.html 
 +  * https://​www.handsontec.com/​dataspecs/​L298N%20Motor%20Driver.pdf
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/vradulescu/ana_maria.persenea.1748125716.txt.gz · Last modified: 2025/05/25 01:28 by ana_maria.persenea
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