Hoje, vamos construir o circuito de um Dispenser de Álcool em Gel Automático e, para isso, iremos utilizar uma placa Arduino NANO e alguns componentes eletrônicos.
Especialistas da saúde e órgãos governamentais sempre recomendam mantermos uma certa higienização das mãos para, assim, evitar a propagação de diversas doenças que são transmitidas por contato físico direto.
Essa medida se intensificou por conta da chegada do Novo Corona Vírus e nunca esteve tão forte em 2020.
Acredita-se que mesmo após a vacinação em massa da população, estabelecimentos comerciais, empresas, hospitais e qualquer lugar que preza pela boa saúde irão manter essa medida por um bom tempo para garantir a segurança de todos os indivíduos.
Visto isso, optamos por trazer este tutorial para makers e entusiastas de projetos com Arduino para terem a chance de desenvolverem um protótipo de um Dispenser de Álcool em Gel que conta com duas versões diferentes neste tutorial:
- A primeira conta com uma mini bomba de água submersa JT100, e;
- A segunda conta com uma mini bomba de sucção de alto fluxo RS-385.
Talvez, após a construção deste projeto, você poderá fazer alguns testes em um ambiente comercial, hospitalar ou até mesmo em um ambiente fabril para fazer a validação do funcionamento e construir um projeto definitivo para fins comerciais.
E aí, o que achou da ideia?
Se interessou?
Então, fique no tutorial até o final para aprender a construir o seu próprio Dispenser de Álcool em Gel Automático!
Montagem do Projeto do Dispenser de Álcool em Gel
Como dito na introdução, o tutorial conta com dois tipos de mini bombas de água e, primeiro, iremos abordar a montagem da mini bomba de água submersa que conta com alguns componentes diferentes da segunda versão, como, transistor MOSFET e um diodo.
No entanto, para a montagem do dispenser, independentemente se for a versão 1 ou a 2, precisaremos ter os seguintes componentes necessários:
- 1x Protoboard 830 Pontos;
- 1x Fonte de Alimentação 9V;
- 2x LEDS 5mm Azuis – ou da cor que preferir;
- 2x Resistores de 220 Ω;
- 1x Sensor Ultrassônico;
- 1x Regulador de Tensão 7805;
- Diversos Jumpers.
Montagem utilizando a Mini Bomba de Água Submersa JT100
Agora, para a primeira versão, precisaremos de:
- 1x Mini bomba de água JT100;
- 1x Diodo;
- 1x Transistor Mosfet IRF740;
Você irá notar na montagem esquemática do projeto, que está abaixo, que o circuito foi construído para ser bem simples na montagem e prático na alimentação dos componentes pois, tudo é feito através da fonte de 9V e inclusive, não precisa de nenhum tipo de cabo USB para ligar o Arduino Nano já que iremos utilizar o pino Vin para alimentá-lo.
Observe:
Veja que as conexões de cada componente com o Arduino são bem próximas. Então se atente ao seguinte:
- Ambos pinos positivos dos LED’s são conectados nos resistores que por sua vez são conectados nos pinos digitais 4 e 5 do Arduino;
- Já o jumper que vem do transistor MOSFET (saída de gate), que irá fazer o controle do Motor da Mini Bomba, você deve liga-lo no pino digital 2 da placa;
- Enquanto isso, você deve ter notado que o pino Trig do Ultrassônico deve ser conectado no pino D7 enquanto que, o pino Echo, no D6;
- Por fim, não se esqueça de energizar o Arduino através do Vin e do GND.
Além disso, note que todos os componentes estão aterrados através do GND do Arduino.
Observe também que, para alimentar a Mini Bomba, utilizamos a tensão vinda da fonte de 9V, sabe porque? Pois essa diferença de potencial de 9V irá fazer com que o motor tenha mais potência para expelir o alcool de dentro do recipiente, que você irá construir, para fora.
Agora, para mandar o sinal para a Mini Bomba ser acionada, note que aterramos o transistor Mosfet no GND do Arduino.
Já o diodo é usado aqui para permitir que a eletricidade flua apenas em uma direção (a direção de sua seta). Quando você desliga o motor, obtém um pico negativo de voltagem, que pode danificar seu Arduino ou o transistor.
O diodo protege contra isso, causando um curto-circuito em qualquer corrente reversa do motor.
Montagem utilizando a Mini Bomba de Água de sucção de alto fluxo RS-385
Ao utilizar a Mini Bomba de Água RS-385, não vamos precisar mais de diodo nem transistor Mosfet para acionar o motor já que o relé faz esse papel muito bem.
O relé é uma chave eletromagnética usada para acionar aplicações de alta voltagem através de sinais de baixa voltagem. Para ligar a bomba de água DC, estamos usando um módulo relé de 5V.
Então, a lista completa de todos os componentes necessários são aqueles já listados na seção ‘Montagem do Projeto do Dispenser de Álcool em Gel’ mais:
Veja a montagem utilizando essa Mini Bomba RS-385:
O mesmo vale para o aterramento, todos os componentes estão conectados no GND do Arduino enquanto que o Relé é alimentado, uma parte, pela fonte de 9V, que gera mais potência ao Motor, e a outra parte, conectada no regulador de tensão L7805C.
Mas, você deve estar se perguntando: qual é a diferença entre essas Mini Bombas de Água?
Utilização do Regulador de Tensão no Projeto
O regulador de tensão L7805C utilizado aqui no tutorial possui três terminais com uma tensão de saída fixa de 5V, o que o torna muito útil em uma ampla gama de aplicações.
Esse regulador pode fornecer tensões específicas para alimentar uma parte do circuito, eliminando os problemas de distribuição associados à regulação de ponto único.
Veja sua pinagem na ilustração abaixo:
Onde temos:
- Esse pino é conectado no positivo da fonte de 9V;
- Já o negativo (GND) aterramos no Arduino e na Bomba de Água;
- Este é o pino que irá alimentar o circuito Ultrassônico, Relé e LEDs.
Diferença entre as Mini Bombas de Água do Dispenser de Álcool em Gel
Para ver suas diferenças basta observar a tabela abaixo com as principais características entre essas duas Mini Bombas D’agua na tabela abaixo:
O papel do sensor ultrassônico é importantíssimo em nosso projeto, pois sem ele, as bombas iriam funcionar sem saber a distância que a pessoa está do dispenser.
Funciona assim: este componente utiliza das ondas sonoras ultrassônicas para detectar o objeto onde o transmissor do sensor transmite ondas ultrassônicas e o receptor do módulo recebe essas ondas ultrassônicas.
Com relação a utilidade dessas bombas, a JT100 é frequentemente utilizada em projetos menores como aqueles da área da Robótica: Robôs Bombeiros, Carrinhos Robóticos que utilizam as plataformas Arduino e ESP32 entre outros projetos de Elétrica e Eletrônica. Agora, a fim de se aprofundar nesse assunto, acesse o curso de robótica e aprenda mais sobre esse mundo da elétrica/eletrônica, inovação e tecnologia de forma online.
Já os projetos que podem ser feitos com a Mini Bomba RS-385, abrangem a Robótica Hidráulica, os Irrigadores Automáticos, Carrinhos Robóticos Bombeiros, entre outros projetos.
Código utilizado no Dispenser de Álcool em Gel
O Código completo e já comentado do Dispenser de Álcool em Gel, você encontra nas próximas linhas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
// Define os pinos e cada componente ligado a eles const int trigPin = 7; const int echoPin = 6; const int motor = 2; const int LED1 = 4; const int LED2 = 5; // Define as variáveis de cálculo da distância long duration; float distance; void setup() { pinMode(trigPin, OUTPUT); // Determina o TrigPin como Saída pinMode(LED1, OUTPUT); // Determina o LED1 como Saída pinMode(LED2, OUTPUT); // Determina o LED2 como Saída pinMode(echoPin, INPUT); // Determina o echoPin como Entrada pinMode(motor, OUTPUT); // Determina o Motor como Saída } void loop() { // Acende LED1 e LED2 digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); // Zera o trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Seta o trigPin em estado HIGH por 10 micro segundos digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Lê o echoPin, retorna o tempo de viagem da onda em microsegundos duration = pulseIn(echoPin, HIGH); // Cálculo da distância distance = duration*0.034/2; // Calculo da média da distância int SomaMedidas = 0; int i, Media; for(i=0; i<5; i++){ SomaMedidas = SomaMedidas + distance; Media = (SomaMedidas / 5); } // Distância final é a média obtida distance = Media; if(distance<10){ // Espera 1 segundo delay(1000); // Liga o Motor e desliga os LEDs digitalWrite(motor, HIGH);digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); // Espera meio segundo delay(500); // Liga ambos LEDs digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); // Espera por mais meio segundo delay(100); // Desliga o Motor digitalWrite(motor,LOW); //Espera por mais um segundo e meio delay(1500); // Apaga LEDs digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); } } |
Código explicado passo a passo
const int trigPin = 7;
const int echoPin = 6;
const int motor = 2;
const int LED1 = 4;
const int LED2 = 5;
O primeiro a se fazer no código é criar as variáveis que representam os componentes eletrônicos do circuito utilizando não int, mas sim, const int.
A diferença entre int e const int é que int é leitura / gravação, enquanto que const int é somente leitura. Se você quiser que o compilador pegue tentativas inválidas de gravar em uma variável, declare como const int.
Se a variável precisa ser gravada, como uma que é usada à esquerda de um sinal de igual, então ela não deve ser const mas sim, float, int, etc.
long duration;
float distance;
Essas são as variáveis que serão utilizadas no cálculo da distância pelo sensor Ultrassônico.
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor, OUTPUT);
}
Dentro da função void setup () você deve declarar todas as variáveis correspondentes aos componentes eletrônicos como saída ou entrada.
No nosso caso, apenas o pino Echo do ultrassônico que será INPUT enquanto que o restante, será OUTPUT.
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034/2;
Dentro do void loop () teremos a repetição contínua da nossa lógica de programação onde ligará ambos LED’s e após isso, irá calcular a distância que o dispenser está da pessoa.
int SomaMedidas = 0;
int i, Media;
for(i=0; i<5; i++){
SomaMedidas = SomaMedidas + distance;
Media = (SomaMedidas / 5);
}
distance = Media;
Após o cálculo da distância ter sido feita, é hora de escrevermos uma lógica que irá calcular a média dessa distância para que, a coleta de dados errôneos pelo sensor seja minimizada e a mini bomba apenas seja acionada na hora que de fato houver uma pessoa para higienizar as mãos em uma distância de 10 cm.
Fazemos isso calculando 5 distâncias diferentes e tirando a média final que será usada posteriormente para verificar a distância da pessoa ao sensor. Veja só:
if(distance<10){
delay(1000);
digitalWrite(motor, HIGH);digitalWrite(LED1, LOW); digitalWrite(LED2, LOW);
delay(500);
digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(motor,LOW);
delay(1500);
digitalWrite(LED1, LOW); digitalWrite(LED2, LOW);
}
Este if () será executado apenas se a pessoa estiver 10 cm de distância do sensor Ultrassônico. A lógica de programação usada dentro dessa função condicional é bastante simples: espera-se 1 segundo, liga o motor, desligam-se ambos LEDs, espera-se mais meio segundo, ligam-se ambos LED’s, espera-se 100ms, desliga-se o motor e após um segundo e meio, torna a desligar os LEDs.
Conclusão
Após ter montado o circuito com os componentes do projeto e ter compilado o programa para o Arduino, você provavelmente terá algo muito prático para usar em protótipos de totens ou modelos portáteis.
Vale notar que independente da mini bomba que for utilizar, o código utilizado é o mesmo.
Além disso, o código é totalmente flexível com relação ao tempo de execução de cada tarefa. Por exemplo se você quiser que o motor seja mais ágil, pode diminuir o tempo de espera que a pessoa fica na frente do sensor até conseguir higienizar as mãos que é de 1 segundo após o if ().
Ou também, você pode fazer com que apenas um LED acenda quando o sensor identificar a pessoa, e não ambos LED’s.
Ou seja, o código pode ser ajustado de acordo com cada aplicação e necessidade.
Portanto, você aprendeu hoje como fazer um Dispenser Automático de Álcool em Gel e Higienizador de mãos usando uma placa Arduino Nano.
Em caso de dúvida com relação ao projeto e tudo que foi explicado neste tutorial, sinta-se à vontade para perguntar na seção de comentários.
Ótimo Projeto