Lendo um potenciômetro com ESP8266 NodeMCU

Neste tutorial, nós vamos dar início a uma grande quantidade de conteúdos voltados para o ensino dos conceitos básicos necessários para que você consiga começar a utilizar o seu NodeMCU e desenvolver os seus projetos de automação, seja para sua escola, para sua casa ou até mesmo para uma indústria. Hoje, nós vamos te mostrar como você deve proceder para ler as informações provenientes de um potenciômetro com o seu ESP8266 NodeMCU.

[toc]

kit robotica educacional com Arduino ESP ou Microbit

As grandezas analógicas e a porta de entrada analógica A0

Antes de aprendermos a efetuar  leitura de um potenciômetro, nós devemos definir o que são as grandezas analógicas. Bem, as grandezas analógicas são aquelas que, ao contrário das grandezas digitais, podem assumir infinitos valores de amplitude dentro de uma faixa de valores. Imagine por exemplo, o velocímetro de um carro. Este instrumento pode ser considerado como sendo um medidor analógico, pois o ponteiro gira continuamente conforme o automóvel acelera ou freia. Se o ponteiro girasse em saltos, o velocímetro seria considerado digital.

O módulo ESP8266 NodeMCU possui um pino destinado a lidar com a leitura deste tipo de grandeza, ou seja, um pino cuja função é receber níveis de tensão e em seguida traduzir os mesmos em uma linguagem adequada para que possamos manipulá-los. Este processo ocorre da seguinte maneira: o NodeMCU que estamos utilizando suporta sinais de tensão entre 0 e 3,3V em suas entradas, portanto, caso nós coloquemos um sinal de tensão de 0 volts na porta de entrada analógica A0, o nosso módulo irá associar esta informação ao número 0 (zero) . Em contrapartida, caso o sinal em questão tenha magnitude de 3,3V, o NodeMCU irá referenciar este valor ao número 1023.

Conversão dos valores de tensão em valores numéricos
Figura 1 – Conversão dos valores de tensão em valores numéricos

 


Mãos à obra – Efetuando a leitura de um potenciômetro

Componentes necessários

Montando o projeto

Hardware utilizado
Figura 2 – Hardware utilizado

Hardware montado

Hardware montado
Figura 3 – Hardware montado

Programando

Este é o código que utilizaremos no desenvolvimento deste tutorial

float leitura;

 void setup() 
{ 
  Serial.begin(115200);
  Serial.println("Leitura do potenciometro");
  Serial.println("Valor        Volts");
}

void loop() 
{
  Serial.print(analogRead(A0));
  Serial.print("         ");
  leitura = (analogRead(A0)*3.3/1023);
  Serial.println(leitura);
  delay(1500);  
}

Colocando para funcionar

Após compilarmos o código apresentado, nós teremos este resultado:

Resultado obtido
Figura 4 – Resultado obtido

Entendendo a fundo

Software

– Declarando a variável global para armazenar o valor convertido do nível de tensão

Inicialmente, nós vamos declarar uma variável do tipo float para que ao efetuarmos os cálculos referentes à conversão do nível de tensão presente no potenciômetro, esta possa armazenar o resultado da maneira desejada, isto é, sob a forma de números com casas decimais.

float leitura;

– Definindo as configurações iniciais

Dentro da função setup() nós iniciamos a conexão com o Serial Monitor através da função Serial.begin() (passando como parâmetro o valor da taxa de transmissão de dados (como sugestão, utilize este valor)). Além disso, nós vamos utilizar a sentença Serial.println(). Para escrever na tela um título para a nossa aplicação, de modo que, este será “Leitura do potenciômetro”. Por fim, recorremos à sentença Serial.println() novamente e enviamos através da porta serial o cabeçalho da tabela que estamos criando (repare que nós demos alguns espaços entre as duas palavras deste cabeçalho justamente para a tabela fique mais agradável de ser visualizada).

 void setup() 
{ 
  Serial.begin(115200); 
  Serial.println("Leitura do potenciômetro"); 
  Serial.println("Valor        Volts"); 
}  

– Lendo o valor do potenciômetro

A primeira ação que nós realizaremos dentro da função loop() será enviarmos o valor referente ao sinal de tensão já convertido na escala de 0 a 1023 através da porta serial para ser apresentado no Serial Monitor com a utilização da sentença Serial.print(). Em seguida, utilizamos a sentença Serial.print() novamente para enviar uma série de espaços para que o valor que virá depois (convertido para volts) esteja organizado logo abaixo da palavra Volts que faz parte do cabeçalho da tabela (note que aqui nós utilizamos somente as funções print() e não println() pois assim nós conseguimos escrever coisas na mesma linha).

Posteriormente, nós convertemos o valor obtido através da entrada analógica do nosso módulo ESP8266 NodeMCU para uma escala em volts e inserimos o resultado na variável leitura, de modo que, após este procedimento, nós utilizamos a sentença Serial.println() para fazer com que este valor seja enviado para o Serial Monitor. Por fim, utilizamos a função delay() para determinar o intervalo entre cada uma das aquisições.

void loop() 
{
  Serial.print(analogRead(A0));
  Serial.print("         ");
  leitura = (analogRead(A0)*3.3/1023);
  Serial.println(leitura);
  delay(1500);  
}

Considerações finais

Neste tutorial, nós demonstramos como você pode fazer para realizar a leitura de valores de sinais de tensão provenientes de um potenciômetro através de um módulo ESP8266 NodeMCU.  Esperamos que continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Lembre-se de deixar suas dúvidas nos comentários abaixo.

Privacy Preference Center