Articles

como usar um Sensor de distância ultrassônico HC-SR04 com Arduino

o HC-SR04 é um sensor de distância ultrassônico barato, fácil de usar, com uma gama de 2 a 400 cm. É comumente usado em obstáculos evitando robôs e projetos de automação. Neste tutorial, você vai aprender como o sensor funciona e como usá-lo com Arduino.

incluí 5 exemplos com um diagrama de cablagem e código para que possa começar a experimentar com o seu sensor., Vamos primeiro olhar para um exemplo que não usa uma biblioteca Arduino. Em seguida, vou mostrar como você pode usar a Biblioteca NewPing para criar um código mais compacto.os sensores de distância ultrassônica barata/proximidade são ótimos, mas em alguns projetos, você pode precisar de um sensor à prova de água como o JSN-SR04T ou um sensor de IR que não é influenciado por mudanças de temperatura.,on

20×4 character I2C LCD (optional) × 1 Amazon
AliExpress DHT11 sensor (optional) × 1 Amazon

Software

Arduino IDE

Makerguides.,com é um participante no programa Amazon Services LLC Associates, um programa de publicidade de afiliados projetado para fornecer um meio para os sites para ganhar taxas de publicidade através de publicidade e vinculação a produtos em Amazon.com como funciona um sensor de distância ultrassónico?os sensores ultra-sónicos funcionam emitindo ondas sonoras com uma frequência demasiado elevada para um ser humano ouvir. Estas ondas sonoras viajam pelo ar com a velocidade do som, aproximadamente 343 m / s., Se houver um objeto na frente do sensor, as ondas sonoras se refletem de volta e o receptor do sensor ultrassônico as detecta. Medindo quanto tempo passou entre o envio e recepção das ondas sonoras, a distância entre o sensor e o objeto pode ser calculada.

medidor de distância Ultra-sensores princípio de funcionamento. Fonte: https://www.maxbotix.com/

Em 20°C, a velocidade do som é de aproximadamente 343 m/s ou 0.034 cm/s., Digamos que o tempo entre enviar e receber as ondas sonoras é de 2000 microssegundos. Se você multiplicar a velocidade do som pelo tempo em que as ondas de som viajaram, você obtém a distância que as ondas de som viajaram.

distância = velocidade x tempo

mas esse não é o resultado que estamos procurando. A distância entre o sensor e o objeto é na verdade apenas metade dessa distância porque as ondas sonoras viajaram do sensor para o objeto e de volta do objeto para o sensor. Então você precisa dividir o resultado por dois.,

Distância (cm) = Velocidade do som (cm/s) x Tempo (µs) / 2

E, então, para o exemplo, este torna-se:

Distância (cm) = 0.0343 (cm/s) × 2000 (µs) / 2 = 34.3 cm

dependência da Temperatura da velocidade do som

A velocidade do som, na verdade, depende fortemente da temperatura e em muito menor grau da umidade relativa do ar. Wikipedia states that the speed of sound increases with roughly 0.6 m/s per degree Celsius., Para a maioria dos casos, a 20°C, você pode apenas usar 343 m/s, mas se você deseja obter leituras mais precisas, pode-se calcular a velocidade do som com a fórmula a seguir:

V (m/s) = 331.3 + (0,606 a × T)

V = Velocidade do som (m/s)
T = Temperatura do Ar (°C)

Esta fórmula não inclui a umidade desde o seu efeito sobre a velocidade do som é muito pequeno.

abaixo você pode encontrar um tutorial sobre como usar um sensor de temperatura e umidade DHT11 para calibrar a velocidade do som e obter uma leitura de distância mais precisa com o HC-SR04.,

como funciona o HC-SR04

na frente do sensor HC-SR04, você pode encontrar dois cilindros de prata (transdutores ultrassônicos), um é o transmissor das ondas sonoras e o outro é o receptor. Para deixar o sensor gerar uma explosão sônica, você precisa definir o pino de trigonometria alta para pelo menos 10 µs. O sensor então cria uma explosão de 8 ciclos de ultrassom a 40 kHz.esta explosão sônica viaja à velocidade do som e volta e é recebida pelo receptor do sensor. O PIN de eco, em seguida, produz o tempo em que as ondas sonoras viajaram em microssegundos.,

pode usar a função pulseIn() no código Arduino para ler o comprimento do pulso a partir do Eco pin. Depois disso, você pode usar a fórmula mencionada acima para calcular a distância entre o sensor e o objeto.,ncy

40 kHz faixa de Medição 2 – 400 cm Definição 3 mm e Medição do ângulo 15 graus Gatilho do sinal de entrada 10 µs alto do pulso Custo preço

Para mais informações você pode conferir a ficha técnica abaixo:

Fiação – Ligação do HC-SR04 para o Arduino UNO

