#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
// ===== PIN =====
const int pinPannello = 34;
const int pinCaricoFV = 25;
const int pinEolico = 35;
const int pinRele = 26;
const int pinEnergiaEolica = 27;
const int ledCarico = 14;
const int ledBatteria = 12;
// π BATTERIA
float batteria = 50; // iniziale %
void setup() {
Serial.begin(115200);
Serial.println("STEP 6 - BATTERIA");
Wire.begin();
pinMode(pinCaricoFV, OUTPUT);
pinMode(pinRele, OUTPUT);
pinMode(pinEnergiaEolica, OUTPUT);
pinMode(ledCarico, OUTPUT);
pinMode(ledBatteria, OUTPUT);
digitalWrite(pinEnergiaEolica, HIGH);
if (!bmp.begin()) {
Serial.println("BMP180 NOT FOUND!");
while (1) delay(1000);
}
Serial.println("BMP180 OK!");
}
void loop() {
// ===== METEO =====
float temperature = bmp.readTemperature();
int32_t pressure = bmp.readPressure();
Serial.printf("TEMP: %.1f C | PRESS: %d Pa\n", temperature, pressure);
// ===== FV =====
int valoreFV = analogRead(pinPannello);
float tensioneFV = valoreFV * (3.3 / 4095.0);
float correnteFV = tensioneFV / 10.0;
float potenzaFV = tensioneFV * correnteFV;
Serial.printf("FV -> V: %.2f | I: %.2f | P: %.2f\n",
tensioneFV, correnteFV, potenzaFV);
int brightness = map(valoreFV, 0, 4095, 0, 255);
analogWrite(pinCaricoFV, brightness);
// ===== EOLICO =====
int valoreEolico = analogRead(pinEolico);
float tensioneEolico = valoreEolico * (3.3 / 4095.0);
float correnteEolico = tensioneEolico / 5.0;
float potenzaEolico = tensioneEolico * correnteEolico;
Serial.printf("EOLICO -> V: %.2f | I: %.2f | P: %.2f\n",
tensioneEolico, correnteEolico, potenzaEolico);
// ===== RELΓ + BATTERIA =====
if (tensioneEolico > 2.0) {
digitalWrite(pinRele, HIGH);
digitalWrite(ledCarico, LOW);
digitalWrite(ledBatteria, HIGH);
batteria += potenzaEolico * 0.05;
if (batteria > 100) batteria = 100;
Serial.println("β οΈ BATTERIA IN CARICA");
} else {
digitalWrite(pinRele, LOW);
digitalWrite(ledCarico, HIGH);
digitalWrite(ledBatteria, LOW);
batteria -= 1;
if (batteria < 0) batteria = 0;
Serial.println("βοΈ CARICO ATTIVO");
}
Serial.printf("π Batteria: %.1f %%\n", batteria);
Serial.println("----------------------");
delay(1000);
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4
Loading
bmp180
bmp180