Linux

sensor ultrassônico + servo motor = olhos

Sensor ultrassônico HC-SR04

Para o nosso robô caminhar com a capacidade de desviar-se de obstáculos, decidi fazer seus “olhos” com um sensor ultrassônico HC-SR04, hoje garantidamente o mais popular em eletrônica digital maker. Se está sendo seu primeiro contato com esse sensor ultrassônico, fique feliz em saber que é extremamente simples de brincar e pode ser utilizado não apenas para fazer robôs desviarem-se de obstáculos, mas pode também ser utilizado para medir nível de água em caixas d’água, fazer mini-elevadores para projetos de faculdade/ciências etc.

Esse artigo de Agosto de 2011 foi atualizado em Junho de 2017 para não defasar.

Sensor ultrassônico HC-SR04
Sensor ultrassônico HC-SR04

Na época desse artigo, o Arduino IDE estava a versão 0022, não havia o recurso de instalar bibliotecas através da IDE. Hoje você ainda pode pegar a biblioteca nesse link, extraíla no diretório de bibliotecas (normalmente ~/Arduino/libraries/) e iniciar a IDE do Arduino para incluí-la; mas como as coisas estão muito mais simples hoje, basta ir ao menu Sketch->Incluir biblioteca->gerenciar bibliotecas e então digitar HC-SR04 na caixa de pesquisa à direita. Três opções estarão disponíveis, de cara.

Seu uso é bastante simples e o exemplo segue com a biblioteca do link supracitado. Já no sensor ultrassônico, a pinagem está disposta assim; à esquerda a alimentação (5V), Trig, Echo e ground, seguidamente.
No setup() do programa, seguimos os passos básicos:

Essa classe é muito simples de utilizar, bastando chamar o método que retorna a distância, com o parâmetro CM para retorno em centímetros:

 

O resultado já poderá ser visto abrindo o console serial da interface do Arduino.
Já que é possível pegar esse retorno rapidamente (240m/s, conforme especificação do dispositivo), então fica fácil utilizá-lo como olhos, para escolher a direção em que o robô deverá andar. Para tanto, criei uma nova biblioteca para definir o servo como o ‘pescoço’ do nosso sensor. A classe foi chamada Brain (cérebro em inglês), pois todas as ações serão pensadas por ele. Essa classe devera cumprir as seguintes tarefas:

– caminhar (para frente ou para trás)
– escolher a direção a andar.
– alinhar o corpo do robô na direção escolhida.

Essa classe possui alguns atributos como por exemplo, a distância de tolerância, que é de 15 centímetros; quando a distância for menor que isso, então o ‘pescoço’ começa a se deslocar para esquerda e direita à procura de uma direção que haja uma distância maior que 15 centímetros. Quando encontrada, alinha o corpo na direção dos ‘olhos’ e inicia a caminhada. Se em um ângulo de 180 graus não for encontrada uma direção com mais de 15 centímetros (por exemplo, a junção de duas paredes), então o robô deverá dar uma ré girando até 180 graus, alinhar-se e seguir em frente.

Eu sei que tem algorítmos complexos para definir caminhos, algorítmos baseados no caminhar dos pombos, na dança dos cisnes, no balé de Berlin, etc – mas aqui o único e simples objetivo é construir um robô para prova de conceito. Assim o faremos.

Nesse primeiro momento, minha classe está incompleta e não pode ser totalmente implementada ainda, mas já consegui experimentar a idéia. Explanarei sobre essa classe mais adiante.

Sensor Ultrassônico HC-SR04 - Wiring
Sensor Ultrassônico HC-SR04 – Wiring

O circuito no Arduino fica assim:

Gostou do desenho? Utilizei o Fritzing, que é um free software. Infelizmente não encontrei na época da  publicação desse artigo (em 2011) esse sensor e, hoje não pretendo refazê-la porque estou dando uma manutenção mínima nos artigos. Então utilizei um sensor infra-vermelho para representá-lo (gambiarra numero 1).
As imagens da composição para que se possa dar uma observada (gambiarra numero 2).

Sensor Ultrassônico HC-SR04 - Montagem
Sensor Ultrassônico HC-SR04 – Montagem

Vista superior. Utilizei um suporte de tomada para fixar o sensor ultrasonico. O servo-motor está preso a uma mini-morsa.

Sensor Ultrassônico HC-SR04 - vista superior
Sensor Ultrassônico HC-SR04 – vista superior

A protoboard não está sendo utilizada corretamente, mas tive que fazer assim por causa da falta de espaço (gambiarra numero 3).
Sensor Ultrassônico HC-SR04 - conexão na protoboard

Ainda não está terminada, então não disponibilizarei a classe Brain para download, mas vou explicar como a utilizei:
– Copiei a classe e a estrutura da classe para ~/arduino-002/libraries/Brain/

 


O resto do código é relacionado ao servo, basicamente. Quando disponibilizar a biblioteca, disponibilizarei também o código desse projeto.

Para finalizar, eis o video dos ‘olhos’ do robô:

O projeto foi finalizado posteriormente e o link para o resultado (que ficou muito bacana) é http://www.dobitaobyte.com.br/robo-com-arduino-no-estilo-maker/.

4 comments
  1. Pedro Ribeiro Peixoto

    Oi, eu sei que já tem muito tempo o post, mas estou desenvolvendo um projeto semelhante e o restante do código do seu projeto (Tanto a biblioteca Brain quanto a programação do servo) iriam me ajudar muito, sou iniciante e ainda estou com dificuldade de criar as programações. Obrigado

Comments are closed.

%d blogueiros gostam disto: