Neste post você vai aprender a construir um dispenser automático de álcool em gel utilizando um Arduino, um sensor ultrassônico e um servo motor.
Em tempos que precisamos nos prevenir ao máximo de nos expormos a vírus e bactérias, é sempre bom termos o hábito de higienizarmos as mãos constantemente, não é mesmo? Por isso, esse projeto é um incentivo para que possamos aplicar a cultura maker em hábitos tão essenciais em nosso dia-a-dia como a higienização das mãos.
Esse projeto basicamente consiste em integrar o sensor ultrassônico e o servo motor ao Arduino para que possamos acionar o dispenser no momento em que aproximarmos as mãos.
No meu ponto de vista, o desafio maior do projeto é a parte mecânica, portanto, não se preocupe em seguir fielmente os passos como eu fiz, pode ser que você pense de uma outra forma, ou possui recursos que podem facilitar a montagem do projeto. O importante é praticar, pensar, criar, agir e no final ter algo funcional.
Se você quiser saber mais sobre sensor ultrassônico e servo motor no Arduino, dê uma olhadinha nos posts aqui do blog:
Material Necessário
- Arduino Uno
- Servo Motor
- Dispenser para álcool gel / sabonete líquido
- Sensor ultrassônico
- Bateria 9V
- Clip para bateria 9V
- Jumpers macho/fêmea
Circuito
A ligação deve ser feita como na imagem abaixo, o servo alimentado com 5V, o sensor ultrassônico alimentado com 3.3V, o pino do PWM do servo ligado no pino 9 do Arduino, os pinos Trigger e Echo do sensor ultrassônico ligados nos pinos 12 e 13 respectivamente do Arduino.
A bateria de 9V deve ser ligada em Vin, ou se preferir também pode ser utilizada uma fonte chaveada.
Código
Para esse projeto, criei uma biblioteca chamada Dispenser, que você pode baixar aqui. Descompacte a pasta Dispenser e coloque-a dentro da pasta libraries da IDE do Arduino, ou se estiver usando a IDE do Arduino clique em Sketch->Incluir Biblioteca->Adicionar Biblioteca .zip.
Ao adicionar a biblioteca, será possível carregar também o código de exemplo que coloquei nela, clique em Arquivos->Exemplos->Dispenser->Dispenser.
#include <Dispenser.h> Dispenser dispenser; // Cria um objeto Dispenser void setup() { Serial.begin(9600); dispenser.setDistanciaEmCentimetrosParaAcionar(5); //configura com quantos centímetros deve acionar o dispenser dispenser.setPinEcho(13); //configura o pino echo do sensor ultrassônico dispenser.setPinTrigger(12); //configura o pino trigger do sensor ultrassônico dispenser.setQuantidadeVezesAcionarDispenser(2); //configura quantas vezes o dispenser deve ser acionado ao aproximar as mãos dispenser.configurarDispenser(); //inicializa as configurações do dispenser } void loop() { //verifica se há presença no sensor ultrasônico if (dispenser.temMaosNaFrenteDoDispenser()) { Serial.println("Acionar dispenser!"); //aciona o dispenser dispenser.acionarDispenser(); } delay(500); }
Acoplando o servo
Para a fixação do servo no dispenser, utilizei madeira MDF com espessura de 8 mm. Então, fiz um furo com serra copo no diâmetro do acionador do dispenser (1 polegada), parafusei o servo motor nessa peça de madeira e a posicionei de modo que o braço do servo ficasse em 90° com o acionador.
Disposição do sensor ultrassônico
Para que o sensor ultrassônico ficasse em uma posição que capturasse a aproximação das mãos e não ficasse pendurado no dispenser, cortei uma garrafa pet com diâmetro próximo ao do dispenser, fixei o sensor nela e coloquei embaixo do dispenser, aí aproveitei para alojar todo o circuito nessa garrafa também.
Funcionamento
Abaixo, uma demonstração do projeto em funcionamento, nessa configuração o servo será acionado toda vez que as mãos estiverem a uma distância de até 5 cm do sensor ultrassônico. Também está configurado para que o servo acione duas vezes ao detectar aproximação.
Essas configurações podem ser alteradas no código, alterando os parâmetros dos métodos setQuantidadeVezesAcionarDispenser e setDistanciaEmCentimetrosParaAcionar da classe Dispenser.
Está vendo como é simples misturar cultura maker com hábitos importantes que podem nos ajudar a não adoecermos? Não se limite em terminar por aqui, incremente o projeto, o código é aberto, pode modificar, melhorar, submeter as alterações.
Faça o acionamento de uma forma diferente, altere a disposição das peças no projeto, teste com outros modelos de dispenser, use a criatividade para criar algum novo dispenser automático de álcool em gel! E compartilhe suas experiências aqui nos comentários.
Bom Dia
Estamos a fazer um projeto de final de curso , e estamos a tirar ideias do seu projeto, e estamos a ter algumas dificuldades uma vez que que nos estão a aparecer os seguintes erros:
In file included from C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src/Dispenser.h:4:0,
from C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\examples\Dispenser\Dispenser.ino:1:
C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src/SparkFunMLX90614.h:49:1: warning: ‘typedef’ was ignored in this declaration
typedef enum temperature_units {
^~~~~~~
In file included from C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src\SparkFunMLX90614.cpp:17:0:
C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src/SparkFunMLX90614.h:49:1: warning: ‘typedef’ was ignored in this declaration
typedef enum temperature_units {
^~~~~~~
In file included from C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src\Dispenser.h:4:0,
from C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src\Dispenser.cpp:1:
C:\Users\Admin\Documents\Arduino\libraries\handsanitizerdispenser-master\src\SparkFunMLX90614.h:49:1: warning: ‘typedef’ was ignored in this declaration
typedef enum temperature_units {
^~~~~~~
De momento temos o projeto só com o sensor ultrassónico e com o servo motor . De seguida iremos adicionar um sensor de temperatura
Se nos pudesse dar uma ajuda agradecíamos
Leonardo Pereira
Olá Leonardo,
Testei aqui e compilou normalmente, qual versão da Arduino IDE você está utilizando?
Aqui estou utilizando a 1.8.15, e fiz o procedimento de incluir a biblioteca .zip pelo menu Sketch.
Abraços!
Vinícius – Equipe MakerHero
Boa noite! Como faria para acrescentar um sensor de temperatura, para que se a pessoa se aproximar e a temperatura passar de 37,5° um buzzer apitar e um led vermelho acender?
Boa tarde Fátima, adicionei no repositório o código para funcionar com o sensor de temperatura, buzzer e LED.
Sensor utilizado:
https://www.makerhero.com/produto/sensor-de-temperatura-ir-mlx90614/
Qualquer dúvida estamos à disposição