Sensor de distância no Arduíno

Ontem fiz a minha primeira aplicação com os sensores do Arduíno pois já estava incomodado por ter ele lá parado na estante há uns 6 meses me olhando sem ser usado. De início desejo aprender a ler os esquemas de eletrônica e montar meus apetrechos para o barco e para algum projeto do mestrado (que depois descobri não valorizar produtos). Comecei pelo sensor ultra-som de distância HCSR04.

O sensor é aquele com dois copos metálicos, um emite o ultrassom e o outro recebe. Então, ele pega quanto tempo o som demorou para voltar e calcula a distância. Simples, né?

Preço: Aqui no Brasil, R$ 20,oo a 50,oo. 
No ebay $ 3USD com entrega.
Precisão: 3mm
Distância máxima: 45/50cm
Datasheet do sensor HCSR04

Erros:
Eu já tinha testado o Arduino antes só com um código de piscar os leds com um programinha simpes sem problema algum. Mas ontem quando eu compilava qualquer código, mostrava 0 erros de código mas sempre voltava a mensagem:

avrdude: stk500_getsync(): not in sync: resp=0x30
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Tinha um monte de besteiras nos fóruns, falando pra dar reset repetidamente, tirar e colocar o cabo usb rapidamente (o que acho pode queimar ou perder a ROM) mas no final das contas depois de 1 hora aprendi que é só mudar a porta COM. A minha estava COM3 e ao mudar para a COM5 funcionou, compilou e instantaneamente já começou a receber as informações na janela de serial.

Primeira pegadinha
O programa do Arduino já vem com uma biblioteca e código pronto para um sensor de distância, só que não é este que eu tenho. Pelos tutoriais, o outro sensor só tem três pinos: alimentação 5V, GND (neutro), e o que transmite os dados. Esse meu separa o dado em entrada e saida, então tem 4 pinos. Então, tem que tomar cuidado para não montar tudo no automático sem prestar muita atenção e fazer qualquer coisa que não funcione. Tive que dar uma pesquisada no sensor específico e por sorte tinha bastante documentação, com o porém de a maioria ser de mais alto nível, sem estas minhas questões de iniciante.

Sensor montado com o arduino e breadboard

Conjunto em ação, mas esta configuração não foi a que funcionou.

Instalação de biblioteca
Sempre que um código chama um “qualquerCoisa.h” ele está chamando uma library. Só que este sensor não tinha esta library instalada no console do Arduino e demorei mais uma hora até ter calma de ler a documentação e ver o que deveria fazer. Aqui vai um passo a passo:

  1. Baixar a libray do sensor ou qualquer outro hardware que voce espetar, elas tem dois arquivos pelo menos um “qualquerCoisa.h” e um “qualquerCoisa.ccp”;
  2. Copiar para o diretório do programa do Arduino, na pasta de libraries criando uma pasta para ele.
  3. Reiniciar o programa, com isso já vai aparecer no menu e quando voce fizer a chamada, não vai mais receber o erro de biblioteca não localizada.

Documentação oficial
http://arduino.cc/it/Reference/Libraries

Conclusão:
Tudo funcionou como o esperado, fiz o esquema mais simples possível. Seguindo e lendo os tutorais oficiais e o datasheet não tem erro. Sempre vão surgir dúvidas, mas só se aprende fazendo e com a internet fica tudo muito mais fácil. Meus próximos passos serão colocar um display com as informações do sensor e um outro monitor de temperatura jogando os dados na internet.

Sensor de distância sendo testado

O sensor funcionou direitinho, batia a distancia de acordo com as medições da cutboard (que são em cm).

Console do Arduino
A janela de serial do Arduino vai mandando os dados que voce pediu para imprimir segundo o seu código. Aqui o tempo de resposta e distancia (em cm e pol) do "ping". O próximo passo é colocar isso num display.

Agradecimentos
Bom, não poderia deixar de citar e agradecer as pessoas que conheci e fiz amizade no encontro CNC de Campinas e que estamos mantendo contato. O Wazen me emprestou um monte de coisas (entre elas o RFID) e está sempre mostrando coisas novas e incentivando pra eu fazer alguma coisa nova e o José Maia que me mandou os tutorais de protoboard e esquemas de eletrônica quando eu nem sabia por onde começar. Valeu!

5 respostas em “Sensor de distância no Arduíno

    • Olá Fabrício
      Não entendi bem a pergunta, mas se for para emitir um beep por exemplo, tem como fazer sim basta programar para tal. E ai, se a frequencia do sinal aumentando fica mais rapido o beep, eu faria uma inversão da seguinte maneira:
      Dividindo a distancia por 100 e diminuindo de 1 por exemplo.
      30(cm) / 100 = 0.3
      1 – 0.3 = 0.7 (s) beep em 0.7s
      60(cm) / 100 = 0.6
      1 – 0.6 = 0.4 (s) beep em 0.4s
      Isso resolve?

    • Olá Thiago
      Não sendo uma proposta financeira, pode fazer as perguntas e sugestões pelos próprios comentários, assim compartilhamos a informação com os demais leitores.
      Obrigado

  1. Raphael, estou desenvolvendo um projeto onde uso o mesmo senso. O interessante pra mim não é saber qual a distancia em si (lcd.print(…)) mas sim ele acionar um motor (sobe ou desce) se a distancia for > ou EEPROM.read(addr))
    {
    lcd.clear();
    digitalWrite(ledPinS, HIGH);
    delay(1);
    }
    else
    {
    digitalWrite(ledPinS, LOW);
    }
    if(cmMsec < EEPROM.read(addr))
    {
    lcd.clear();
    digitalWrite(ledPinD, HIGH);
    delay(1);
    }
    else
    {
    digitalWrite(ledPinD, LOW);

    }

    }

    break;

Deixe uma resposta

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