#include <WiFi.h>
#include <Firebase_ESP_Client.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define WIFI_SSID "Samsung Galaxy F13"
#define WIFI_PASSWORD "Fmm@2002"
#define API_KEY "AIzaSyASxzHYGq5hhddkuFe5mRTqAxyjEPZgDwo"
#define DATABASE_URL "https://esp32iot-95356-default-rtdb.firebaseio.com/"
#define trigger_pin 26
#define Echo_pin 25
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis=0;
bool signupOK=false;
long duration;
int distance;
int statuss=5;
void get_ultrasonic_data(){
digitalWrite(trigger_pin, LOW); //set trigger signal low for 2us
delayMicroseconds(2);
/*send 10 microsecond pulse to trigger pin of HC-SR04 */
digitalWrite(trigger_pin, HIGH); // make trigger pin active high
delayMicroseconds(10); // wait for 10 microseconds
digitalWrite(trigger_pin, LOW); // make trigger pin active low
/*Measure the Echo output signal duration or pulss width */
duration = pulseIn(Echo_pin, HIGH); // save time duration value in "duration variable
distance= duration*0.034/2; //Convert pulse duration into distance
// print measured distance value on Arduino serial monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}
void setup() {
pinMode(trigger_pin, OUTPUT); // configure the trigger_pin(D9) as an Output
pinMode(Echo_pin, INPUT); // configure the Echo_pin(D11) as an Input
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(2000);
config.api_key=API_KEY;
config.database_url=DATABASE_URL;
if (Firebase.signUp(&config, &auth,"","")){
Serial.println("signup OK");
signupOK=true;
}else{
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
config.token_status_callback=tokenStatusCallback;
Firebase.begin(&config,&auth);
Firebase.reconnectNetwork(true);
}
void loop() {
// put your main code here, to run repeatedly:
if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis>5000 || sendDataPrevMillis==0)){
sendDataPrevMillis=millis();
get_ultrasonic_data();
if(Firebase.RTDB.setInt(&fbdo, "Sensor/wmlevel", distance)){
Serial.println();
Serial.println(distance); "- successfully saved to: "+fbdo.dataPath();
Serial.println("- successfully saved to: "+fbdo.dataPath());
Serial.println(" (" + fbdo.dataType() + ")");
}else{
Serial.println("FAILED: "+ fbdo.errorReason());
}
if(Firebase.RTDB.setInt(&fbdo, "Sensor/wmstatus", statuss)){
Serial.println();
Serial.println(statuss);
Serial.println("- successfully saved to: "+fbdo.dataPath());
Serial.println(" (" + fbdo.dataType() + ")");
}else{
Serial.println("FAILED: "+ fbdo.errorReason());
}
}
}