Arduino – Sensor Ultrasônico HC-SR04

Hoje vamos utilizar em nosso projeto o sensor ultrasônico, ele funciona como um detector de objetos e pode chegar a medir distancias máximas de até 5 metros com uma precisão de 3 milímetros.

O que vamos utilizar no projeto:

– Arduino Uno

– Protoboard Mini

– Sensor Ultrasônico HC-SR04

Vamos entender um pouco mais sobre o Sensor Ultrasônico

O sinal de retorno é captado, permitindo-se deduzir a distância do objeto ao sensor tomando o tempo de trânsito do sinal.

A velocidade do sinal ultrasônico é de aproximadamente 340 m/s, assim, se o sensor estiver a uma distância d do objeto, o sinal percorrerá uma distância equivalente a 2d para sair e retornar ao sensor.

O sensor é composto por 4 pinos, sendo eles:

1.VCC
2.trig(T)
3.echo(R)
4.GND

Fritzing:

Código:


#include <Ultrasonic.h>

// funcão do ultrasonic nos pinos 12 e 13
Ultrasonic ultrasonic(12,13);

void setup()
{
Serial.begin(9600); //inicia a porta serial
pinMode(echoPin, INPUT); // seta pino como entrada
pinMode(trigPin, OUTPUT); // seta pino saída
}

void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// A função Ranging converte o tempo de resposta em centímetros e seta na variável distancia
int distancia = (ultrasonic.Ranging(CM));

Serial.print("Distancia em CM: ");
Serial.println(distancia);
delay(1000); //espera 1 segundo para fazer a leitura novamente
}

Outra forma sem utilizar a biblioteca Ultrasonic.h:

#define trigPin 13
#define echoPin 12
#define ledRed 8
#define ledBlue 7

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledRed, OUTPUT);
  pinMode(ledBlue, OUTPUT);
}

void loop() {
  long duration, distance; //http://arduino.cc/en/Reference/Long
  digitalWrite(trigPin, LOW);  //seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
  delayMicroseconds(2); // delay de 2 microssegundos

  digitalWrite(trigPin, HIGH); //seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
  delayMicroseconds(10);  //delay de 10 microssegundos
  digitalWrite(trigPin, LOW); //seta o pino 12 com pulso baixo novamente
  duration = pulseIn(echoPin, HIGH);  //pulseIn lê o tempo entre a chamada e o pino entrar em high
  //Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
  //porque é o tempo de ida e volta do ultrassom
  distance = (duration/2) / 29.1;
  if (distance >= 200 || distance <= 0){
    Serial.println("Nada ao alcance!");
    digitalWrite(ledRed, HIGH);
    digitalWrite(ledBlue, LOW);
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
    digitalWrite(ledRed, LOW);
    digitalWrite(ledBlue, HIGH);
  }
  delay(500);
}

Vídeo:

Fotos:

Anúncios
Esse post foi publicado em Arduino e marcado , , , , , , , . Guardar link permanente.

