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.
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.
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 Firebase. Selecione a ESP8266 NodeMCU em Ferramenta -> Placa.
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
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.
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.
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.
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:
Copie sua varconfig e substitua no código html.
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















Olá, pessoal! Segui o tutorial, mas aparece nada no Firebase. Alguém sabe se ainda funciona? Obrigado.
Também não funcionou para mim…conecta na rede mas não comunica com o firebase…alguma sugestão? Já tentei instalar diferente versões do firebase_arduino_master e também diferentes versões do arduinoJson…mas nada resolveu…
Alguem sabe se mudou algum código para conectar ao Firebase?
Bom Dia,
Apanhei bastante para encontrar uma solução….pelo que percebi, tem uma chave, na verdade a impressão digital do Firebase que precisa ser atualizada no arquivo FirebaseHttpClient que está dentro da pasta src da biblioteca firebase-arduino-master.
Hoje a impressão digital é a “03:9E:4F:E6:83:FC:40:EF:FC:B2:C5:EF:36:0E:7C:3C:42:20:1B:8F”, mas pelo que entendi ela muda depois de alguns meses.
Para descobrir esta impressão digital, encontrei o site https://www.grc.com/fingerprints.htm
Nele basta informar o domínio teste.firebaseio.com que ele já gera a impressao para o site.
Espero ter ajudado a todos!
Deu certo, perdi quase uma semana nisso, muito obrigado
como que eu mando dados do firebase para o esp32
Estou tentando salvar dados em tempo real mas parece que o comando Firebase.setString tem algum delay de 300ms e precisava captar os dados a cada 50ms, alguem sabe como tirar esse delay?
a tabela ldr no banco de dados firebase é gerada automaticamente?
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!
Opa! Muito Obrigado. Deve dar certo sim qualquer duvida só me chamar no telegram @Guilherme Robert Silveira Santos
bom dia. textei seu codigo html mais nao atualiza no html, ja adicionei o projeto ao firebase normalmente. tudo certinho as configurações
No ESP8266 o pino analogico não é limitado a 1V?
NodeMCU já conta com um atenuador de sinais através de um divisor resistivo, que condiciona tensões entre 0 e 3,3V ao nível do ADC de 0 a 1,0V
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
Olá, você mudou o código com suas credenciais? qualquer coisa me manda mensagem no telegram t.me/b00tk1ll ou no meu email guigiu23@gmail.com
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.
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.
Olá Ana conseguiu resolver? Se precisar de ajuda me manda uma menagem no telegram t.me/b00tk1ll ou um e-mail para guigiu23@gmail.com
Olá, já conseguiu resolver o problema? A biblioteca FirebaseArduino estava com um problema mas já foi solucionada e colocou no código suas credenciais? se não conseguir me manda uma menagem no telegram t.me/b00tk1ll ou um e-mail para guigiu23@gmail.com
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 ?
Olá tudo bem? Aqui está funcionando tudo normal. Se quiser pode me enviar um email para guigiu23@gmail.com com o erro
olá guilherme, estou com o mesmo problema na biblioteca, vc tem alguma solução ? poderia disponibilizar a mesma, obrigado
Olá aqui está funcionando, lembre-se de baixar a ultima versão no github do firebase arduino e usar o arduinojson 5.13.1 qualquer coisa mande um e-mail para guigiu23@gmail.com