Esse é um projeto bem simples e de baixo custo para automatizar o uso de sabão na sua casa, pode ser usado tanto para lavagens das mãos quanto na pia para louça, bastando apenas aproxima as mãos ou a espoja para que o sabão. O projeto e ainda um protótipo, o que o torna bem rustico e arcaico, enfim o mais importante e o funcionamento, vamos ao tutorial.
Para isto vamos utilizar um;
_ 1x Arduíno
_1x sensor ultrassônico .
_1x bomba d'água submersa de 5v.
_1 mini protoboard .
e fios jumpers.
Utilizamos uma protoboard pois o Arduíno só possui uma saída de 5v.
Conexões;
-Conecte o fio 5V do Arduíno na entrada VCC (+) do sensor ultrassônico e em um dos fios da bomba.
-Conecte o fio GND do Arduíno na entrada GND do sensor ultrassônico e em um dos fios da bomba. .
-Conecte o fio D13 do Arduino no fio que restou da bomba...
-Conecte o fio D7 do Arduino na entrada echo do sensor ultrassonico.
-Conecte o fio D8 do Arduino na entrada trig do sensor ultrassonico.
Coloque a bomba submersa em vasilhame ou copo com sabão liquido de preferencia um pouco diluído, coloque uma borrachinha na bomba para passagem do sabão conectada a uma haste, nesta mesma haste,na base superior coloque o sensor ultrassônico.
Copie o código fonte abaixo para seu Arduíno.
//Inicio do código
#define trig 8 //ligue o trig no pino 7
#define echo 7 //ligue o echo no pino 6
int bomba = 13;
void setup() {
Serial.begin (9600);
pinMode(trig, OUTPUT); //Definição de pino sensor
pinMode(echo, INPUT); //Definição de pino sensor
pinMode(bomba,OUTPUT); //Definição de pino bomba
}
void loop() {
long duracao, distancia;
digitalWrite(trig, LOW); //pino trig é setado como LOW
delayMicroseconds(2); // 2 microssegundos de delay
digitalWrite(trig, HIGH); //pino trig setado como HIGH
delayMicroseconds(10); //10 microssegundos de delay
digitalWrite(trig, LOW); //pino trig setado como LOW novamente
duracao = pulseIn(echo, HIGH);
//}
//Esse tempo retornado pela função pulseIn é o tempo entre a chamada e o pino entrar em HIGH
//O valor retornado vem dobrado pois é o valor de ida e volta
distancia = (duracao/2) / 29.1;
//Serial.print(distancia);
//Serial.println(" cm");
if (distancia <18) // Se a distancia for menor que 18 liga a bomba
digitalWrite(bomba,HIGH);
else
digitalWrite(bomba,LOW); //Se não for desliga
delay(500); //Delay
}
//Fim do codigo
Copie o código fonte abaixo para seu Arduíno.
//Inicio do código
#define trig 8 //ligue o trig no pino 7
#define echo 7 //ligue o echo no pino 6
int bomba = 13;
void setup() {
Serial.begin (9600);
pinMode(trig, OUTPUT); //Definição de pino sensor
pinMode(echo, INPUT); //Definição de pino sensor
pinMode(bomba,OUTPUT); //Definição de pino bomba
}
void loop() {
long duracao, distancia;
digitalWrite(trig, LOW); //pino trig é setado como LOW
delayMicroseconds(2); // 2 microssegundos de delay
digitalWrite(trig, HIGH); //pino trig setado como HIGH
delayMicroseconds(10); //10 microssegundos de delay
digitalWrite(trig, LOW); //pino trig setado como LOW novamente
duracao = pulseIn(echo, HIGH);
//}
//Esse tempo retornado pela função pulseIn é o tempo entre a chamada e o pino entrar em HIGH
//O valor retornado vem dobrado pois é o valor de ida e volta
distancia = (duracao/2) / 29.1;
//Serial.print(distancia);
//Serial.println(" cm");
if (distancia <18) // Se a distancia for menor que 18 liga a bomba
digitalWrite(bomba,HIGH);
else
digitalWrite(bomba,LOW); //Se não for desliga
delay(500); //Delay
}
//Fim do codigo
Funcionamento
o sensor fara medições constantes da base superior da haste em que ele foi posicionado, e sempre que essa medição for menor que 18 centímetros a bomba sera acionada para despejar sabão, sempre que algum objeto ou a mão for posicionada abaixo do sensor a leitura sera inferior a 18 centímetros ocasionando o despejo de sabão....
Veja o vídeo de seu funcionamento abaixo.
Veja outro vídeo que criei abaixo, este não utiliza Arduíno, e ao invés do sensor ultrassônico utiliza sensor PIR .