Soap Dispenser

Introducere

Prezentarea pe scurt a proiectului vostru:

  • Dispenser de sapun automat cu senzor de proximitate si senzor de lichid
  • Elimina ideea de a apasa manual pe stica pentru a elibera sapun lichid
  • Poate elimina posibilitatea de a lua bacterii de pe o sticla non-igienica de sapun
  • Elimina riscul de a lua bacterii si anunta cand nu mai este sapun in sticla print-un LED

Descriere Generala

Schema bloc:

Hardware Design

  • Arduino Mega - 1
  • Servomotor SG90 - 2
  • Senzor ultrasonic de proximitate HC-SR04 - 1
  • Senzor nivel apa - 1
  • L.E.D. - 1
  • 330 Ohm Resistor - 1

Software Design

  • Arduino IDE
  • Additional Library: Servo.h
#include <Servo.h>   
Servo servo1;
Servo servo2;   
int trigPin = 5;  
int echoPin = 6;   
int servo1Pin = 9;
int servo2Pin = 8;
int led= 10;
long duration, dist, average;   
long aver[3];   //array for average
int lowerThreshold = 420;
int upperThreshold = 520;
 
// Sensor pins
#define sensorPower 7
#define sensorPin A0
 
// Value for storing water level
int val = 0;
 
int redLED = 2;
 
int readSensor() {
  digitalWrite(sensorPower, HIGH);
  delay(10);
  val = analogRead(sensorPin);
  digitalWrite(sensorPower, LOW);
  return val;
}
 
void setup() {    
  Serial.begin(9600);
  servo1.attach(servo1Pin);
  servo2.attach(servo2Pin);  
  pinMode(trigPin, OUTPUT);  
  pinMode(echoPin, INPUT);  
  servo1.write(0);       //close cap on power on
  servo2.write(0);
  delay(100);
 
  Serial.begin(9600);
  pinMode(sensorPower, OUTPUT);
  digitalWrite(sensorPower, LOW);
 
  // Set LED pin as an OUTPUT
  pinMode(redLED, OUTPUT);
 
  // Initially turn off the LED
  digitalWrite(redLED, LOW);
} 
 
void measure() {  
 digitalWrite(10,HIGH);
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
dist = (duration/2) / 29.1; //obtain distance
}
void loop() { 
  for (int i=0;i<=2;i++) {   //average distance
  measure();            
   aver[i]=dist;          
  delay(10);            //delay between measurements
  }
 dist=(aver[0]+aver[1]+aver[2])/3;  
 
if ( dist<15 ) {
 
  delay(1);
 servo1.write(0);
 servo2.write(0);  
 delay(3000);     
 servo1.write(150);
 servo2.write(150);  
 delay(1000);
 
 
 
 
 int level = readSensor();
 
 if (level <= 50) {
   Serial.println("Water Level: Low");
    digitalWrite(redLED, HIGH);
  }
  else if (level > 50) {
    Serial.println("Water Level: High");
    digitalWrite(redLED, LOW);
 
  }
  delay(1000);
}
 
}

Rezultate Obţinute

Concluzii

2 servo motoare SG90 nu sunt destul pentru a apasa pompa unei sticle de sapun lichid

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/prj2022/apredescu/soapdispenser.txt · Last modified: 2022/06/02 12:10 by petru.musat
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