O diagrama abaixo mostra como ligar o HC-SR04 sensor para o Arduino.,

HC-SR04 com o Arduino diagrama de fiação

Os exemplos de código abaixo utilizar o pino digital 2 e 3 para o gatilho e eco pino, respectivamente, mas é claro que você pode alterar para qualquer pino digital que você deseja.,C-SR04 Connections

HC-SR04 Arduino
VCC 5 V
Trig Pin 2
Echo Pin 3
GND GND

Example code for HC-SR04 with Arduino

Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Você pode enviar o seguinte código de exemplo para o seu Arduino usando o Arduino IDE. A seguir, vou explicar-lhe como funciona o código.

como o código funciona

Em primeiro lugar, o gatilho e o eco pin são definidos. I call them trigPin and EchoPin. O gatilho é conectado ao digital pin 2 e o eco pin ao digital pin 3 no Arduino.

a declaração #define é usada para dar um nome a um valor constante., O compilador irá substituir todas as referências a esta constante com o valor definido quando o programa é compilado. Assim, em todos os lugares que você mencionar trigPin, o compilador irá substituí-lo pelo valor 2 quando o programa for compilado.

// Define Trig and Echo pin:#define trigPin 2#define echoPin 3

Next I defined two variables: duration and distance. A duração armazena o tempo entre o envio e a recepção das ondas sonoras. A variável “distância” é utilizada para armazenar a distância calculada.,

// Define variables:long duration;int distance;

In The setup(), you start by setting the trigPin as an output and the echoPin as an input. Em seguida, inicializa a comunicação em série a uma taxa de baud de 9600. Mais tarde, irá mostrar a distância medida no monitor serial, que pode ser acedida com Ctrl+Shift+M ou ferramentas > Monitor Serial. Certifique-se de que a taxa de baud também é de 9600 no monitor serial.

no loop(), acciona o sensor ajustando o trinco alto por 10 µs., Note que para obter um sinal limpo, você começa por limpar o trigPin, ajustando-o para baixo por 5 microssegundos.

em seguida, você precisa ler o comprimento do pulso enviado pela echoPin. I use the function pulseIn() for this. Esta função espera que o pino Vá de baixo para alto, começa a cronometrar, em seguida, espera que o pino para ir baixo e pára o timing.

Depois disso, você pode calcular a distância usando a fórmula mencionada na introdução deste tutorial.finalmente, a distância calculada é impressa no monitor serial.,

exemplo código HC-SR04 com Arduino e NewPing library

a NewPing library escrita por Tim Eckel pode ser usada com muitos sensores de distância ultrassônicos. A versão mais recente desta biblioteca pode ser obtida aqui em bitbucket.org. você pode notar que o código abaixo, que usa a Biblioteca NewPing, é muito mais curto do que o código que usamos antes. Além disso, a NewPing library inclui algumas outras características agradáveis. Ele permite que você defina uma distância máxima para ler, ele não vai ficar por um segundo completo quando nenhum eco é recebido e tem um filtro integrado mediana.,

Você pode instalar a biblioteca indo para Sketch >Include Library> Add .Biblioteca ZIP no Arduino IDE.

a biblioteca inclui alguns exemplos que pode usar, mas terá de os Modificar para corresponder à sua configuração do ‘hardware’. Eu incluí um código de exemplo modificado abaixo que pode ser usado com a mesma configuração de fiação como antes.

Pode também usar distance = sonar.ping_cm() ou distance = sonar.ping_in() que devolve a distância medida em centímetros inteiros ou polegadas., Com esta função você não precisa fazer uma medição de duração e calcular a distância.a Biblioteca NewPing também facilita a interface com os sensores ultrassónicos, utilizando apenas 1 pin. Isto pode ser útil se você tiver muito poucos Pinos I/O disponíveis ou se você quiser usar um sensor ultrassônico de 3 pinos como o Ping paralaxe.

para criar uma configuração de 3 pinos (GND, 5V e SIG) você tem que conectar tanto o pino de gatilho quanto o pino de eco ao mesmo pin digital no Arduino., No código, a única coisa que você tem que mudar é a linha 6-7 e definir o mesmo pin para o trigPin e o echoPin. Por exemplo, pin digital 2.

//Define Trig and Echo pin#define trigPin 2#define echoPin 2

How to use ping_median() digital filter

a principal coisa que eu gosto na Biblioteca NewPing é que ela tem um filtro mediano embutido. Este filtro pode melhorar muito a precisão das suas leituras HC-SR04. A função ping_median() faz muitas medições de duração em uma linha, joga fora as leituras fora do intervalo e, em seguida, médias as restantes., Por padrão, ele vai fazer 5 leituras, mas você pode especificar quantos ele deve tomar. Substituir a linha 19 por linhas inferiores.

