#include <WiFi.h>
#include <IOXhop_FirebaseESP32.h>
#include <ArduinoJson.h>
#include <DHT.h>
#define PIR 25
#define LDR 2
#define LEDmotorON 19
#define LEDmotorOFF 5
#define LEDaquecON 21
#define LEDaquecOFF 18
#define DHTPIN 12
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float humid, temp;
#define trigger 32
#define echo 33
float distancia;
#define WIFI_SSID "Newt"
#define WIFI_PASSWORD "newooxx11"
#define FIREBASE_HOST "https://av2dsi-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "ejRdKdBNFHJ2bmldzd0RXD4Fl4vpc5fNZVDiOzoD"
String nome = "Maria";
String sobrenome = "Eduarda";
int id = 227333;
String data = "08/04/2024";
int turno = 01;
String setor = "Manutenção";
String modaquec;
String modbomba;
String digitacad;
String digitainicio;
int lepir;
int cont;
void setup() {
Serial.begin(115200);
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);
dht.begin();
digitalWrite(LEDmotorOFF, 1);
delay(100);
digitalWrite(LEDaquecOFF, 1);
delay(100);
digitalWrite(LEDmotorON, 0);
delay(100);
digitalWrite(LEDaquecON, 0);
delay(100);
pinMode(PIR, INPUT);
pinMode(LDR, INPUT);
pinMode(echo, INPUT);
pinMode(trigger, OUTPUT);
pinMode(LEDmotorON, OUTPUT);
pinMode(LEDmotorOFF, OUTPUT);
pinMode(LEDaquecON, OUTPUT);
pinMode(LEDaquecOFF, OUTPUT);
}
void loop() {
Serial.print("BEM VINDO.\n");
cadastro();
}
void cadastro () {
Serial.print("Digite 'CADASTRO' para dar inicio ao processo.\n\n");
while (true) {
if (Serial.available()) {
digitacad = Serial.readStringUntil('\n');
break;
}
}
if (digitacad=="CADASTRO") {
Serial.print("Cadastro executado.\n");
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);
inicio ();
}
else {
Serial.print("Erro.\nDigite 'CADASTRO' para registrar as informações do usuário.");
return cadastro();
}
}
void inicio () {
Serial.print("Digite 'INICIO' para iniciar o sensoriamento.\n\n");
while (true) {
if (Serial.available()) {
digitainicio = Serial.readStringUntil('\n');
break;
}
}
if (digitainicio=="INICIO") {
Serial.print("Compartilhando informações. . .\nSENSORIAMENTO EM FUNCIONAMENTO.\n\n");
contador ();
int ldr = analogRead(LDR);
float luxes = (0.519*ldr);
int pir = digitalRead(PIR);
distancia = Ultrasonic(trigger, echo);
//humid, temp (DHT11)
Firebase.pushFloat ("/SENSORIAMENTO/1-Temperatura", temp);
Firebase.pushFloat ("/SENSORIAMENTO/2-Umidade", humid);
Firebase.pushInt ("/SENSORIAMENTO/3-Luminosidade", luxes);
Firebase.pushFloat ("/SENSORIAMENTO/4-Régua Eletrônica", distancia);
Firebase.pushInt ("/SENSORIAMENTO/5-Contador", cont);
controle ();
}
else {
Serial.print("Erro.\nDigite 'INICIO' para ativar o sensoriamento.");
return inicio();
}
}
void controle () {
modaquec = Firebase.getString ("/COMANDOS/Aquecedor");
modbomba = Firebase.getString ("/COMANDOS/Bomba d'Água");
if (modaquec=="LIGA") {
digitalWrite(LEDaquecOFF, 0);
delay(100);
digitalWrite(LEDaquecON, 1);
delay(100);
}
else if (modaquec=="DESLIGA") {
digitalWrite(LEDaquecOFF, 1);
delay(100);
digitalWrite(LEDaquecON, 0);
delay(100);
}
else {
Serial.print(" ");
}
if (modbomba=="LIGA") {
digitalWrite(LEDmotorOFF, 0);
delay(100);
digitalWrite(LEDmotorON, 1);
delay(100);
}
else if (modbomba=="DESLIGA") {
digitalWrite(LEDmotorOFF, 1);
delay(100);
digitalWrite(LEDmotorON, 0);
delay(100);
}
else {
Serial.print(" ");
}
}
void contador () {
int lepir=digitalRead(PIR);
if (lepir==1) {
cont = (cont+1);
}
else {
Serial.print(" ");
}
}
void leituraDHT () {
delay(1000);
humid = dht.readHumidity();
temp = dht.readTemperature();
if (isnan(humid) || isnan(temp)) {
return;
}
}
float Ultrasonic(int a, int b) {
int distancia = 0;
while (distancia == 0) {
digitalWrite(a, 0);
delayMicroseconds(5);
digitalWrite(a, 1);
delayMicroseconds(5);
float tempo = pulseIn(b, 1);
distancia = (tempo / 2 / 29.15);
}
return distancia;
}