Ter robôs fazendo tarefas rotineiras para nós é algo bem interessante, ainda mais na parte da limpeza. Portanto, neste post, veremos uma forma simples de criar um robô aspirador de pó.
Informações básicas
O que é o projeto
O projeto que mostrarei consiste de um simples robozinho de duas rodas capaz de aspirar pequenas sujeiras. Como a ideia é criar algo simples, o robô não vai ter autonomia ou inteligência para decidir onde limpar. Por conta disso, o foco do post é mais o aprendizado do que mostrar algo realmente útil.
De toda forma, com os passos que mostrarei, você deve conseguir implementar melhorias e adaptar o projeto às suas necessidades.
Observações e limitações
Meu objetivo com esse projeto é dar um ponta pé inicial no desenvolvimento de um robô aspirador de pó realmente funcional. Por conta disso, algumas coisas que mostrarei ficaram com cara de improviso. E acho importante deixar claro que o aspirador só consegue aspirar pequenas partículas (pó de fato) em uma região bem pequena.
Criando robô aspirador de pó
Materiais necessários
Adiante estão listados os componentes que utilizei para montar o projeto:
- Arduino UNO.
- Pode ser outro Arduino.
- Kit chassi 2WD redondo.
- Além da própria estrutura, o kit vêm com 2 motores, rodas normais, rodas bobas, fios e suporte de 4 pilhas AAA.
- 4 pilhas AAA.
- Ponte H L293d.
- Pode usar um módulo de ponte H, que é ainda mais fácil.
- Motor DC com faixa de tensão de 3 a 6V.
- Motor para fazer a função de aspirador de pó. O ideal é usar um motor forte para que o robô consiga puxar a sujeira sem problemas.
- Garrafa PET.
- Empregada na parte do aspirador de pó.
- Usei uma de desinfetante, mas pode ser de refrigerante.
- Papelão.
- Empregado na parte do aspirador de pó.
- Hélice de ventilador.
- Resolvi imprimir uma na impressora 3D. Tentei buscar algumas online, mas acabei decidindo criar uma hélice.
- Ao invés de imprimir, você pode tentar improvisar uma com uma chapa metálica.
- Tubo/mangueira de plástico pequeno(a) (comprimento cerca de 10 cm).
- Posicionado na parte de baixo do robô e é ligado ao compartimento do aspirador de pó.
- Protoboard pequena.
- Seria melhor usar uma plaquinha ilhada e soldar todos os componentes nela. Mas, como disse no início do post, construí esse projeto mais para testes.
- Fios para as ligações.
E em relação às ferramentas, você vai precisar de:
- Ferro de solda.
- Usado para soldar os fios dos motores.
- Alicate ou estilete para cortar os fios.
- Pistola de cola quente.
Circuito
Vejamos os detalhes de cada parte do circuito:
- Alimentação:
- Alimentarei o circuito todo com os 6V que vêm das 4 pilhas AAA ligadas em série.
- Motor do aspirador de pó:
- O motor que tenho funciona de 3 a 6V, então basta ligá-lo em paralelo à tensão de 6V das pilhas.
- Motores das rodas:
- O ideal é que os motores das rodas possam ser controlados de forma a variar o sentido de rotação e a velocidade. Para resolver isso, podemos empregar uma ponte H. Aqui no site tem um post detalhando a ponte H e a ligação do CI L293d que usaremos, então remendo ler para entender os detalhes.
A partir de tudo que foi dito acima, o circuito final está mostrado na imagem abaixo. Achei que a imagem ficou com muito fio e um pouco difícil de entender. Então, também coloquei uma imagem do esquemático, que está mais limpo e mais fácil de entender.
Se você reparar, também adicionei um capacitor de 10 μF entre o pino de reset do Arduino e o GND. Fiz isso, porque o Arduino estava reiniciando toda vez que ele tentava acionar os motores. Não averiguei o problema de perto, mas acredito que tenha relação com a alta corrente de partida dos motores que provoca uma queda de tensão momentânea, a qual é percebida pelo Arduino, que reage resetando. Assim, o capacitor de 10 μF ajuda a estabilizar a tensão e previne o Arduino de ficar resetando.
Possivelmente esse problema tem relação com as pilhas, pois toda fonte de tensão tem uma resistência interna que apresenta uma queda de tensão considerável quando a corrente que sai da fonte é grande. Talvez se eu tivesse utilizado uma bateria mais apropriada (menor resistência interna), esse problema do reset não teria aparecido.
Montagem do chassi 2WD
O processo de montar o chassi 2WD é a primeira etapa para a criação do robozinho, e ele é até bem simples. Não pretendo detalhá-lo aqui. Então, sugiro que você assista esse vídeo para aprender a montar. Esse foi o mesmo vídeo que segui para montar o meu.
Lógica de funcionamento do aspirador de pó
Essencialmente, o tipo de aspirador que construiremos consiste de um compartimento com apenas uma entrada e uma saída de ar. Nesse cenário, um motor com uma hélice é colocado para empurrar o ar para fora do compartimento em direção à saída de ar. Uma vez que o ar sai, cria-se um vácuo temporário no compartimento.
Devido ao vácuo e à entrada de ar que existe, a pressão vai empurrar ar para dentro do compartimento. Sob outra óptica, é como se o compartimento sugasse o ar de fora. E é justamente esse ar entrando que vai carregar as partículas de sujeira de fora para dentro do compartimento.
Esse processo é contínuo: o motor empurra ar para fora a todo momento e o ar fica circulando.
Montagem do aspirador
Após montar o chassi, podemos passar para o aspirador. Vamos aos passos:
- 1 – Corte a parte de baixo da garrafa PET fora.
- Como se tivesse removendo a tampa de baixo dela.
- 2 – Com a garrafa sem a parte de baixo, corte novamente ela no meio de forma a obter duas partes que podem ser encaixadas uma na outra. Para deixar mais claro, vou chamar a parte da garrafa que ficou com a tampinha de parte A, e a parte de baixo que ficou toda aberta, vou chamar de parte B.
- 3 – Corte um pedaço de papelão em formato de disco com diâmetro igual ao diâmetro interno da parte B.
- 4 – No meio desse pedaço de papelão, crie um furo de mesmo diâmetro do motor.
- 5 – Ainda no papelão, crie furos para permitir a passagem de ar.
Veja como ficou o papelão no meu caso (nada simétrico hehe).
- 6 – Encaixe a hélice no motor e fixe com cola quente se necessário.
- 7 – Encaixe o motor no papelão e prenda com cola quente. A imagem abaixo mostra o motor encaixado, mas a cola quente só poderá ser vista na outra imagem seguinte:
- 8 – Prenda e fixe o papelão no meio da parte B da garrafa PET com cola quente. É importante que a hélice fique virada para a parte de baixo da garrafa (onde era a base da garrafa).
- 9 – Aproveite e solde fios nos terminais do motor.
- 10 – Para passar os fios para fora da garrafa, faça um pequeno furo na lateral dela. Lembrete importante: não passe os fios pela hélice, faça o furo na lateral da garrafa logo ao lado dos terminais.
Deixe a parte B de lado e pegue apenas a tampinha da garrafa PET.
- 11 – Faça um furo na tampinha da garrafa que seja do diâmetro do cano de plástico.
- 12 – Fixe, com cola quente, a tampinha no meio do chassi 2WD com o furo dela posicionado justamente no furo que existe no meio do chassi.
- 13 – Passe a mangueira de plástico pelo furo da tampinha e direcione ela até a parte de baixo do robô.
- Você também pode passar a mangueira antes de fixar a tampinha. Se fizer isso, a cola quente vai tampar as frestas do furo que você fez na tampinha (foi o que fiz).
Veja meus resultados abaixo:
Repare que a mangueira praticamente encosta no chão. Isso é importante, pois o aspirador não tem muita força e isso diminui a distância que o aspirador tem que puxar.
- 14 – Agora a parte A da garrafa pode ser rosqueada na tampinha e a parte B pode ser encaixada na parte A.
Veja o resultado final abaixo:
A ordem de ligação dos fios do motor do aspirador faz diferença. E só é possível descobrir a ordem certa testando. Ou seja, alimente o motor e veja se a entrada da mangueira está soprando ou puxando pequenas partículas. Obviamente, o jeito certo é quando ela estiver puxando.
Falta de filtro no aspirador
Os aspiradores de pó profissionais têm um filtro para impedir que a sujeira entre no compartimento onde o motor está localizado. Isso, porque ela pode acabar acumulando dentro do motor ou na hélice e provocar um defeito no aspirador.
Diante disso, seria interessante ter colocado um filtro entre a parte A e B da garrafa PET. Não fiz isso, porque reparei que o aspirador não tem força suficiente para puxar as sujeiras até o topo. O que reparei é que a sujeira descia logo após o tubo de plástico e ficava na tampa.
Restante da montagem
O restante da montagem envolve apenas a disposição dos componentes do circuito, isto é: Arduino UNO e protoboard. Como estou apenas testando o projeto, não fixei nenhum deles. Mas, você pode fazer isso utilizando cola quente.
Codigo completo
O código adiante é beeem bobinho, pois apenas comanda os motores para andarem para frente de forma indefinida. Caso você queira fazer alterações, eu adicionei funções que facilitam a programação dos motores. No caso, são as funções motor_direcao e motor_velocidade. Leia o código para entender os detalhes.
Obs: se um dos seus motores estiver invertido em relação ao outro, inverta os pinos IN (IN1 com IN2 p/ motor 1 ou IN3 com IN4 p/ motor 2). A inversão pode ser tanto via programação quanto por mudança dos fios.
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 | // ----- Definições ----- #define PIN_IN3 2 #define PIN_IN4 3 #define PIN_IN2 4 #define PIN_IN1 5 #define PIN_EN 6 #define MOTOR_DIRECAO_FRENTE 0 #define MOTOR_DIRECAO_TRAS 1 #define MOTOR_ESQUERDO 0 #define MOTOR_DIREITO 1 #define VELOCIDADE_BASE 220 // ----- Protótipo das funções ----- void motor_direcao(uint8_t lado, uint8_t dir); void motor_velocidade(uint8_t vel); void setup () { uint8_t i; // Inicializa os pinos do motor pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_IN3, OUTPUT); pinMode(PIN_IN4, OUTPUT); pinMode(PIN_EN, OUTPUT); // Inicializa o motor motor_velocidade(0); motor_direcao(MOTOR_ESQUERDO, MOTOR_DIRECAO_FRENTE); motor_direcao(MOTOR_DIREITO, MOTOR_DIRECAO_FRENTE); // Espera 1 segundo e aumenta a velocidade dos motores gradualmente delay(1000); for(i = 0; i < VELOCIDADE_BASE; i++) { motor_velocidade(VELOCIDADE_BASE); delay(10); } } void loop() { } /* * Muda a direção de rotação de um motor * lado: MOTOR_DIREITO ou MOTOR_ESQUERDO * dir: MOTOR_DIRECAO_FRENTE ou MOTOR_DIRECAO_TRAS */ void motor_direcao(uint8_t lado, uint8_t dir) { if(lado) { digitalWrite(PIN_IN3, dir); digitalWrite(PIN_IN4, !dir); } else { digitalWrite(PIN_IN1, dir); digitalWrite(PIN_IN2, !dir); } } /* * Define a velocidade dos motores * vel - Velocidade (0 a 255) */ void motor_velocidade(uint8_t vel) { analogWrite(PIN_EN, vel); } |
Resultados
Após fazer a montagem do robô, obtive o seguinte resultado:
E abaixo está um vídeo do robô funcionando e sofrendo para limpar farinha de trigo do chão.
Teoricamente, era pro robô andar reto, porque o código que usei é o mesmo do tópico anterior. Mas ele fica andando em círculo, porque, involuntariamente, um motor gira mais que a outro (o direito no caso). Para resolver isso, teríamos que ligar o pino Enable dos motores separadamente para poder controlar a velocidade de forma individual e corrigir essa diferença.
Enfim, pelo vídeo ficou claro que o robô é bem ruinzinho. Ao menos ele deu conta de pegar alguma sujeira igual mostrei no fim do vídeo.
Observações finais
Com certeza o projeto tem muita possibilidade de melhoria e a ideia é desenvolver uma versão 2 futuramente. Adiante estão alguns pontos que acho válido fazer para melhorar:
- Criar uma PCB própria para o robozinho (sem usar o Arduino).
- Melhorar a hélice.
- Diminuir o tamanho do compartimento do aspirador.
- Isso deve melhorar bastante a capacidade dele de sugar as sujeiras.
- Melhorar a estabilidade da tensão do circuito (talvez usar uma bateria mais adequada).
- Adicionar sensores de distância para permitir o robô enxergar o ambiente.
- Aplicar técnicas de robótica e controle para deixar o robô inteligente.
- Por exemplo: Localização, Controle PID e Pathfinding.
Tem como enviar o código em word ou PDF para copiar e colar no projeto ?
Tem sim, Amélia. Te enviei por e-mail.
É viável enviar o código em word ou PDF para copiar e colar no projeto?
Olá, Julia. O código completo é o mesmo que está no post. Ele é simples mesmo. Só copiar direto do site.
Olá teria como me enviar código da programação do robô por e-mail e se conseguir me informar como eu coloco o sensor de distância e de obstáculos nele
Olá, William. O código é o mesmo que está no post. Ele é bem simples mesmo.
Sobre o sensor de distância, dê uma olhada neste post aqui do site, que por ele você consegue entender como adicionar o sensor em qualquer projeto. Se você estiver usando outro tipo de sensor, aqui no site também tem um post sobre o VL53L0X e o sensor de obstáculo infravermelho.
ola, o que é a placa pretinha no meio do protoboard ???
Olá, William. É o CI L293d (ponte H).
olá consegue me mandar o código por favor
Olá, João. O código completo é o mesmo que está no post. Ele é simples mesmo.
Olá! Como faz para parar de aspirar?
Olá, Iza. Este projeto foi apenas um protótipo prévio, então não adicionei um botão ou uma forma de parar o robô.