FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples, mas não simplórios, astuto, mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques!

sexta-feira, 16 de setembro de 2022

Como Ler Valores Analógicos ADC Usando NodeMCU ESP8266 - IDE Arduíno!

Como Ler Valores Analógicos ADC Usando NodeMCU ESP8266 - IDE Arduíno - fvml
Como Ler Valores Analógicos ADC Usando NodeMCU ESP8266 - IDE Arduíno

Olá a Todos!

No post de hoje, faremos um guia rápido sobre leitura analógica no pino A0 do ESP8266, utilizaremos um potenciômetro para variar o range analógico 0 à 1023, e enviaremos esses dados para ser visualizado no Serial Monitor.

Converteremos o valor analógico com a função map(), e converteremos para um range de 0 a 255, para ser usado na saída D2, e controlaremos a intensidade do LED.

Esse tipo de circuito servirá para qualquer tipo de módulo; ESP8266, ESP32, Arduino, etc. já que o código é escrito na IDE Arduino, e só precisaremos mudar a pinagem do módulo que usaremos no código.


Para podermos falar sobre a GPIO ADC, temos que conhecer as GPIOs disponíveis no ESP8266, e você pode conferir o Pinout do NodeMCU ESP8266 clicando no link abaixo.

Resolução ADC ESP8266

A GPIO analógica do ESP8266 tem uma resolução de 10 bits, o que significa que você irá obter valores que variam entre 0 à 1023.

É importante saber também que a faixa de tensão de entrada do pino ADC do ESP8266 é de 0 à 1V, isso para os módulos puros, como os; ESP-07, ESP-12E, ESP-05, etc. como mostrado na Figura 2 Abaixo. 

Módulos ESP-12E, ESP-07, ESP-05 - fvml
Fig. 2 - Módulos ESP-12E, ESP-07, ESP-05 

No entanto, a maioria das placas de desenvolvimento ESP8266 como os NodeMCU, Wemos, D1 Mini, etc. veem com um divisor de tensão interno. Isso nos permite a utilização de sinais com a faixa de tensão de entrada de 0 à 3.3V, o que nos facilita a utilização do potenciômetro ligado a alimentação de 3.3V direto do Módulo ESP com mais praticidade. 

O que precisaremos para montar esse circuito?

Para realizarmos a demonstração da GPIO analógico do ESP, utilizaremos:
  • Um potenciômetro de 5 ou 10K.
  • Um NodeMCU ESP8266 ou mesmo um Wemos D1 Mini, ou qualquer outro módulo embarcado ESP8266 que você tiver.
  • Uma Protoboard, “Para facilitar o manuseio”, se não tiver podes ligar direto.
  • Fios para conexão, etc.

O que faremos?

Utilizaremos um potenciômetro para gerar uma tensão de 0 à 5V, simulando um sinal analógico, ligaremos na porta analógica A0 do NodeMCU, faremos a leitura dos valores analógicos provindos do potenciômetro, controlaremos o LED com valores de 0 à 255, e imprimiremos no Serial Monitor.

Para controlar a intensidade de luminosidade do LED, utilizaremos um potenciômetro de 5K ou 10K, conectado a porta A0 do módulo ESP8266.

Os materiais que utilizaremos!

Os componentes que utilizaremos são três: O hardware principal que é o NodeMCU ESP8266, um LED para podermos variar o seu brilho, e o Potenciômetro que utilizaremos para controlar o brilho do LED.

Como Ler Valores Analógicos no ESP8266 NodeMCU ADC IDE Arduíno - fvml
Fig. 3 - Como Ler Valores Analógicos no ESP8266 NodeMCU ADC IDE Arduíno

Diagrama de Ligação!

Na Figura 4 abaixo, temos o diagrama esquemático do circuito que utilizaremos. As conexões são bastante simples, a ligação dos pinos do potenciômetro ao NodeMCU são feitas da seguinte forma:

  1. Pino Esquerdo - Fio Vermelho - Ligado ao Pino 3V3
  2. Pino Central - Fio Verde - Ligado a Porta Analógica A0
  3. Pino Direito - Fio Preto - Ligado ao GND

