Now we are going to learn about a new project. This project is Iot based, we will look over a system where we will collect 3 different types of power in a system.
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// WiFi credentials
char ssid[] = "YourWiFiSSID";
char pass[] = "YourWiFiPassword";
// Blynk authorization token
char auth[] = "YourBlynkAuthToken";
// Pin definitions
#define SOLAR_VOLT_PIN A0
#define BATTERY_VOLT_PIN A1
#define GRID_VOLT_PIN A2
#define RELAY_SOLAR D1
#define RELAY_BATTERY D2
#define RELAY_GRID D3
// Voltage thresholds
const int voltageThreshold = 600; // Example threshold value, adjust accordingly
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(RELAY_SOLAR, OUTPUT);
pinMode(RELAY_BATTERY, OUTPUT);
pinMode(RELAY_GRID, OUTPUT);
digitalWrite(RELAY_SOLAR, LOW);
digitalWrite(RELAY_BATTERY, LOW);
digitalWrite(RELAY_GRID, LOW);
}
void loop() {
Blynk.run();
controlPowerSource();
delay(2000);
}
void controlPowerSource() {
int solarVoltage = analogRead(SOLAR_VOLT_PIN);
int batteryVoltage = analogRead(BATTERY_VOLT_PIN);
int gridVoltage = analogRead(GRID_VOLT_PIN);
Serial.print("Solar Voltage: ");
Serial.print(solarVoltage);
Serial.print(" | Battery Voltage: ");
Serial.print(batteryVoltage);
Serial.print(" | Grid Voltage: ");
Serial.println(gridVoltage);
if (solarVoltage > voltageThreshold) {
switchToSource(RELAY_SOLAR);
}
else if (batteryVoltage > voltageThreshold) {
switchToSource(RELAY_BATTERY);
}
else if (gridVoltage > voltageThreshold) {
switchToSource(RELAY_GRID);
}
else {
// No source available
allRelaysOff();
}
// Send voltage data to Blynk
Blynk.virtualWrite(V0, solarVoltage);
Blynk.virtualWrite(V1, batteryVoltage);
Blynk.virtualWrite(V2, gridVoltage);
}
void switchToSource(int relayPin) {
digitalWrite(RELAY_SOLAR, LOW);
digitalWrite(RELAY_BATTERY, LOW);
digitalWrite(RELAY_GRID, LOW);
digitalWrite(relayPin, HIGH);
Serial.print("Switched to relay pin: ");
Serial.println(relayPin);
}
void allRelaysOff() {
digitalWrite(RELAY_SOLAR, LOW);
digitalWrite(RELAY_BATTERY, LOW);
digitalWrite(RELAY_GRID, LOW);
Serial.println("All relays off. No power source available.");
}