robotica

aprendendo a desviar de obstáculos – Parte 1

E ae galera, lembram do nosso robô, o Natalino? Vamos continuar nossa Jornada sobre robótica com ele, dessa vez vamos adicionar um sensor a ele.

Ao adicionarmos um sensor a um robô é possível obter informações tanto do ambiente quanto do próprio robô. Em resumo, é através dos sensores que podemos realizar a comunicação robô – ambiente – robô.

Os sensores podem ser classificados em:

  • passivos: quando os sensores somente captam a informação presente no ambiente
  • ativos: quando os sensores emitem algum sinal no ambiente e usa a resposta à esse sinal para realizar a medição de alguma grandeza.

O sensor Ultrassônico

Este sensor é um tipo de sensor ativo e exteroceptivos (sensores que fornecem informação do robô em relação ao ambiente em que ele está).

Seu funcionamento se dá da seguinte forma:

  • o sensor é formado por uma pequena membrana metálica
  • um pulso elétrico forte gera uma onda fazendo a membrana produzir um som durante um intervalo de tempo
  • a membrana fica esperando o retorno da onda sonora, ou seja, uma espécie de eco
  • esse eco acontece quando a onda emitida se choca com algum objeto, assim o sensor ultrassônico pode ser usado para medir a distância entre objetos.

hc_sr04_trigger_echo

Fonte: COMO CONECTAR O SENSOR ULTRASSÔNICO HC-SR04 AO ARDUINO

A distância pode ser obtida pela fórmula d = vt e representa o dobro da distância entre o emissor e o objeto, assim para obter o valor real da distância entre o emissor e o objeto basta dividir o valo obtido pelo sensor por dois.

O modelo utilizado neste projeto é o  Sensor Ultrassônico HC-SR04 que permite que você faça leituras de distâncias entre 2 cm e 4 metros, com precisão de 3 mm. O sensor tem 4 pinos que são:

  1. VCC : Alimentação do módulo com +5 V.
  2. Trig : Gatilho para disparar o pulso ultrassônico.
  3. Echo : Gera um pulso com a duração do tempo necessário para o eco do pulso ser recebido pelo sensor.
  4. Gnd : Terra.

Como a ideia aqui é utilizar a programação por blocos eu deixo aqui dois posts muito interessantes de programação textual sobre este sensor: aqui e aqui

Vamos ao nosso robô e relembrando a ordem de configuração dos pinos e adicionando o sensor ultrassônico

  • 9 e 6 controlando o motor A que no meu caso são as rodas da esquerda e
  • 3 e 5 controlando o motor B que são as rodas da direita.
  • 8 será o pino trigger e
  • 7 será o pino echo

Posicionei o sensor na frente do robô  como pode ser visto na imagem.

O primeiro teste que fiz foi: fazer o robô se locomover e descobrir com qual distância a um objeto seria adequado que ele começasse a fazer a manobra de desvio.Esse primeira parte é o que chamamos de calibrar o sensor. Como o Natalino está ainda sem um LCD para que possamos ver esses valores, eu usei a comunicação serial.

É importante a gente perceber que a distância calculada pelo sensor é a partir do sensor ao objeto. Na imagem aí embaixo dá para perceber que existe uma diferença entre o fim da carcaça do robô e o sensor. Além disso o comportamento do robô (distância dele para algum objeto) é obtida ele estando em movimento, por isso é importante fazer a calibração correta para o seu robô.

img_20160907_223335094_hdr

Usando o ArdubBlock não precisamos nos preocupar com o cálculo. Precisamos somente utilizar o bloco que representa o sensor Ultrassônico. Nesse programa além disso eu usei uma instrução para escrever  o valor obtido pelo sensor no Monitor Serial do Arduíno.

obterdistanciarotulos

1. programsetuploop esse bloco que delimita o programa em Arduino, ele é obrigatório em todos os programas e fica na aba controle do Ardublock

2. setarvariavelinteira esse bloco é usado quando precisamos guardar um valor em uma determinada variável. Ele fica na aba variáveis.

3. imprimirmensagem quando precisamos imprimir algo na porta serial (nosso meio de comunicação com o Arduino) usamos esse bloco, eu uso esse em especial que já quebra uma linha na mensagem e deixa tudo mais organizado, localizado na aba comunicação

4. variaveldistancia : puxei o bloquinho variável, dei dois cliques e nomiei para distancia,é essa bloco que vai ser encaixado no primeiro espaço do bloco 2, esse daqui também fica na aba variáveis

5. sensorultrasonico e o que essa variável vai guardar? o valor lido pelo sensor ultrassônico, ali a gente só precisa mudar para os pinos da nossa montagem ( no meu caso, 8 e 7). Esse bloco é a nossa estrela nesse post e fica na aba Generic Hardware

6. juntarnumerotexto : precisa juntar texto e valores de variáveis, esse bloco é para isso e fica na aba comunicação.

7. variaveldistancia : está aqui de novo nossa variável distância, é o que está guardado dentro dela que será mostrado no Monitor Serial

Para o Natalino, depois de rodar o programa descrito anteriormente percebi que seria adequado que ele parasse quando a distância medida fosse menor ou igual a 15cm aplicando o valor de 175 nos pinos analógicos, como você pode ver no nosso próximo programa.

Agora vamos juntar: movimentação e sensor ultrassônico. A ideia é a seguinte: fazer o robô andar para frente desde que a distância entre ele e um objeto a sua frente não  atinja o limite, caso contrário ele deve parar. Vamos lá??

aprendendesviar1

Pra quem está curioso para saber como o bloco do sensor faz toda essa mágica, lembre-se que o ArduBlock vai gerando o código em forma de texto, na própria IDE do Arduino!!! Vai lá e dá uma olhadinha de como esse cálculo é feito!!! 🙂

Bom, agora já sabemos calcular a distância entre nosso amiguinho e os objetos ao seu redor, no próximo post vamos usar essas ideias para fazer com que ele se desvie de objetos e consiga andar a salvo em um determinado ambiente. Até a próxima!!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s