#include <WiFi.h>
#include <ESP32Firebase.h>
// WiFi and Firebase configuration
#define WIFI_SSID "Wokwi-GUEST" // Your WiFi SSID
#define WIFI_PASSWORD "" // Your WiFi password (empty for Wokwi-GUEST)
#define FIREBASE_URL "https://gokart-iot-35f2c-default-rtdb.firebaseio.com/" // Firebase URL
Firebase firebase(FIREBASE_URL);
// Define analog pins
#define BCURRENT_PIN 34
#define BVOLTAGE_PIN 35
#define CURRENT_PIN 36
#define ENERGY_PIN 33
#define POWER_PIN 36
#define SPEED_PIN 39
#define VOLTAGE_PIN 26
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(1000);
// Connect to WiFi
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.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Read analog values from pins
float bcurrent = analogRead(BCURRENT_PIN) / 4095.0 * 3.3; // Convert to voltage
float bvoltage = analogRead(BVOLTAGE_PIN) / 4095.0 * 3.3; // Convert to voltage
float current = analogRead(CURRENT_PIN) / 4095.0 * 3.3; // Convert to voltage
float energy = analogRead(ENERGY_PIN) / 4095.0 * 3.3; // Convert to voltage
float power = analogRead(POWER_PIN) / 4095.0 * 3.3; // Convert to voltage
float speed = analogRead(SPEED_PIN) / 4095.0 * 3.3; // Convert to voltage
float voltage = analogRead(VOLTAGE_PIN) / 4095.0 * 3.3; // Convert to voltage
String time = "00:00:00"; // Fixed for demonstration
// Write data to Firebase
if (firebase.setFloat("/data/bcurrent", bcurrent) &&
firebase.setFloat("/data/bvoltage", bvoltage) &&
firebase.setFloat("/data/current", current) &&
firebase.setFloat("/data/energy", energy) &&
firebase.setFloat("/data/power", power) &&
firebase.setFloat("/data/speed", speed) &&
firebase.setFloat("/data/voltage", voltage) &&
firebase.setString("/data/time", time)) {
Serial.println("Successfully updated Firebase with sensor values.");
} else {
Serial.println("Failed to update Firebase.");
}
// Print the values to the serial monitor
Serial.print("bcurrent: "); Serial.println(bcurrent);
Serial.print("bvoltage: "); Serial.println(bvoltage);
Serial.print("current: "); Serial.println(current);
Serial.print("energy: "); Serial.println(energy);
Serial.print("power: "); Serial.println(power);
Serial.print("speed: "); Serial.println(speed);
Serial.print("voltage: "); Serial.println(voltage);
Serial.print("time: "); Serial.println(time);
delay(5000); // Delay for 5 seconds before updating again
}