IOT - internet of things - Com GoogleFirebase Realtime
Implementar comunicação com firebase realtime em um "coisa".
Neste projeto usaremos o ESP-32, um sensor de temperatura LM35 e um botão interruptor.
O esp-32 envia e recebe infomações do database que pode ser integrado a outras aplicações como um aplicativo APP ou uma pagina web, ou até mesmo outro arduino, ou ainda um sistema de controle de dados com regras de negócio, como no caso de um sistema de controle de temperatura de uma sala.
A programação do Esp-32.
Sem rodeios:
A idéia é bastante simples - Leitura de uma porta ADC e envio desta leitura para o firebase.
Se você não sabe como fazer leitura de uma porta adc utilizando lm35 confira este post aqui.
Uma plataforma de desenvolvimento para o esp-32 com programação por blocos que facilita muito a vida na hora da integração:
Para o arduino ainda temos a pinagem e outras configurações que podem ser encontradas aqui.
No código abaixo você deve inserir o host e auth do seu firebase.
Código do arduino:
Este código foi feito utilizando esta plataforma: Link Aqui.// Generated with a lot of love// | |
// with TUNIOT FOR ESP32 // | |
// Website: Easycoding.tn // | |
///////////////////////////////// | |
#include <WiFi.h> | |
#include <FirebaseESP32.h> | |
#define FIREBASE_HOST "AQUI VOCÊ COLOCA O ENDEREÇO DO SEU DATABASE" | |
#define FIREBASE_AUTH "AQUI É A CHAVE DO FIREBASE." // É IMPORTANTE RESALTAR QUE EXISTEM OUTRAS FORMAS DE INTEGRAR COM O FIREBASE, ESTE MÉTODO // É O MAIS SIMPLES DE SER IMPLEMENTAO | |
FirebaseData fbdo; | |
int i= 0; | |
// DEFININDO PORTA ANALÓGICA E VARIÁVEIS. | |
const int analogIn = 34; | |
int RawValue= 0; | |
double Voltage = 0; | |
double tempC = 0; | |
double tempF = 0; // INICIO DO SETUP, DEFINIÇÕES DE CONFIGURAÇÃO INICIAL | |
void setup() | |
{ | |
pinMode(23, OUTPUT); // DEFININDO PINOS DE SAÍDA | |
pinMode(22, OUTPUT); | |
Serial.begin(9600); | |
Serial.begin(9600); | |
i = (Firebase.getString(fbdo, "/Equipamento")); // RECEBENDO DADOS DA BASE, PASTA Equipamento. | |
WiFi.begin("AQUI É O NOME E SENHA DO WIFI"); | |
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); | |
Firebase.reconnectWiFi(true); | |
} // APOS O SETUP - INICIO DO LOOP | |
void loop() | |
{ // ROWVALUE RECEBE A LEITURA DA PORTA ANALOGICA RawValue = analogRead(analogIn); // Transformando a variação de tensão em temperatura em Celcius. | |
Voltage = (RawValue / 2048.0) * 3300; // 5000 to get millivots. | |
tempC = (Voltage * 0.1)+9; //Verifica se o firebase foi iniciado | |
if (Firebase.getInt(fbdo, "/Equipamento")) { | |
Serial.println("Int Variabel"); | |
Serial.println((fbdo.intData()));// Envia para a saida serial o valor contido no firebase // Aqui é onde o esp-32 verifica no firebase o estado e se 1 liga e 0 desliga | |
if((fbdo.intData())==1){ | |
digitalWrite(22,HIGH); | |
}else if((fbdo.intData())==0){ | |
digitalWrite(22,LOW); | |
} | |
} | |
if (i=1){22 // o i é a string recebida do firebase no momento do setup. | |
,HIGH; | |
} | |
delay(10000); // delay para a leitura da porta. | |
int sensor = analogRead(34); // define a variavel sensor com o valor da leitura adc | |
// verificando se o dado foi enviado. if ((Firebase.setDouble(fbdo, "/DATA", tempC)) == true) { | |
Serial.printf("Data enviada"); | |
} else { | |
Serial.printf("não foi possivel enviar..."); | |
} | |
Comentários