#include <WiFi.h>
#include <IOXhop_FirebaseESP32.h>
#include <ArduinoJson.h>
#define trigger 19
#define echo 18
#define pir 4
#define aquecedor 25
#define bomba 26
#define WIFI_SSID "Newt"
#define WIFI_PASSWORD "newooxx11"
#define FIREBASE_HOST "https://av2dsi-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "ejRdKdBNFHJ2bmldzd0RXD4Fl4vpc5fNZVDiOzoD"
String nome = "Xuxa";
String sobrenome = "Meneguel";
int id = 229552;
String data = "07/08/1990";
int turno = 2;
String setor = "Produção";
float umidade = 34.2;
float temperatura = 16.4;
int luminosidade = 360;
float distance;
int leiturapir;
String digitacad;
String digitainicio;
void setup() {
Serial.begin(115200);
pinMode(echo, INPUT); //echo
pinMode(pir, INPUT);
pinMode(trigger, OUTPUT); // trigger
pinMode(aquecedor, OUTPUT);
pinMode(bomba, OUTPUT);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.println("Conectando ao WiFi");
while(WiFi.status()!= WL_CONNECTED){
Serial.print("Conectando...");
Serial.println();
delay(1000);
}
Serial.println();
Serial.print("Conectado!");
Serial.println();
Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH);
Serial.print("Bem Vindo.");
Serial.println();
}
void loop() {
digitalWrite(aquecedor, 0);
digitalWrite(bomba, 0);
Serial.print("Antes de começar, digite 'CADASTRO' para realizar log-in.");
Serial.println();
while (true) {
if (Serial.available()) {
digitacad = Serial.readStringUntil('\n');
break;
}
}
if (digitacad=="CADASTRO") {
cadastro ();
Serial.print("Cadastro realizado.\n");
inicio ();
}
else {
Serial.print("Erro. Tente novamente.\n.");
return loop ();
}
}
void inicio () {
Serial.print("Digite 'INICIO' para iniciar o sensoriamento.");
while (true) {
if (Serial.available()) {
digitainicio = Serial.readStringUntil('\n');
break;
}
}
if (digitainicio=="INICIO") {
Serial.print("Atualizando informações.\n\n");
sensoriamentopush ();
sensoriamentoset ();
comandos ();
}
else {
Serial.print("Erro. Tente novamente.\n.");
return inicio ();
}
}
void contador (){
int cont = 0;
leiturapir = digitalRead(pir);
if (leiturapir=1) {
cont = cont + 1;
}
Serial.print("Contagem: ");
Serial.print(cont);
Serial.println();
}
void sensoriamentopush () {
distance = Ultrasonic(trigger, echo);
Serial.print("Medida da régua: ");
Serial.print(distance);
Serial.print(" cm.");
Serial.println();
Firebase.pushFloat("/SENSORIAMENTO/4-Régua Eletrônica", distance);
delay(100);
contador();
Firebase.pushFloat("/SENSORIAMENTO/5-Contador", cont);
delay(100);
}
void sensoriamentoset () {
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.print(".");
Serial.println();
Firebase.setFloat("/SENSORIAMENTO/2-Umidade", umidade);
delay(500);
Serial.print("Luminosidade: ");
Serial.print(luminosidade);
Serial.print(" luxes.");
Serial.println();
Firebase.pushFloat("/SENSORIAMENTO/3-Luminosidade", luminosidade);
delay(500);
luminosidade = (luminosidade*1.34);
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" °C.");
Serial.println();
Firebase.pushFloat("/SENSORIAMENTO/1-Temperatura", temperatura);
delay(500);
temperatura = (temperatura + 0.77);
}
void comandos () {
Serial.println();
Serial.print("Comando para ligar aquecedor: ");
Serial.print(Firebase.getString("/COMANDOS/Aquecedor"));
Serial.println();
delay(300);
Serial.print("Comando para ligar bomba dagua: ");
Serial.print(Firebase.getString("/COMANDOS/Bomba d'Água"));
Serial.println();
delay(300);
ligaascoisas();
}
void cadastro () {
Firebase.setString("/CADASTRO/1-Nome", nome);
Firebase.setString("/CADASTRO/2-Sobrenome", sobrenome);
Firebase.setInt("/CADASTRO/3-ID", id);
Firebase.setInt("/CADASTRO/4-Turno", turno);
Firebase.setString("/CADASTRO/5-Setor", setor);
Firebase.setInt("/CADASTRO/6-Data de Operação", turno);
}
void ligaascoisas () {
String estadoaquecedor = Firebase.getString("/COMANDOS/Aquecedor");
String estadobomba = Firebase.getString("/COMANDOS/Bomba d'Água");
if (estadoaquecedor=="LIGA") {
digitalWrite (aquecedor, 1);
}
else if (estadoaquecedor=="DESLIGA") {
digitalWrite (aquecedor, 0);
}
if (estadobomba=="LIGA") {
digitalWrite (bomba, 1);
}
else if (estadobomba=="DESLIGA") {
digitalWrite (bomba, 0);
}
}
float Ultrasonic(int pintrigger, int pinecho){
int distancia = 0;
while(distancia == 0) {
digitalWrite(pintrigger, 0);
delayMicroseconds(5);
digitalWrite(pintrigger, 1);
delayMicroseconds(5);
float tempo = pulseIn(pinecho,1);
distancia = (tempo/2/29.15);
}
return distancia;
}