int iterations = 5;duration = sonar.ping_median(iterations);

código de exemplo HC-SR04 com I2C LCD e Arduino

para mostrar a distância medida num LCD de 2004 ou 1602 I2C, tudo o que tem a fazer é fazer as seguintes ligações e carregar o código abaixo. O sensor HC-SR04 Está ligado da mesma forma que antes.

HC-SR04 with Arduino and I2C LCD cabling diagram.,

I2C LCD Connections

I2C LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., Um Arduino UNO com o layout R3 (1.0 pinout), também tem os cabeçalhos SDA (linha de dados) e SCL (linha de relógio) pin perto do PIN AREF. Confira a tabela abaixo para mais detalhes.,f43445″>

Arduino Uno A4 A5 Arduino Nano A4 A5 Arduino Micro 2 3 Arduino Mega 2560 20 21 Arduino Leonardo 2 3 Arduino Due 20 21
I2C pin locations for different Arduino boards

The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Certifique-se de que você tem esta biblioteca exatamente instalada! Também inclui o fio.biblioteca h, que lhe permite comunicar com dispositivos I2C. Esta biblioteca deve ser pré-instalada com o Arduino IDE.

Se quiser aprender mais sobre como controlar um LCD I2C com o Arduino, pode verificar aqui o tutorial completo.

  • Como controlar um caractere I2C LCD com Arduino

Note que eu usei um visor de 20 x 4 LCD. Se você tem um tamanho diferente LCD (16 x 2 também é comum) você precisa mudar a linha 20 para LiquidCrystal_I2C lcd(0x27,16,2);., Se o seu LCD não tiver o endereço padrão I2C, 0x27, confira o tutorial completo I2C onde eu explico como você pode descobrir qual é o endereço.

Exemplo de código HC-SR04 com sensor de temperatura DHT11 e Arduino

Como mencionado anteriormente, a velocidade do som depende fortemente da temperatura do ar. Se você quiser medir longas distâncias (3-4 m) pode ser uma boa idéia adicionar um DHT11 ou DHT22 temperatura e umidade sensor à sua configuração. Isto permitir-lhe-á calibrar a velocidade do som em tempo real e, assim, aumentar a precisão das suas medições.,

adicionar um sensor DHT11 é realmente simples. O diagrama de cablagem abaixo mostra-lhe quais as ligações que precisa de fazer. Repare que estou a usar um DHT11 com uma prancha de fuga, por isso só preciso de ligar 3 pinos. Certifique-se de verificar o rótulo do sensor, a ordem dos pinos pode ser diferente, dependendo do fabricante. O sensor HC-SR04 Está ligado da mesma forma que antes.

HC-SR04 with Arduino and DHT11 cabling diagram.,

DHT11 Connections

DHT11 Arduino
VCC (+) 5 V
Signal (s) Pin 4
GND (-) GND

The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Esta biblioteca só funciona se você também tiver a biblioteca Adafruit_Sensor instalada, que também está disponível no GitHub. Você também pode baixar as duas bibliotecas clicando nos botões abaixo:

Você pode clicar no botão no canto superior direito do campo de código para copiar o código.

Exemplo de código HC-SR04 com DHT11 e I2C LCD

HC-SR04 com o Arduino, DHT11 e I2C LCD diagrama de fiação.

o código abaixo pode ser usado para combinar todos os 3 exemplos acima., Ele exibe tanto a temperatura, a velocidade do som e a distância medida no LCD.

HC-SR04 Dimensões

abaixo pode encontrar as dimensões do sensor ultra-sónico HC-SR04. Reparei que existem pequenas diferenças entre os fabricantes, por isso recomendo uma verificação dupla com o seu próprio sensor.

HC-SR04 Dimensões

HC-SR04 CAD

eu ter criado básica desenhos CAD do HC-SR04 sensor ultra-sônico que você pode fazer o download abaixo.,conclusão neste artigo, mostrei-lhe como funciona o sensor de distância ultrassónico HC-SR04 e como pode usá-lo com Arduino. Espero que tenha achado útil e informativo. Se você fez, por favor, compartilhá-lo com um amigo que também gosta de Eletrônica!

projecto pessoal: há alguns meses construí uma instalação interactiva na parede com alguns amigos. Usámos cerca de 30 sensores de distância ultrassónicos para detectar pessoas a andar em frente à parede. A parede incluiu Luzes e efeitos sonoros que mudaram dependendo de quão longe as pessoas estavam de pé.,

Foto: Guus Schoonewille

eu gostaria de saber quais os projetos que você planeja a construção (ou já construído) com o HC-SR04 sensor de distância. Se você tiver alguma dúvida, sugestão ou se você acha que as coisas estão faltando neste tutorial, por favor deixe um comentário abaixo.