ESP8266 Firebase: conecte o ESP8266 ao banco de dados em tempo real do Google Firebase

Tempo de leitura: 6 minutes

Este tutorial aborda como conectar o ESP8266 ao Firebase. Durante este tutorial, exploraremos como usar o banco de dados em tempo real do Firebase com o ESP8266. Para entender como conectar o ESP8266 ao Firebase e como podemos explorar essa interação, criaremos LEDs RGB controlados por IoT (como uma faixa de LEDs). Este é um projeto interessante porque, através dele, é possível explorar como usar o Firebase na IoT. Mais detalhadamente, abordaremos como usar o db em tempo real no Firebase para controlar em tempo real um ESP8266 conectado a ele que trabalha diretamente no db do Firebase.

Resumidamente, a nuvem do Google Firebase é uma plataforma que fornece vários serviços, como autenticação, banco de dados em tempo real e assim por diante. Para criar este projeto de IoT, usaremos um banco de dados em tempo real

Esp8266 Firebase

Para controlar os LEDs usando o banco de dados em tempo real do Firebase, precisamos seguir estas duas etapas:

  • Conectando o ESP8266 ao banco de dados em tempo real do Google Firebase
  • Configurar o banco de dados em tempo real do Firebase

Conectando o ESP8266 ao banco de dados em tempo real do Firebase

Nesta primeira etapa, é necessário conectar o ESP8266 ao banco de dados Firebase para que este dispositivo receba as atualizações do banco de dados assim que modificarmos os valores. Para isso, primeiro precisamos conectar o ESP8266 ao Wifi:

#include <ESP8266WiFi.h>
 
void connectWifi() {
  // Vamos nos conectar ao WiFi
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println(".......");
  Serial.println("WiFi conectado .... Endereço IP:");
  Serial.println(WiFi.localIP());
}

onde connectWifi() é chamado na setup() como veremos mais adiante e o ssid e a senha são o ssid do WiFi e a senha relacionada.

Esquema: Conexão do ESP8266 aos LEDs RGB

O diagrama do circuito para conectar os LEDs RGB ao ESP8266 é mostrado abaixo:

Esp8266 Firebase

Neste projeto, usaremos LEDs de Neopixels, mas podemos usar outros tipos de LEDs. As mesmas etapas podem ser aplicadas, mesmo se você alterar os LEDs usados.

Programando o ESP8266 para conectar-se ao Firebase db

Este é o núcleo do projeto. Para conectar o ESP8266 ao banco de dados em tempo real do Google Firebase, usaremos uma biblioteca Firebase que simplifica o projeto. Vá para Sketch->Include Library->Manage Libraries e procure a biblioteca Firebase:

Esp8266 Firebase

Selecione a biblioteca de acordo com o dispositivo que você está usando e você está pronto! O código abaixo mostra como conectar o ESP8266 ao Google Firebase:

#include "FirebaseESP8266.h"
 
FirebaseData firebaseData;
 
void setup() {
  Serial.begin(9600);
  connectWifi();
  Firebase.begin("firebase_url", "sua API do firebase");
}

Na linha 8, o código configura a conexão entre o ESP8266 e o ​​Firebase. Dois parâmetros são necessários: o firebase_url e o firebase_API_key. Você verá mais tarde como obtê-lo no console do Firebase após a configuração do projeto Firebase. Por fim, é necessário receber dados do banco de dados em tempo real do Firebase:

void loop() {
 
  if (Firebase.getInt(firebaseData, "/red")) {
   if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != redValue) {
        redValue = val;
        setLedColor();
      }
    }
  }
 
  if (Firebase.getInt(firebaseData, "/green")) {
   if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != greenValue) {
        greenValue = val;
        setLedColor();
      }
    }
  }
 
  if (Firebase.getInt(firebaseData, "/blue")) {
   if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != blueValue) {
        blueValue = val;
        setLedColor();
      }
    }
  }
}

Algumas coisas a serem observadas. Primeiro, para controlar os LEDs IoT RGB, é necessário usar três componentes (vermelho, verde, azul). A segunda coisa a observar: o código acima obtém a referência aos dados armazenados no banco de dados em tempo real do Firebase usando:

