Primeiros passos com o ESP8266 NodeMCU – Utilizando sinais PWM
Até agora nós já aprendemos a realizar as leituras das portas de entrada analógica e digital do nosso módulo ESP8266 NodeMCU e também vimos como devemos proceder para poder acionar dispositivos que funcionam baseados em um comportamento ON/OFF por meio das portas de saída digital existentes no mesmo. Para completar este ciclo, nós devemos apenas falar sobre a utilização das portas de saída analógica fictícias existentes no NodeMCU visando a manipulação de dispositivos externos, portanto, neste tutorial, nós vamos discutir o que são sinais PWM, o que eles tem a ver com as eventuais saídas analógicas citadas e como utilizá-los.
Confira aqui o nossos tutoriais para iniciantes no mundo do ESP8266 NodeMCU:
- O que é ESP8266 – A Família ESP e o NodeMCU
- Primeiros passos com o ESP8266 NodeMCU – Lendo um potenciômetro
- Primeiros passos com o ESP8266 NodeMCU – Lendo o estado de um botão
- Primeiros passos com o ESP8266 NodeMCU – Ligando e desligando um led
[toc]
Simulando saídas analógicas com PWM
Apesar de possuir uma porta para realizar a leitura de variáveis analógicas, o módulo ESP8266 NodeMCU não conta com pinos que possam ser usados para fornecer sinais de tensão cujos módulos fazem parte dos valores intermediários do intervalo que vai de 0V e 3,3V. Entretanto, é possível utilizarmos as portas de saída digital para simularmos portas de saída analógica por meio do uso do PWM, que por sua vez, é uma técnica através da qual podemos obter resultados analógicos por meios digitais.
Este recurso consiste na geração de uma onda quadrada, na qual, controla-se a porcentagem do tempo em que a onda permanece em nível lógico alto. Esta porcentagem é chamada de Duty Cycle e sua alteração provoca mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 3,3V (100% de Duty Cycle) no caso do ESP8266 NodeMCU. O Duty Cycle a ser definido no projeto corresponde a um número inteiro, que é armazenado em um registrador 10 bits. Sendo assim, seu valor vai de 0 (0%) a 1023 (100%).
Mãos à obra – Efetuando a leitura de um potenciômetro
Componentes necessários
Montando o projeto
Programando
Este é o código que utilizaremos no desenvolvimento deste tutorial.
int pwm; void setup() { pinMode(D1,OUTPUT); Serial.begin(115200); } void loop() { analogWrite(D1,pwm); Serial.print("O valor do pwm é: "); Serial.println(pwm); pwm = pwm +100; delay(1500); if(pwm>1023) { pwm = 0; } }
Colocando para funcionar
Após compilarmos o código apresentado, nós teremos o seguinte resultado:
Entendendo a fundo
Software
– Definindo as configurações iniciais
Dentro da função setup() nós vamos primeiramente definir o modo de operação do pino que nós vamos utilizar, de modo que, como nós queremos manipular um led, devemos fazer com que o pino em questão seja uma saída digital, desta forma, nós vamos recorrer à função pinMode() para fazermos com que o pino D1 seja a saída digital desejada. Posteriormente, nós iniciaremos 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)).
void setup() { pinMode(D1,OUTPUT); Serial.begin(115200); }
– Utilizando os sinais PWM
A primeira coisa que nós devemos fazer para gerar um sinal PWM em uma determinada porta do nosso módulo ESP8266 NodeMCU será recorrer a função analogWrite(), que por sua vez, é responsável pelo sinal em questão. Esta função possui dois parâmetros, de modo que, o primeiro deles diz respeito ao pino que queremos utilizar e o segundo à magnitude do sinal PWM gerado.
analogWrite(D1,pwm);
Em seguida, nós utilizamos as sentenças Serial.print() e Serial.println() para escrever no Serial Monitor a frase “O valor do pwm é:” seguido do valor utilizado no acionamento do nosso led.
Serial.print("O valor do pwm é: "); Serial.println(pwm);
Após estes procedimentos, nós incrementamos o valor da variável pwm em 100 unidades para que no próximo ciclo este seja utilizado aumentando o brilho do led em questão.
pwm = pwm +100;
Sendo assim, terminamos adicionando a função delay() para determinar o intervalo de tempo entre duas incrementações de brilho e também colocamos uma estrutura condicional if() para que quando a variável pwm atingir um valor maior do que 1023, o valor zero deve ser atribuído a ela.
delay(1500); if(pwm>1023) { pwm = 0; }
Veja como ficou a nossa função loop().
void loop() { analogWrite(D1,pwm); Serial.print("O valor do pwm é: "); Serial.println(pwm); pwm = pwm +100; delay(1500); if(pwm>1023) { pwm = 0; } }
Considerações finais
Neste tutorial, nós demonstramos como você pode fazer para utilizar sinais pwm para acionar dispositivos 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.
4 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Estou tentando fazer um transmissor de nível com o sensor ultrassônico, utilizando um conversor de 0 a 3,3 V para 4 a 20 mA e, a saída em “0”, para 4 mA, é muito alta (0,733 V), que não permite o ajuste de 4 mA.
Não consigo atingir o “0” absoluto, na porta D8 do ESP8266. Ao atingir o valor mínimo obtemos o valor de tensão igual a 0,733 V. Porque?
Boa Tarde, estou com dificuldade para realizar um sensor de vazão poderia desenvolver um tutorial?
Utilizar o sensor yfs-201 com nodemcu8266