This shows you the differences between two versions of the page.
pm:prj2025:vradulescu:vlad_andrei.voicu [2025/05/16 13:19] vlad_andrei.voicu created |
pm:prj2025:vradulescu:vlad_andrei.voicu [2025/05/25 19:34] (current) vlad_andrei.voicu [Software Design] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======= Cafetiera automata ====== | ||
+ | ===== Intro ===== | ||
Proiectul constă într-o cafetieră automată controlată wireless, cu ajutorul unui modul Bluetooth conectat la un Arduino Uno. Utilizatorul poate porni procesul de preparare a cafelei direct de pe telefon, trimițând comenzi către Arduino prin aplicația Bluetooth. La primirea comenzii, senzorul ultrasonic verifica daca este apa in rezervor dupa aceea,un servo motor acționează mecanic butonul de pornire al cafetierei. Astfel, întregul proces poate fi declanșat de la distanță, fără i ntervenție manuală directă. | Proiectul constă într-o cafetieră automată controlată wireless, cu ajutorul unui modul Bluetooth conectat la un Arduino Uno. Utilizatorul poate porni procesul de preparare a cafelei direct de pe telefon, trimițând comenzi către Arduino prin aplicația Bluetooth. La primirea comenzii, senzorul ultrasonic verifica daca este apa in rezervor dupa aceea,un servo motor acționează mecanic butonul de pornire al cafetierei. Astfel, întregul proces poate fi declanșat de la distanță, fără i ntervenție manuală directă. | ||
+ | |||
+ | ====== Descriere generală ===== | ||
+ | |||
+ | <note tip> | ||
+ | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | ||
+ | |||
+ | {{:pm:prj2025:vradulescu:cafetiera_automata.png?600|}} | ||
+ | </note> | ||
+ | |||
+ | ===== Hardware Design ===== | ||
+ | |||
+ | <note tip> | ||
+ | {{:pm:prj2025:vradulescu:edit_cafetiera.jpeg?300|}} | ||
+ | </note> | ||
+ | |||
+ | ===== Software Design ===== | ||
+ | |||
+ | |||
+ | <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 | ||
+ | * #include <SoftwareSerial.h> | ||
+ | |||
+ | <code cpp> | ||
+ | #include <SoftwareSerial.h> | ||
+ | #include <Servo.h> | ||
+ | #include <LiquidCrystal.h> | ||
+ | |||
+ | // Bluetooth | ||
+ | SoftwareSerial mySerial(7, 6); | ||
+ | |||
+ | // LCD | ||
+ | LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | ||
+ | |||
+ | // Servo | ||
+ | Servo servoMotor; | ||
+ | const int servoPin = 10; | ||
+ | |||
+ | // Senzor ultrasonic | ||
+ | const int trigPin = 9; | ||
+ | const int echoPin = 8; | ||
+ | |||
+ | // Configurări | ||
+ | const int posInitial = 0; | ||
+ | const int posApasare = 150; | ||
+ | const int pragNivelApa = 10; // cm | ||
+ | const int delayApasare = 500; | ||
+ | |||
+ | void setup() { | ||
+ | mySerial.begin(9600); | ||
+ | Serial.begin(9600); | ||
+ | |||
+ | lcd.begin(16, 2); | ||
+ | lcd.print("Sistem pornit"); | ||
+ | |||
+ | servoMotor.attach(servoPin); | ||
+ | servoMotor.write(posInitial); | ||
+ | |||
+ | pinMode(trigPin, OUTPUT); | ||
+ | pinMode(echoPin, INPUT); | ||
+ | } | ||
+ | |||
+ | long masoaraNivelApa() { | ||
+ | digitalWrite(trigPin, LOW); | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(trigPin, HIGH); | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(trigPin, LOW); | ||
+ | |||
+ | long durata = pulseIn(echoPin, HIGH); | ||
+ | long distanta = durata * 0.034 / 2; | ||
+ | return distanta; | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | if (mySerial.available()) { | ||
+ | char comanda = mySerial.read(); | ||
+ | Serial.print("Comanda primita: "); | ||
+ | Serial.println(comanda); | ||
+ | |||
+ | lcd.clear(); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Comanda: "); | ||
+ | lcd.print(comanda); | ||
+ | |||
+ | if (comanda == '1') { | ||
+ | long nivelApa = masoaraNivelApa(); | ||
+ | |||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Apa: "); | ||
+ | lcd.print(nivelApa); | ||
+ | lcd.print("cm"); | ||
+ | |||
+ | if (nivelApa > pragNivelApa) { | ||
+ | Serial.println("Apasare..."); | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Cafea pornita "); | ||
+ | |||
+ | servoMotor.write(posApasare); | ||
+ | delay(delayApasare); | ||
+ | servoMotor.write(posInitial); | ||
+ | } else { | ||
+ | Serial.println("Apa insuficienta"); | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Apa insuficienta"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | </note> | ||
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | <note tip> | ||
+ | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
+ | </note> | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | ===== 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> | ||
+ | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
+ | </note> | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | <note> | ||
+ | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
+ | </note> | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
+ |