#include <WiFi.h>
#include <FirebaseESP32.h>
// Replace with your network credentials
const char* ssid = "Redmi Note 13 Pro+ 5G";
const char* password = "11115555";
// Firebase project details
#define FIREBASE_HOST "fir-iot-cba4c-default-rtdb.asia-southeast1.firebasedatabase.app" // Without trailing slash
#define FIREBASE_AUTH "AIzaSyAiK3lYv2vOcKhOH8GqTFEvmpdGjY4Yc2c"
// Define pins for the ultrasonic sensor
#define TRIG_PIN 13
#define ECHO_PIN 12
// Create pointers for FirebaseConfig and FirebaseAuth
FirebaseConfig firebaseConfig;
FirebaseAuth firebaseAuth;
// Create a FirebaseData object to interact with Firebase
FirebaseData firebaseData;
void setup() {
Serial.begin(115200);
// Connect to WiFi
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
// Set Firebase configuration
firebaseConfig.host = FIREBASE_HOST; // Firebase host URL
firebaseConfig.api_key = FIREBASE_AUTH; // Firebase API key
// If no authentication, leave these blank
firebaseAuth.user.email = "[email protected]";
firebaseAuth.user.password = "123456";
// Initialize Firebase
Firebase.begin(&firebaseConfig, &firebaseAuth);
// Optional: Verify Firebase readiness
if (Firebase.ready()) {
Serial.println("Connected to Firebase!");
} else {
Serial.println("Failed to connect to Firebase.");
}
// Configure ultrasonic sensor pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
long duration;
float distance;
// Send a 10us HIGH pulse to trigger pin
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Read the echo pin
duration = pulseIn(ECHO_PIN, HIGH);
// Calculate the distance in cm
distance = (duration * 0.034) / 2;
// Print distance to Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Send the data to Firebase
if (Firebase.setFloat(firebaseData, "/distance", distance)) {
Serial.println("Data successfully sent to Firebase");
} else {
Serial.println("Failed to send data to Firebase");
Serial.println("Error: " + firebaseData.errorReason());
}
delay(1000); // Delay between readings
}