Firebase e Banco de Dados em Tempo Real com ESP32

Firebase é uma plataforma do Google destinado a ser um back-end para aplicações web, o que o torna uma ótima opção para integração IoT com ESP32 pois possibilita projetos mais sofisticados capaz de se comunicar em qualquer lugar do mundo.

Aplicações

  • Telemetria de dados;
  • Ponte de integração entre plataformas;
  • Banco de dados;
  • IoT.

Firebase o que é?

Firebase é uma plataforma desenvolvida pelo Google para a criação de aplicativos móveis e da web focada em back-end. Contém vários recursos integrados com plano pago e também gratuito, para as aplicações que iremos demonstrar não precisaram de plano pago.

Firebase primeiros passos

Para iniciar no Firebase é só acessar este link e criar um projeto, depois criar o ‘Realtime Database’ como mostra no vídeo abaixo:

Após fazer todas as tarefas, será necessário obter o link “path” e a autenticação/chave de segurança “Auth”, sem essa chave o Firebase irá negar qualquer comunicação.

Firebase e ESP32

A biblioteca que foi usada é FirebaseESP32 feito por Mobizt e está disponível para download no github. Embora o nome seja para ESP32, não testamos no ESP8266 mas tudo indica que não haja problema.

#include <WiFi.h>
#include <FirebaseESP32.h>

#define FIREBASE_HOST "PATH"
#define FIREBASE_AUTH "AUTH"
#define WIFI_SSID     "SSID"
#define WIFI_PASSWORD "SENHA"

FirebaseData firebaseData;
String path = "/";



void setup() {
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println(WiFi.localIP());

  Serial.begin(9600);
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.reconnectWiFi(true);
  Firebase.setReadTimeout(firebaseData, 1000 * 60);
  Firebase.setwriteSizeLimit(firebaseData, "tiny");

  if(Firebase.getShallowData(firebaseData, "/")){
    Serial.println(firebaseData.payload());
  }
}

void loop() {
  int r = random(0, 99999);
  Serial.println(String(r));                                                         
  Firebase.setInt(firebaseData, path + "random", r);
  delay(2000);
}

Funcionamento

Inicialmente no vídeo o ESP32 estava em modo boot para não ficar enviando dados assim que iniciasse a gravação. Após sair do modo boot o ESP32 tenta se conectar a rede WiFi que foi configurado, faz as autenticações com o google e por fim inicia o envio de valores randômicos para o Realtime Database.

O este exemplo trata apenas o envio de dados do ESP32 para o Firebase mas pode ser uma comunicação bilateral, porém isso será trato em um outro post. Caso queria ficar por dentro de novos post, considere se inscrever em nosso canal no Telegram.