Lendo e enviando dados LDR para o firebase utilizando ESP8266 NodeMCU

LDR

Este artigo tem como objetivo principal o envio de dados de um sensor LDR para a plataforma Firebase utilizando a placa de desenvolvimento ESP8266 NodeMCU.

 

O LDR é um resistor cuja resistência varia conforme a intensidade da luz que incide sobre ele. À medida que a intensidade da luz aumenta, a sua resistência diminui.

 

LDR 5mm.
Figura 1: LDR 5mm.

 

A NodeMCU é uma placa de desenvolvimento que combina o chip ESP8266, uma interface USB-serial e um regulador de tensão 3,3 V. A programação pode ser feita usando linguagem LUA ou a IDE do Arduino, utilizando a comunicação via cabo micro-usb.

 

ESP8266 NodeMCU.
Figura 2: ESP8266 NodeMCU.

 

O Firebase é a plataforma de desenvolvimento mobile e web desenvolvida pela Firebase, Inc. e posteriormente adquirida pela Google. Através da combinação entre o módulo e a plataforma que serão utilizadas, é possível fazer uma série de aplicações de Internet das Coisas.

 

Nesse tutorial utilizaremos o Arduino IDE para programar a NodeMCU. Caso você não tenha a IDE instalada em seu computador, é só seguir os passos neste artigo do Fábio Souza.

 

Passo 1 - Configuração da IDE do Arduino para o ESP- 01

 

Veja como instalar a ESP8266 no artigo Crie seu primeiro projeto usando o módulo ESP-01 e FirebaseSelecione a ESP8266 NodeMCU em Ferramenta -> Placa.

 

Menu de placas pós instalação.
Figura 3: Menu de placas pós instalação.

 

Para usuário Windows, lembre-se de verificar o driver da sua placa. Existem 2 variações de NodeMCU com o CH340 e com CP2102, faça o download e instale de acordo com sua placa.

 

Passo 2 - Montagem do circuito

 

Esquema da montagem do projeto.
Figura 4: Esquema da montagem do projeto.

 

Passo 3 - Código para ler o LDR

 

void setup() {
  Serial.begin(9600);   // Inicia a comunicação serial
}
void loop() {
  
  int sensorValue = analogRead(A0);   // Ler o pino Analógico A0 onde está o LDR
  float voltage = sensorValue * (3.3 / 1024.0);   // Converter a leitura analógica (que vai de 0 - 1023) para uma voltagem (0 - 3.3V), quanto de acordo com a intensidade de luz no LDR a voltagem diminui.
  Serial.println(voltage);   // Mostrar valor da voltagem no monitor serial
  
}

 

Envie para a placa o código para ESP8266 NodeMCU, coloque uma fonte de luz próximo ao LDR e veja a variação no Serial Monitor clicando no ícone, da Figura 5, no canto superior direito.

 

Ícone para visualização da porta serial.
Figura 5: Ícone para visualização da porta serial.

 

Passo 4 - Configuração do Firebase

 

Veja como configurar o firebase no artigo: Crie seu primeiro projeto usando o módulo ESP-01 e Firebase.

 

Passo 5 - Configurando a IDE Arduino para uso do Firebase

 

Baixe a biblioteca firebase-arduino em github.com/FirebaseExtended/firebase-arduino.

 

Agora para adicionar a biblioteca. Clique em Skecth > Incluir Biblioteca > Adicionar biblioteca .ZIP.

 

Menu para adicionar uma nova biblioteca .ZIP.
Figura 6: Menu para adicionar uma nova biblioteca .ZIP.

 

Instale biblioteca arduinojson. Vá em Sketch > Gerenciar biblioteca e pesquise arduinojson. Selecione a versão 5.13.1 e clique em instalar.

 

Passo 6 - Enviando dado do LDR para o Firebase

 

Envie o código para ESP8266 NodeMCU.

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>

// Set these to run example.
#define FIREBASE_HOST "workshop-9bb3c.firebaseio.com"
#define FIREBASE_AUTH "VKIZQ2q335nXFk8BdWrlreM1vcx2uhzRyTQWMhq1"
#define WIFI_SSID "Guilherme"
#define WIFI_PASSWORD "S22031998"

