Introdução
Se você acompanhou esse site desde o início dever ter passado pelo minicurso de algoritmos, de linguagem C, de C++ e também viu conosco o básico da Framework Arduino. Hoje entraremos em uma nova fase de aprendizado onde começaremos a explorar os principais sensores, módulos e componentes para o estudante de Sistemas Embarcados.
Por ser mais didático, continuaremos a utilizar a Framework Arduino. Assim usaremos o nosso tempo apenas para explicar o funcionamento e a forma de utilização de um determinado sensor ou componente escolhido para ser abordado na aula.
Por enquanto continuaremos com a plataforma o Wokwi que ainda nos atende, mas esporadicamente, visitaremos o Tinkercad para fazer uso de algum recurso que o Wokwi não disponha. Aconselho que você já criei uma conta pessoal no Tinkercad através desse link: https://www.tinkercad.com/join, para acessar mais facilmente nossos arquivos de exemplo.
Possíveis defasagens do nosso curso de Arduino básico serão tiradas nessa "segunda parte" do aprendizado.
O que são sensores?
Para nós de embarcados, sensores são dispositivos geralmente elétricos ou eletromecânicos capazes de detectar estímulos físicos ou químicos e convertê-los na forma de um sinal elétrico que pode ser medido ou monitorado.
Muitas vezes o que chamamos de sensor é na realidade um transdutor, pois ele também é capaz de converter uma grandeza física em um sinal elétrico. A diferença entre eles é que o transdutor também permite o caminho inverso, isto é, também converte um sinal elétrico em uma grandeza física.
Dependendo do seu mecanismo de funcionamento, os sensores podem ser indutivos, capacitivos, ultrassônicos, fotoelétricos, etc.
O que são módulos ou shields?
Geralmente são sensores ou dispositivos que já vem instalados em uma placa com componentes eletrônicos. A finalidade disso é tornar o uso desse sensor ou dispositivo mais eficiente ou mais amigável. Módulos podem conter resistores internos que dispensem o uso de resistores externos em pull up ou pull down.
Por exemplo, algumas telas de display LCD quando conectadas sozinhas a um Arduino exigem cerca de 12 cabos de jumpers para o seu funcionamento. No entanto podemos adquiri-las já conectadas á um módulo, isto é, a uma placa I2C que permite ligá-la a um Arduino com apenas 4 cabos.
![]() |
Diferença entre o número de conexões entre um LCD Simples e outro com módulo |
Sensor LDR ou Fotoresistor
A sigla LDR vem de Light Dependent Resistor ou resistor dependente da luminosidade. Isso quer dizer que um LDR é um resistor variável cuja resistência depende da intensidade luminosa. Com essa propriedade podemos utilizá-lo como um sensor de luminosidade.
Podemos encontrar LDRs que trabalham em diferentes faixas de luminosidade e também em diferentes tamanhos, variando de 5 a 12 mm. Também podemos encontrá-los na forma de um componente simples com dois terminais (GND e VCC) ou montado em um módulo, geralmente, com quatro conexões.
![]() |
Sensor LDR e um Módulo Sensor LDR (direita) |
Quando isolado como um componente seu funcionamento é analógico, devendo ser instalado em uma entrada analógica do Arduino, associado a um resistor pull-down. Já em um módulo, geralmente temos um terminal digital e outro analógico, permitindo a escolha do tipo de pino onde será conectado. Além disso teremos um terminal GND e outro VCC.
![]() |
Tabela com especificações de um LDR LM393 Genérico como exemplo |
Trabalhando no Tinkercad
Para mostrar uma simulação de um LDR simples em uma entrada analógica precisaremos usar plataforma Tinkercad. Como ela tem muitas opções, vou pedir para você apenas abrir o link abaixo para entrar em um projeto que eu já deixei pronto. Lembrando que você precisará de uma conta no Tinkercad.
Link: clique aqui
Ao acessar clique no botão COPIAR E USAR. Se tudo ocorreu bem, você dever ter entrado na tela do Tinkercad que mostra o nosso projeto. Ele é um pouco diferente do Wokwi, por isso faremos alguns ajustes:
- Clique no botão CÓDIGO para deixar o Sketch visível;
- Clique no Monitor Serial para ver as saídas do monitor;
- Finalmente clique em Iniciar Simulação para executar o Sketch.
![]() |
Ajustando da tela do Tinkercad para ficar parecida com o Wokwi |
Se você clicou em Iniciar Simulação, você deve estar vendo que o led vermelho acendeu e na janela do Monitor Serial aparece o valor da leitura que o sensor está fazendo. Se você clicar no fotoresistor verá que ele abre uma barra deslizante que permite alterar a leitura que ele está fazendo, simulando outras luminosidades.
![]() |
Aumentando a luminosidade após clicar no sensor |
Se você aumentou a luminosidade arrastando a barra para baixo, deve ter visto que valor da leitura aumentou no monitor serial e o led vermelho apagou. Vamos comentar o Sketch para entender o que está acontecendo.
Sketch para o sensor simples
Se você olhar o sketch verá que ele é bem simples e muito parecido com os das aulas de potenciômetros do curso passado. Temos duas variáveis inteiras, uma para armazenar o pino do led e outra para a leitura do sensor (linhas 1 e 2).
Como vamos mostrar as leituras no monitor serial iniciamos o monitor na linha 5, em seguida configuramos o pino do led para saída. No loop estamos apenas armazenando a leitura do sensor na variável correspondente, imprimindo a leitura no monitor serial e fazendo um teste com if.
Nesse teste, se a leitura for menor ou igual a 100 o led deverá acender com o digitalWrite como HIGH, caso contrário vale o que diz o else, isto é, o led se apaga. Eu usei esse valor 100 com base nos testes que fiz com um LDR físico. Nesse meu LDR, quando a leitura estava próxima desse nível, o ambiente já estava escuro precisando de uma luz artificial.
- int leitura = 0;
- int led=9;
- void setup()
- {
- Serial.begin(9600);
- pinMode(led, OUTPUT);
- }
- void loop()
- {
- leitura = analogRead(A0);
- Serial.print("Leitura: ");
- Serial.println(leitura);
- if (leitura<=100){
- digitalWrite(led,HIGH);
- }
- else{
- digitalWrite(led,LOW);
- }
- delay(10);
- }
Sobre a montagem
Com relação a essa montagem, utilizei um led com resistor 330 Ω e um LDR com resistor de 4,7 KΩ, por isso a oscilação da leitura ficou nos valores que citei. Caso utilizássemos um resistor de 10 KΩ, por exemplo, o valor mínimo da leitura seria de 54 e o máximo de 974.
Isso quer dizer que o valor da resistência do resistor associado ao LDR altera a amplitude de leitura do fotoresistor, aumentando ou diminuindo sua sensibilidade. Você pode testar isso parando a simulação, clicando no resistor de LDR e alterando o valor da sua resistência na janelinha azul que se abre:
![]() |
Alterando o valor da resistência do resistor no Tinkercad |
Uma alternativa mais prática para verificar isso é acessando esse outro projeto onde colocamos seis sensores LDRs associados a seis resistores diferentes de 1, 5, 10, 50, 100 e 500 KΩ. Nele é possível ver que o valor mínimo de leitura aumenta muito quanto maior a resistencia. (clique aqui para ver)
Como dito anteriormente, o LDR funciona como um resistor variável cuja resistência muda de acordo com a intensidade luminosa. Você pode comprovar isso através dos multímetros que coloquei na simulação testando a resistência do conjunto resistor+LDR.
Basta iniciar a simulação, clicar no LDR para aparecer a barra de seleção de luminosidade e alterá-la para ver que a resistência cai de 184 para 5,21 KΩ. Portanto, quanto mais escuro o ambiente, maior será a resistência. Da mesma forma, quanto mais iluminado, menor a resistência.
![]() |
Verificando a variação da resistência conforme a luminosidade |
Um segundo multímetro mostra a própria resistência do LDR sem o resistor, indicando que ela varia de 180 KΩ no escuro a 500 Ω no claro.
Na próxima aula, voltaremos ao Wokwi para ver o funcionamento de um módulo com o sensor LDR e falaremos mais sobre o processo de conversão da leitura em uma grandeza. Hoje como era o nosso primeiro projeto no Tinkercad, eu preferi entregá-lo pronto, mas as próximas aulas vou dar oportunidade para você montá-lo do zero.
Referências
BLOG DA ROBÓTICA. Utilizando o Sensor de Luminosidade LDR no Arduino. Disponível em <https://www.blogdarobotica.com/2020/09/29/utilizando-o-sensor-de-luminosidade-ldr-no-arduino/> Acesso em 24 out 2024.
BLOG ELETROGRATE. Controle de luminosidade com Arduino e sensor LDR. Disponível em <https://blog.eletrogate.com/controle-de-luminosidade-com-arduino-e-sensor-ldr/> Acesso em 24 out 2024.
TRANSDUTOR. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2020. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Transdutor&oldid=57369248>. Acesso em: 24 out. 2024.