29 respostas para Arduino – Sensor Ultrasônico HC-SR04

  1. Eduardo disse:

    Desculpa a ignorância, estudei o código, mas o que ele faz quando recebe a inf da distancia?

    Legal seria tocar uma campainha.

    • marcosschwaab disse:

      Pode adicionar um buzzer para apitar em determinada distância, mas se você abrir a serial monitor vai ver a distância em que o objeto está do sensor.

      Abraço

  2. Paulo Roberto Inocencio Silva disse:

    ola pessoal tenho 2 hcsr04 estou querendo usar num projerto de robotica mas estou tendo problema com a bibriooteca. ultrasonic.h eu coloquei na libriaries do arduino uno mas guando faço o upload da erro tipo nao declarado no diretorio

  3. Paulo Roberto Inocencio Silva disse:

    ola marcosschwaab tudo bom o codico e todo que incluir ultrasonic.h o erro que retonar e este; ambiente de desenvolvimento /windows/libraries/ultrasonic/ultrasonic.h:11:22 wprogram.h
    no such file or directory eu nao entendo oporque fiz o downloads descomparquitei o arquivo e coloquei na libraries mas sempre aparece este erro e nao consigo fazer o upload EU uso o arduino uno desde ja obrigado tudo de bom ag resporta;;;;;;;;;;;;;;

  4. Paulo Roberto Inocencio Silva disse:

    ola a versao e a 1.0 ok

  5. Paulo Roberto Inocencio Silva disse:

    valeuuuu funcionou troquei a ide agora da pra usar ohcsr04 projertos e o que nao falta pra ele;;;;;OBRIGADO TUDO DE BOM;;;;;;;;;;;;

  6. carla dagostin disse:

    ola pessoal estou tentando compilar esse codigo no arduino 1.0 windows 7, mas nao esta dando certo, ja baixei a biblioteca e coloquei junto com as outras e mesmo assim da o seguinte erro
    sketch_sep03b.cpp: In function ‘void loop()’:
    sketch_sep03b:23: error: ‘class Ultrasonic’ has no member named ‘Ranging’
    sketch_sep03b:23: error: ‘CM’ was not declared in this scope
    please helllllpppp

  7. Dhiego Venturim disse:

    Olá, estou tentando piscar um led de acordo com a distância.
    Porém estou com dificuldades. Segue abaixo o Programa

    #include

    // funcão do ultrasonic nos pinos 12 e 13
    Ultrasonic ultrasonic(12,13);

    void setup()
    {
    Serial.begin(9600); //inicia a porta serial
    pinMode(13, INPUT); // seta pino como entrada
    pinMode(12, OUTPUT); // seta pino saída
    pinMode(10, INPUT); // entrada do LED
    }

    void loop()
    {
    digitalWrite(12, LOW);
    delayMicroseconds(2);
    digitalWrite(12, HIGH);
    delayMicroseconds(10);
    digitalWrite(12, LOW);
    // A função Ranging converte o tempo de resposta em centímetros e seta na variável distancia
    int distancia = (ultrasonic.Ranging(CM));

    {
    if (distancia<50)
    digitalWrite(10,HIGH);
    delay(100);
    digitalWrite(10,LOW);
    }
    Serial.print("Distancia em CM: ");
    Serial.println(distancia);
    delay(1000); //espera 1 segundo para fazer a leitura novamente
    }

  8. Celso disse:

    ola,
    não sou entendido no asssunto e queria fazer uma pergunta:
    1) atraves deste sensor eu poderia identificar varios objetos diferentes ou somente um unico objeto?
    2) Qual o valor de um sensor deste?
    grato pela atençaõ.
    Celso

  9. Celso disse:

    Marcos, obrigado pela atenção,
    gostaria de perguntar como é a forma de identificação do objeto atraves deste sensor, digo melhor, ele identifica um corpo fisico qualquer numa area definida ou existe algo no objeto a ser identificado que envia algum sinal para o sensor?

  10. Fernando Moser disse:

    Ola, Muito bem explicado marcos.

    Minha duvida é quanto ao alcance total dele, visto que gostaria de detectar uma distancia maior. li que ele alcança de 4 a 5 metros. Isso é real?

    Obrigado

  11. William Castro disse:

    oi amigo, estou tentando usar o codigo que vc sugeriu, porem está dizendo que echopin nao esta delarada no scop, estou testando na ide 0023. pode me ajudar? como faço para copiar aquela mensagem de erro da ide? pois clico com direito enao dá. forte abraço.

  12. Maria Clara disse:

    Oii,

    Gostaria de saber como você fez o esquema no fritzing, já que pelo menos na versão que eu tenho aqui, não tem o sensor ultrassônico HC-SR04!

    obrigada!

  13. guilherme fiusa disse:

    Amigo estou querendo construir um chuveiro inteligente que liga e desliga usando o sensor de ultra som e uma valvula solenoide poderia me dar uma dica de como fazer isto ?
    como faço para ligar o sensor na valvula para que ela possa abrir quando o sensor dectar alguma coisa.esse projeto ja existe tem ele no youtube chuveiro inteligente.
    se vc poder me dar uma dica fico grato.ha e tbm me dizer quais componente posso estar usando para que eu possa realizar o projeto

    • Eduardo castellani disse:

      Poxa, essa do chuveiro me interessou, o amigo do site podoeria responde-lo?

    • Marcos Schwaab disse:

      Cara, o funcionamento do ultrasonico voce já tem aqui, você deve procurar pela net um tutorial de arduino e valvula solenoide, ai é simples só juntar os 2; Quando detectar algo ele vai abrir a válvula. Mas voce deve estudar qual ultrasonico utilizar pois esse que mostro no exemplo a cima a pessoa devera ficar se movendo o tempo todo para o chuveiro manter ligado.

  14. Paulo Cézar Santana disse:

    olá amigo,
    tem como você postar o link da biblioteca Ultrasonic para download?

    achei algumas aqui na internet, mas pelo visto nao eh mesma que está usando.
    Obrigado.
    Abraço

  15. Pingback: Gogo Board: Sensor Ultasônico | Mundo da Robótica

  16. Estou tentando fazer piscar um Led de acordo com a distância do sensor. Para isso estou usando o seguinte código.

    /*
    Projeto Arduino – Arduino com sensor de proximidade ultrasonico HHC-SRO4
    Por Jota
    —————————————-
    –==–
    —————————————-
    */
    //Incluindo biblioteca Ultrasonic.h
    #include “Ultrasonic.h”

    //criando objeto ultrasonic e definindo as portas digitais do Trigger – 6 – e Echo – 7
    Ultrasonic ultrasonic(6,7);

    //Declaração das constantes referentes aos pinos digitais.
    const int ledVerde = 13;
    const int ledAmarelo = 12;
    const int ledVermelho = 11;

    long microsec = 0;
    float distanciaCM = 0;

    void setup() {
    Serial.begin(9600); //Inicializando o serial monitor

    pinMode(ledVerde,OUTPUT); //Definindo pino digital 13 como saída.
    pinMode(ledAmarelo,OUTPUT); //Definindo pino digital 12 como saída.
    pinMode(ledVermelho,OUTPUT); //Definindo pino digital 11 como saída.
    }

    void loop() {
    microsec = ultrasonic.timing(); //Lendo o sensor
    distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM); //Convertendo a distância em CM

    ledDistancia();

    Serial.print(distanciaCM);
    Serial.println(” cm”);
    delay(1000);
    }

    //Método que centraliza o controle de acendimento dos leds.
    void ledDistancia() {

    //Apagando todos os leds
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledVermelho,LOW);

    //Acendendo o led adequado para a distância lida no sensor
    if (distanciaCM > 20) {
    digitalWrite(ledVerde,HIGH);
    }

    if (distanciaCM = 10) {
    digitalWrite(ledAmarelo,HIGH);
    }

    if (distanciaCM < 10) {
    digitalWrite(ledVermelho,HIGH);
    }
    }

    PORÉM, ELE ESTÁ RETORNANDO O SEGUINTE ERRO:
    "class Ultrasonic' has no member named 'timing' "
    PODERIA ME AJUDAR?

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