void setup() {
  Serial.begin(9600);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("conectando");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("conectado: ");
  Serial.println(WiFi.localIP());
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop() {
  
  int sensorValue = analogRead(A0);   // Ler o pino Analógico A0 onde está o LDR
  float voltagem = sensorValue * (3.3 / 1024.0);   // Converter a leitura analógica (que vai de 0 - 1023) para uma voltagem (0 - 3.3V), quanto de acordo com a intensidade de luz no LDR a voltagem diminui.
  Serial.println(voltagem);   // Mostrar valor da voltagem no monitor serial
  Firebase.pushFloat("LDR", voltagem); // Envia o dado da variavel voltagem para a variavel LDR no Firebase
  delay(5000); // Espera 5 segundos
  
}

 

Abra seu Firebase e veja os dados enviados.

 

Real Time Database Firebase.
Figura 7: Real Time Database Firebase.

 

Passo 7 - Criando uma aplicação web para mostrar o valor

 

Crie o arquivo index.html, copie, depois cole esse código, salve e execute.

  <!-- Codigo HTML -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>LDR</title>
    <style>
      body{
        background-color: #f0f0f0;
      }
</style>
  </head>

  <body>
    <center>
    <h1><span id="valorLDR"></span></span></h1>
  </body>
  </center>

<!-- Scripts JS -->

  <script src="https://www.gstatic.com/firebasejs/5.5.8/firebase.js"></script>
  <script type="text/javascript">
  (function(){

  var config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
  };
  firebase.initializeApp(config);
  var db = firebase.database();

  var LDR = db.ref('LDR');


  LDR.on('value', onNewData('valorLDR'));

  })();

  function onNewData(currentValueEl, metric){
  return function(snapshot){
    var readings = snapshot.val();
    if(readings){
        var currentValue;
        var data = [];
        for(var key in readings){
          currentValue = readings[key]
          data.push(currentValue);
        }

        document.getElementById(currentValueEl).innerText = currentValue + 'V';
      }
    }
  }
  ('value', function(snapshot){   
  });
</script>
</html>

 

Para o código funcionar vá ao Firebase > Project Overview > Clique no ícone:

 

Ícone para início da compilação.
Figura 8: Ícone para início da compilação.
Adicionar o Firebase a aplicação Web.
Figura 9: Adicionar o Firebase a aplicação Web.

 

Copie sua varconfig e substitua no código html.

 

Tela para mostrar o valor do Firebase.
Figura 10: Tela para mostrar o valor do Firebase.

 

Pronto, nesse artigo você aprendeu a enviar dados para o Firebase usando a ESP8266 NodeMCU e mostrar esse dado numa aplicação web. Uma dica que eu deixo é a leitura do artigo: Crie seu primeiro projeto usando o módulo ESP-01 e Firebase, lá você vai aprender como ler dados do Firebase e acender um led, lembre-se na hora de gravar a placa mudar para a NodeMCU.

 

 

Saiba mais

 

Monitore seus próprios Tweets usando Thinger, NodeMCU e IFTTT

Conectando-se ao DeviceHub com NodeMCU e MQTT

Exibindo valores de temperatura e umidade no app MQTT Dash com o sensor DHT11

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Guilherme Robert Silveira Santos
Membro MinasUp, Estudante 6° período de BC&t - UFVJM, Técnico em Informática, Colaborador #CPMG2 e #CPBR11, Palestrante LatinoWare 2014/2015/2018, Palestrante #CPRO e #CPMG3, Palestrante FISL16/17, Palestrante FLAHWL 2015, Palestrante Arduino Day Janaúba 2015/2016, Palestrante FINIT 2017, Curador IoT Day Janaúba 2016/2017, Curador Arduino Day Janaúba 2017/2018, Curador Scratch Day 2017, Curador MinasUp Game JAM 2017/2018.

14
Deixe um comentário

avatar
 
5 Comment threads
9 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
Túllio Morais Francawaldemar barão fernandes canafistulaJohnny DreherFernando Moraes Veloso de MatosAna Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Túllio Morais Franca
Visitante
Túllio Morais Franca

Olá! Parabéns pelo seu trabalho! Eu vou tentar fazer só que em vez dos dados de um LDR eu quero enviar os dados de um outro sensor (BME280). Espero que funcione!

Johnny Dreher
Visitante
Johnny Dreher

No ESP8266 o pino analogico não é limitado a 1V?

Fernando Moraes Veloso de Matos
Visitante
Fernando Moraes Veloso de Matos

Ao enviar para o site não aparece mensagem alguma, existe uma forma de corrigir este erro?
Fica apenas na tela cinza como criada no código html

Lucas José
Visitante
Lucas José

Olá, sexta-feira eu tinha conseguido enviar os dados normalmente, no domingo de carnaval (03/03/19) já não foi mais possível, o console aparece que foi conectado e os valores coletados, contudo os dados não são gravados no firebase...... e não aparece nenhuma mensagem de erro.

Ana
Visitante
Ana

Está acontecendo a mesma coisa comigo e não acho nenhuma solução em lugar algum! Mas pelo que entendi pelo diagnostico de erro, a conexão entre o firebase e o ESP8266 não está sendo mais estabelecida de forma correta.

Nilson Pessim
Visitante
Nilson Pessim

li que nao é mais possível fazer a comunicação com o Firebase, devido ao um erro de Impressão Digital, sabe se conseguiram resolver ?

waldemar barão fernandes canafistula
Visitante
waldemar barão fernandes canafistula

olá guilherme, estou com o mesmo problema na biblioteca, vc tem alguma solução ? poderia disponibilizar a mesma, obrigado