Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino and ESP8266-Based Renewable Energy Management System with Wi-Fi Connectivity

View and Edit Project In Cirkit DesignerImage of Arduino and ESP8266-Based Renewable Energy Management System with Wi-Fi Connectivity

Circuit Documentation

Summary

This circuit is designed to manage and monitor a renewable energy system comprising solar panels, a wind turbine, and a battery. The system uses an Arduino UNO microcontroller to read sensor data, control relays, and communicate with an ESP8266 WiFi module for remote monitoring. The circuit includes current sensors, voltage sensors, and relays to manage the power flow between the solar panels, wind turbine, and battery.

Component List

  1. Arduino UNO

    • Description: Microcontroller board based on the ATmega328P.
    • Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
  2. 12V Battery

    • Description: Provides 12V power supply.
    • Pins: VCC, GND
  3. Solar Panel

    • Description: Converts sunlight into electrical energy.
    • Pins: Vcc, Gnd
  4. Solar Panel Regulator 5A MPPT Controller Battery Charging 9V/12V/24V/Auto Switch

    • Description: Manages the charging of the battery from the solar panel.
    • Pins: +Vin, Ground, battery (-), battery(+)
  5. LM393

    • Description: Voltage comparator.
    • Pins: A0, D0, GND, VCC
  6. 5V Relay

    • Description: Electromechanical switch controlled by the Arduino.
    • Pins: Normally Open, Common terminal, Normally Closed, In, GND, VCC
  7. 5V Battery

    • Description: Provides 5V power supply.
    • Pins: positive, negative
  8. ESP8266 ESP-201 WiFi Module

    • Description: WiFi module for wireless communication.
    • Pins: 3.3V, IO4, D3, D1, D0, CMD, CLK, D2, IO2, IO0, GND, IO5, T_OUT, RST, CHIP_EN, XPD, IO14, IO12, IO13, IO15, RX, TX
  9. Wind Turbine

    • Description: Converts wind energy into electrical energy.
    • Pins: +, -
  10. ACS712 Current Sensor 5A 20A 30A

    • Description: Measures current flow.
    • Pins: 1, 2, GND, OUT, VCC

Wiring Details

Arduino UNO

12V Battery

Solar Panel

Solar Panel Regulator

LM393

5V Relay

5V Battery

ESP8266 ESP-201 WiFi Module

Wind Turbine

ACS712 Current Sensor

Documented Code

// Bibliothèques nécessaires
//#include <SoftwareSerial.h>
// #include <ESP8266WiFi.h>
// #include <ThingSpeak.h>

// Déclarations des broches
const int PV_VOLTAGE_PIN = A0;
const int BATTERY_VOLTAGE_PIN = A1;
const int PV_CURRENT_PIN = A2;
const int BATTERY_CURRENT_PIN = A3;
const int DEMAND_PIN = A4;
const int WIND_SENSOR_PIN = 2; // Entrée digitale pour l'anémomètre

const int RELAY_PV_PIN = 3;
const int RELAY_BATTERY_PIN = 4;
const int RELAY_WIND_PIN = 5;

// Variables pour les mesures
float pvVoltage = 0.0;
float batteryVoltage = 0.0;
float pvCurrent = 0.0;
float batteryCurrent = 0.0;
float windSpeed = 0.0;
float demand = 0.0;

// Variables pour la vitesse du vent
unsigned long lastPulseTime = 0;
int pulseCount = 0;

// Paramètres Wi-Fi et ThingSpeak
//const char* ssid = "Votre_SSID";
//const char* password = "Votre_Mot_de_Passe";
//unsigned long myChannelNumber = YOUR_CHANNEL_NUMBER;
//const char* myWriteAPIKey = "VOTRE_API_KEY";

// Fonction d'initialisation
void setup() {
  // Initialisation de la communication série
  Serial.begin(9600);
  // Initialisation des relais
  pinMode(RELAY_PV_PIN, OUTPUT);
  pinMode(RELAY_BATTERY_PIN, OUTPUT);
  pinMode(RELAY_WIND_PIN, OUTPUT);
  // Initialisation des capteurs
  pinMode(PV_VOLTAGE_PIN, INPUT);
  pinMode(BATTERY_VOLTAGE_PIN, INPUT);
  pinMode(PV_CURRENT_PIN, INPUT);
  pinMode(BATTERY_CURRENT_PIN, INPUT);
  pinMode(DEMAND_PIN, INPUT);
  pinMode(WIND_SENSOR_PIN, INPUT_PULLUP);
  
  // Initialisation des relais à l'état désactivé
  digitalWrite(RELAY_PV_PIN, LOW);
  digitalWrite(RELAY_BATTERY_PIN, LOW);
  digitalWrite(RELAY_WIND_PIN, LOW);
  
  // Connexion au réseau Wi-Fi
 // WiFi.mode(WIFI_STA);
 // WiFi.begin(ssid, password);
  
  //Serial.print("Connexion au Wi-Fi");
 // while (WiFi.status() != WL_CONNECTED) {
 //   delay(500);
 //   Serial.print(".");
 // }
 // Serial.println(" Connecté !");
  
  // Initialisation de ThingSpeak
 // ThingSpeak.begin(WiFi);
  
  // Attendre la connexion
 // delay(1000);
}

// Fonction de boucle principale
void loop() {
  // Lecture des capteurs
  pvVoltage = analogRead(PV_VOLTAGE_PIN) * (5.0 / 1023.0) * 11