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ă.

Descriere generală

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ă.

Hardware Design

Software Design

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>
#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");
      }
    }
  }
}

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/vradulescu/vlad_andrei.voicu.txt · Last modified: 2025/05/25 19:34 by vlad_andrei.voicu
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