RÉGUA ELETRÔNICA COM ARDUINO + SENSOR ULTRASSOM + DISPLAY OLED
Fala galera, tudo beleza?
No post de hoje iremos apresentar um projeto de uma régua eletrônica utilizando um sensor ultrassônico. Nossa régua irá medir a distância entre nosso sensor e o objeto alvo.
Este sensor será controlado por um Arduino UNO e as medidas serão exibidas em um Display OLED de 0,96″.
Existem inúmeras aplicações para este tipo de sensor, que vão desde uma simples régua até dispositivos de proteção para máquinas e pessoas. Atualmente este tipo de sensor é amplamente utilizado na área da robótica para fazer a detecção de obstáculos.
Depois de entender o funcionamento deste sensor o infinito é o limite da criatividade para quaisquer novos projetos com ele.
Inicialmente vamos estudar a teoria básica deste nosso sensor ultrassônico.
HC-SR04
O sensor ultrassônico HC-SR04 é constituído por um emissor e um receptor de ondas sonoras. O emissor envia uma frequência específica e o receptor capta esta frequência quando ela é refletida por algum objeto dentro da faixa de alcance.

Este módulo oferece excelente detecção de distâncias sem contato com o objeto, com alta precisão e leituras estáveis de 2 cm até 400 cm. Sua operação não é afetada pela luz solar ou por material preto. Ele vem completo com transmissor ultra-sônico e módulo receptor.
Características:
- Alimentação :+5V DC;
- Corrente Nominal: 15mA;
- Ângulo eficaz: <15°;
- Distância de detecção : 2cm – 400 cm;
- Resolução : 0.3 cm;
- Trigger Input Pulse width: 10uS;
- Tamanho: 45mm x 20mm x 15mm.
Para conhecer melhor este módulo sugerimos ler o datasheet.

Display Oled Gráfico 128×64
Utilizamos também um display OLED com comunicação I2C conectado no Arduino UNO. Este tem a função de auxiliar o usuário na aplicação do equipamento. Mostrando a distância medida entre o sensor e o objeto alvo. O display possui um controlador SSD1306 e uma resolução de 128 x 64 pixels, descritos no datasheet do módulo. A principal vantagem deste módulo de visualização é sua alta

LET’S WORK!
Materiais Utilizados:
- 1 x Arduino UNO R3;
- 1 x Protoboard;
- 1 x Display Oled Gráfico 128×64;
- 1 x Sensor De Distância Ultrassônico HC-SR04;
- Jumpers.
Esses itens, e mais uma outros para implementar seu projeto – você acha AQUI na nossa loja :D.
Montagem

Código comentado:
// Projeto: Régua Eletrônica
// Autor: Samuel Centenaro de Oliveira
// Data: 03.07.2017
// V_1.0.1
//Carrega a biblioteca do display OLED
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); //deve ser utilizada esta configuração
//Carrega a biblioteca do sensor ultrassonico
#include <Ultrasonic.h>
//Define os pinos para o trigger e echo
#define pino_trigger 4
#define pino_echo 5
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_echo);
float cmMsec, inMsec, mMsec; //declaração das variáveis utilizadas para medição de distancia
void draw()
{
// Comandos graficos para o display devem ser colocados aqui
// Seleciona a fonte de texto
u8g.setFont(u8g_font_profont11);
// Mensagens iniciais
u8g.drawRFrame(0, 18, 128, 46, 4);
u8g.drawStr( 8, 10, "Regua Eletronica");
// Mostra valor do sensor em centimetros ou metros
// para valores menores que 1 metro será mostrado em centimetros
if(cmMsec < 100)
{
u8g.setFont(u8g_font_9x18B);
u8g.setPrintPos(25, 45);
u8g.print(cmMsec); //linha de comando que imprime a variavel de retorno do valor do sensor
u8g.drawStr( 85, 45, "cm");
}
else
{
u8g.setFont(u8g_font_9x18B);
u8g.setPrintPos(30, 45);
u8g.print(mMsec); //linha de comando que imprime a variavel de retorno do valor do sensor
u8g.drawStr( 85, 45, "m");
}
}
// Imprime mensagem no rodape
void setup(void)
{
Serial.begin(9600); //inicia comunicação serial
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
{
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
{
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW )
{
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255, 255, 255);
}
}
void loop(void)
{
//Le as informacoes do sensor, em cm e pol
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
mMsec = cmMsec/100;
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
Serial.print("Distancia em cm: ");
Serial.print(cmMsec);
Serial.println(mMsec);
u8g.firstPage();
// Chama a rotina de desenho na tela
do
{
draw();
}
while ( u8g.nextPage() );
delay(100); //mantem uma atualização a cada 100 miliSegundos
}
Este código basicamente fica “plotando” as informações no display a cada 100 ms. As informações de distâncias medidas são determinadas pelo comando “ultrasonic.timing();” e após é realizado o cálculo de distância.
É muito importante que as bibliotecas do sensor e do display sejam instaladas e utilizadas corretamente para o funcionamento adequando do projeto.
Como um adicional ao projeto, para quem não possui ainda o display, existe uma maneira de monitorar os valores de medição de distância através da porta serial. Para quem quiser testar esta alternativa pode-se alterar o valor do delay de 100 para 1000 na última linha do código, isto facilitará a impressão dos dados no terminal serial.

Conclusões:
Após a montagem de todos os componentes na protoboard, carregamento do firmware no Arduino e realizado os testes, foi identificado um ótimo funcionamento do sensor ultrasom.
Ele foi capaz de executar leituras consideravelmente exatas e precisas principalmente pelo valor do módulo.
O display também é uma ótima ferramente para quem gosta de criar projetos com interfaces de leitura.
Então, gostaram da postagem? Ficaram com dúvidas? Tem sugestão?
Este é só uma montagem simples da integração entre estes componentes, com eles podemos fazer diversos projetos interessantes.
No próximo post falaremos especificamente sobre o display OLED: funcionamento, configurações e vários arquivos exemplos. Até mais!!
Se você gostou deste post deixe seu comentário aqui e curta no Facebook!!

Massa . muito bom rsr
Ótimo postagem. Mostra como é grande a gama de projetos que abrange o Arduino.
Boa noite… Eu gostaria de sabe se consigo fazer um projeto utilizando um display OLED grande, onde terá informações de 4 leituras de sensores ultrasonicos de distância?
Se sim…. Vc poderia me ajudar?
Olá Maycon, o oled que você irá utilizar é I2C? Quais as interfaces de comunicação dos sensores?
O primeiro passo é saber isso e utilizar um arduino ou outra placa microcontrolada que tenha pinos
suficientes para isso.