PROTÓTIPO DE SENSOR DE ESTACIONAMENTO, DISPLAY OLED e PLACA RODUINO
Fala Pessoal! Tudo Bom? 😉
Bom, hoje vamos falar sobre, ou melhor, vamos também mostrar como desenvolver, prototipar um circuito eletrônico bem bacana, que se comporta perfeitamente como um sensor de estacionamento “visual”! 😀
Nosso circuito, o protótipo inicial, utiliza um sensor ultrassônico que “suporta intempéries” – modelo JSN-SR04T-2.0 – e que pode medir distâncias desde os 20cm até os 600cm!
Mas vamos lembrar Pessoal, que apesar de estarmos aqui utilizando o circuito, este protótipo como sensor de estacionamento, sabemos também que é possível imaginar e criar várias outras aplicações para este tipo de circuito, sensor e display OLED, basta colocarmos os neurônios pra trabalhar! (risos) 💡
Nosso circuito irá funcionar de acordo a uma verdadeira “régua digital/eletrônica“ utilizando o sensor ultrassônico modelo JSN-SR04T-2.0, que tem a vantagem de suportar a “ação do tempo” segundo seu fabricante e que pode medir distâncias consideráveis comparando-o com outros modelos disponíveis no mercado, vide o modelo HC-SR04 (e que muitas das vezes não podem ser utilizados “outside”). 🙄
Nossa Trena Digital irá calcular a distância entre o sensor ultrassônico e qualquer objeto que possa “rebater” o sinal enviado pelo sensor e a partir daí, com alguns cálculos, mostrar o valor da leitura no Display OLED 0.96″ I2C Azul.
Tanto nosso sensor JSN-SR04T-2.0 quanto o Display OLED de 0.96″ com conexão I2C, serão controlados por nossa Placa Roduino (um Arduino Standalone feito em casa), que para quem não conhece oferece os “mesmos recursos” que um Arduino UNO (que claro, também pode ser utilizado sem problemas por quem ainda não tem a Roduino)! 😉
Uma vez que a gente consiga de fato entender o real funcionamento do sensor ultrassônico JSN-SR04T-2.0, então realmente “o céu” 😆 é o limite para que nossa criatividade possa alcançar ao prototiparmos quaisquer novos projetos utilizando sensores ultrassônicos de uma maneira geral! 😎
Vamos dar uma olhada na “forma de funcionamento” do sensor ultrassônico (e tal teoria basicamente se aplica a outros modelos que não somente o nosso utilizado aqui).
UMA VISÃO GERAL DO SENSOR ULTRASSÔNICO – JSN-SR04T-2.0:
O JSN-SR04T-2.0 assim como o próprio HC-SR04, pode ser utilizado simplesmente para medir a distância entre o sensor e um objeto, assim como, pode ser utilizado para acionar portas do microcontrolador, desviar um robô de barreiras, acionar luzes, acionar alarmes, acionar outros circuitos, etc enfim, as possibilidades são infinitas! ?
Então Pessoal, observando as figuras acima, é notável que o princípio de funcionamento do sensor ultrassônico (JSN-SR04T-2.0 >> datasheet) e do modelo HC-SR04, são completamente baseados na seguinte sistemática: o transmissor (Tx) do sensor envia sinais ultrassônicos, e neste momento o receptor (Rx) do sensor fica no estado de “alerta” esperando receber o sinal de retorno, que na verdade é o próprio sinal de (echo), e com base no tempo entre o envio do sinal e o retorno do mesmo, então é calculada a distância entre o sensor e o objeto detectado (o objeto que serviu como obstáculo para os sinais de ultra-som baterem e voltarem). ?
💡 Este módulo sensor promove uma boa detecção de distâncias sem realizar qualquer contato com o objeto “alvo/obstáculo”, com boa precisão e leituras estáveis de 20 cm até aproximadamente 6 metros!
Ahh, e vale lembrar que por estarmos trabalhando com sensor ultra-sônico, então não sofremos qualquer problema na operação dele pela luz solar ou por obstáculos de cores escuras (que geralmente não “refletem” muito bem até mesmo a luz UV). ❗
ALGUMAS ESPECIFICAÇÕES SOBRE O MÓDULO SENSOR JSN-SR04T-2.0:
- Alimentação: 3.0 ~ 5.5V DC;
- Corrente Nominal: 8mA;
- Ângulo Eficaz: 15°;
- Distância de Detecção: 20cm – 600 cm;
- Resolução: 1 mm;
- Trigger Input Pulse Width: 10uS;
- Tamanho: 42mm x 29mm x 12mm.
UMA VISÃO GERAL DO DISPLAY OLED I2C GRÁFICO 0.96″ (128×64):
Pessoal, como falamos desde o início do artigo, para este projeto utilizamos um display do tipo OLED (sim, se quiséssemos, também poderíamos utilizar display LCD comum, LCD I2C, Matriz de LEDs e por aí vai…) que oferece comunicação I2C e vai conectado diretamente a nossa placa Roduino ou Arduino UNO.
A função “básica e principal” do nosso Display OLED no nosso circuito eletrônico, será a de mostrar a distância medida entre o sensor ultrassônico e o objeto alvo, ou melhor, o objeto que serviu como “obstáculo” para as ondas ultra-sônicas! Este display OLED I2C 0.96″ de cor Azul, utiliza um controlador modelo SSD1306 e oferece uma resolução máxima de 128×64 pixels (que não deixa nada a desejar visualmente)!
Vejam o Datasheet do módulo Display OLED I2C.
Lembrando pessoal, que algumas das principais vantagens de se utilizar o display OLED, é que sua resolução é muitíssimo boa e o tipo de conexão I2C (que utiliza apenas 2 fios – SCL e SDA) facilita demais a montagem do protótipo. 😉
VISÃO DO CIRCUITO ESQUEMÁTICO DO PROTÓTIPO:
CÓDIGO/SKETCH DO NOSSO CIRCUITO DE TRENA DIGITAL/SENSOR DE ESTACIONAMENTO ULTRASSÔNICO:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
// ========================================================= // // PROTÓTIPO : Trena Digital ou Sensor de Estacionamento // // ========================================================= // // Detalhes : https://EletronicaParaTodos.COM // // http://EletronicaParaTodos.NET // // http://EletronicaParaTodos.ORG // // --------------------------------------------------------- // // Autor: Rodrigo Costa do Blog EletronicaParaTodos.com // // _________________________________________________________ // // Baseado no Sketch Original de: Samuel C. Oliveira // // --------------------------------------------------------- // // Rev.01 : 09/04/2018 // // --------------------------------------------------------- // // Utiliza as bibliotecas externas: "U8glib" e "Ultrasonic" // // ========================================================= // // Carregamos a biblioteca do display OLED: #include "U8glib.h" // Devemos utilizar esta configuração: U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Carregamos a biblioteca do sensor ultrassonico #include <Ultrasonic.h> // Definimos os pinos para o trigger e echo #define pino_trigger 4 #define pino_echo 5 // Inicializamos o sensor nos pinos definidos acima Ultrasonic ultrasonic(pino_trigger, pino_echo); // Declaramos as variáveis utilizadas para medição de distancia float cmMsec, mMsec; //float inMsec; void draw() { // Comandos graficos para o display devem ser colocados aqui // Selecionamos a fonte de texto u8g.setFont(u8g_font_profont11); // Mensagens iniciais u8g.drawRFrame(0, 18, 128, 35, 4); u8g.drawStr( 7, 10, "-- TRENA DIGITAL --"); // Imprimimos mensagem no rodape do display u8g.drawStr( 1, 64, "Eletronica Para Todos"); // Mostramos o valor do sensor em centimetros ou metros // para valores menores que 1 metro sera mostrado em centimetros if(cmMsec < 100) { u8g.setFont(u8g_font_9x18B); u8g.setPrintPos(25, 40); u8g.print(cmMsec); //linha de comando que imprime a variavel de retorno do valor do sensor u8g.drawStr( 85, 40, "cm"); } else { u8g.setFont(u8g_font_9x18B); u8g.setPrintPos(30, 40); u8g.print(mMsec); //linha de comando que imprime a variavel de retorno do valor do sensor u8g.drawStr( 85, 40, "m"); } } void setup(void) { Serial.begin(9600); //iniciamos a comunicação serial if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); // branco } else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); // intensidade máxima } else if ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); // pixels ligados } else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { u8g.setHiColorByRGB(255, 255, 255); } } void loop(void) { // Lemos 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(); // Chamamos a funcao de desenho na tela do { draw(); } while ( u8g.nextPage() ); delay(100); //mantemos uma atualização a cada 100 miliSegundos } |
Com o Sketch/Código acima pessoal, o que iremos “assistir” será a “plotagem” das informações, em nosso caso, a “distância calculada entre nosso sensor e o obstáculo“, que será efetivamente apresentada no display OLED, sempre a cada 100 ms (de acordo a nossa programação).
💡 Observação: As informações sobre as distâncias calculadas são determinadas pelo comando “ultrasonic.timing();” proveniente da biblioteca externa que adicionamos em nosso projeto/Sketch, e somente após esta linha de comando é/será realizado os cálculos de fato sobre a distância medida.
Não podemos esquecer de instalar devidamente as bibliotecas responsáveis pelo “manejo” do sensor ultrassônico e também do nosso Display OLED Pessoal! 💡 Caso contrário nosso protótipo não funcionará da forma que o idealizamos/projetamos/programamos! 😳
Ahh Pessoal! Se vocês não perceberam ainda, utilizamos no nosso código comandos específicos para “imprimir” na tela do nosso computador, sim, através do Monitor Serial da IDE do Arduino os valores provenientes da medição da distância calculada que serão desta forma, transmitidos através da porta serial e nosso microcontrolador ATMEL ATmega328P – Placa RODUINO ou ARDUINO UNO.
E AGORA, PARAMOS COM A “TEORIA”! 😮
SIM! VAMOS DIRETAMENTE A “PRÁTICA” 😆
VAMOS ASSISTIR TUDO ISSO NA “VIDEO-AULA” ABAIXO:
Pessoal, tenho bastante esperança que este post, que este artigo tenha sido útil para vocês de alguma forma! De verdade! 😀
Se assim foi, sejamos gentis e principalmente humanos de bom coração para com Todos os que busquem novos Conhecimentos também…COMPARTILHANDO! 💡 😉 ➡
Gratidão pela Paciência! 😉
Forte Abraço,
Rodrigo Costa do Blog,
https://EletronicaParaTodos.com
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021
Muito legal, funcionou direitinho!!! obrigado por compartilhar!!!
Fala Thiago! Tudo Bom?!
Boa Noite!
Rapaz, primeiramente muito obrigado pela sua visita e pelo seu comentário! 🙂
A coisa mais bacana do mundo é saber que de alguma forma ou outra fomos úteis a alguém! 😉
Ahh, valeu mesmo pelo feedback!!!
Seja muito bem-vindo e se Inscreve lá no Canal do Youtube e outras mídias Sociais se quiser! 😉
Um Abraço,
Rodrigo Costa do Blog,
https://EletronicaParaTodos.com
estou com dificuldade em mostrar as informação dos sensores pra o display voce pode ajudar?
Fala Marcos! Tudo Bom?!
Rapaz, sei que já tem um “tempão” que enviaste esta mensagem, MAS sinceramente não sei a razão pela qual o Blog colocou seu comentário na seção de SPAM!! o.O
Enfim, somente agora pude ver isso e não poderia deixar de lhe responder, apesar de que acredito que você já tenha até solucionado o problema por aí! 😉
Bom, caso ainda não tenha resolvido, é só falar! Tentarei ajudar no que for possível!
Um Abraço,
Rodrigo Costa do Canal Youtube,
https://youtube.com/EletronicaParaTodos