Firebase.getInt(firebaseData, "/red")

então, é necessário verificar se o valor é um número inteiro:

if  (firebaseData.dataType() == "int") {
  ....
}

e, finalmente, o código recupera o valor:

int val = firebaseData.intData();

O código final é mostrado abaixo:

#include "FirebaseESP8266.h"
#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>
 
#define PIN D1
#define NUM_LEDS 8
 
const char* ssid = "seu ssid";
const char* password = "sua senha wifi";
 
FirebaseData firebaseData;
 
Adafruit_NeoPixel leds(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
 
// Valores atuais da cor
int redValue = 0;
int greenValue = 0;
int blueValue = 0;
 
void setup() {
  Serial.begin(9600);
  connectWifi();
  leds.begin();
   
  Firebase.begin("https://xxxx.firebaseio.com/", "wDsHB30jVN554CA********");
}
 
void loop() {
 
  if (Firebase.getInt(firebaseData, "/red")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != redValue) {
        redValue = val;
         setLedColor();
      }
    }
  }
 
  if (Firebase.getInt(firebaseData, "/green")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != greenValue) {
        greenValue = val;
        setLedColor();
      }
    }
  }
 
  if (Firebase.getInt(firebaseData, "/blue")) {
    if  (firebaseData.dataType() == "int") {
      int val = firebaseData.intData();
      if (val != blueValue) {
        blueValue = val;
        setLedColor();
      }
    }
  }
}
 
void connectWifi() {
  // Vamos nos conectar ao WiFi
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println(".......");
  Serial.println("WiFi conectado .... Endereço IP:");
  Serial.println(WiFi.localIP());
 
}
 
void setLedColor() {
  for (int i=0; i < NUM_LEDS; i++) 
    leds.setPixelColor(i, leds.Color(redValue, greenValue, blueValue));
   leds.show();
}

Configurando o banco de dados em tempo real do Firebase

Nesta segunda etapa na criação de LEDs RGB controlados pela IoT usando ESP8266 e Firebase, configuraremos o banco de dados em tempo real do Firebase. Se você não possui uma conta, antes de iniciar, é necessário criar uma gratuitamente. Em seguida, acesse o console do Firebase e comece a adicionar um novo projeto:

Esp8266 Firebase

e adicione um novo projeto, como mostrado abaixo:

Esp8266 Firebase

Se tudo correr bem, o novo projeto Firebase é criado:

Esp8266 Firebase

Chegou a hora de criar o banco de dados Firebase. Esse banco de dados conterá os três componentes de cores usados ​​para controlar os LEDs RGB conectados ao ESP8266. Depois que conectarmos o ESP8266 ao Google Firebase, todas as alterações de valor no banco de dados refletirão no lado do ESP8266.

Esp8266 Firebase

É importante que você defina o banco de dados no modo de teste:

Esp8266 Firebase

Quando todas essas etapas estiverem concluídas, selecione o banco de dados em tempo real e comece a adicionar campos, como mostrado abaixo:

Esp8266 Firebase

Agora os dois últimos passos. Primeiro, nas Regras, você deve definir todos os valores como true e, em seguida, é necessário recuperar os valores a serem usados ​​no código ESP8266 mostrado acima.

O URL é mostrado na figura acima https://xxxx.firebaseio.com e a Chave da API está em Project settings -> Services account->Database secrets.

Esp8266 Firebase

Isso é tudo. Você pode executar e testar o projeto. O URL mostrado acima é o URL que usaremos para conectar o ESP8266 ao Google Firebase.

Sumário

Este tutorial mostrou como conectar o ESP8266 ao banco de dados em tempo real do Google Firebase para controlar os LEDs RGB. Este projeto demonstrou como usar o Firebase na IoT. Outra opção interessante para controlar um ESP8266 é usar um Telegram Bot. Como você viu, é muito fácil e com algumas linhas de código, você pode controlar remotamente os LEDs RGB.

Espero que você tenha gostado da explicação deste projeto, e teste o funcionando e que tenha gostado de fazê-lo. Se você tiver alguma dúvida, pode escrevê-las na seção de comentários abaixo ou publicá-las em nossos blog

Visits: 2 Visits: 1199444