O LED é ligado diretamente na GPIO D2 do NodeMCU, não estou utilizando nenhum resistor em série com o LED, diferente do mostrado no diagrama da Figura 4 abaixo, pois não ha necessidade de se utilizar nenhum resistor para o LED branco.

Mas, é recomendado o uso do resistor de 100 ohms, se você for fazer uso contínuo do LED na GPIO, por períodos muito grandes, se não usar o resistor, o LED gradualmente “cerca de um ano” vai perdendo o seu brilho.

Como Ler Valores Analógicos no ESP8266 NodeMCU ADC IDE Arduíno - fvml
Fig. 4 - Como Ler Valores Analógicos no ESP8266 NodeMCU ADC IDE Arduíno

Na Figura 5 abaixo, temos a ligação real que fizemos, como podemos observar o resistor não foi utilizado, já que a saída da GPIO é de 3.3V máximo.

Controlando Brilho do LED com Potenciômetro Porta Analógicos no ESP8266 NodeMCU ADC IDE Arduíno - fvml
Fig. 5 - Controlando Brilho do LED com Potenciômetro Porta Analógicos no ESP8266 NodeMCU ADC IDE Arduíno

O Código Explicado!

O código é bastante simples, incrementamos um LED, só para realizarmos a demonstração, não sendo exatamente necessário para o funcionamento.
 
Nas linhas 9, 10, iniciamos com duas constantes, que serão as constantes associadas aos pinos de entrada do potenciômetro e o de saída para o LED, esses são a constante "potentiometer" associada a porta A0, e a constante "Led" associada a porta D2.

Nas linhas 12, 13, são também duas constantes "potValue" e a constante "pwmOutput", essas não são associadas a pino algum, são constantes de armazenamento, a primeira irá armazenar os valores advindos da leitura do potenciômetro, e a segunda será valores convertidos pela função map() para controlar o brilho do LED.

Na linha 15, temos o Void Setup(), temos a inicialização do Serial Monitor

Na linha 17, temos a função Serial.begin(9600), onde o valor dentro da função determina a velocidade de comunicação serial, que no caso está em 9600 bits por segundo.

Na linha 20, temos o Void Loop(), e é aqui onde todos os parâmetros dentro da função loop, ficará rodando sem parar.

Na linha 22, já dentro do loop, encontramos a função analogRead(); que ler o valor do potenciômetro e a variável potValue recebe esses dados.

Na linha 24, temos a função map(), que converte o valor analógico de 0 à 1023 recebido do potenciômetro através da variável potValue, e converte parao range entre 0 à 255, que é o valor de range do PWM.

Na linha 26, a função analogWrite(), ativa o LED conforme o que recebeu do potenciômetro sendo convertido para a variável pwmOutput

Nas linhas 29, 30, 31 e 32, são as linhas que imprimem as informações digitadas e coletadas das variáveis potValue e pwmOutput.

Na linha 36, temos a famosa função delay(), que estipula um tempo de 2 milissegundos, para o loop continuar a refazer todas as leituras.

E por hoje é só, espero que tenhamos alcançado suas expectativas!

Agradecemos por visitar o nosso blog e esperamos tê-lo(a) novamente por aqui em breve. Não deixe de conferir nossos outros conteúdos sobre tecnologia e assuntos variados. 

Se inscreva no nosso BlogClique Aqui — FVM Learning!

Nos ajude a divulgar nosso trabalho, compartilha nas redes sociais, Facebook, Instagram, nos grupos de WhatsAppuma simples atitude sua, faz com que cresçamos juntos e melhoremos o nosso trabalho!

Forte abraço!
Deus vos Abençoe!
Shalom.

Nenhum comentário:

Postar um comentário