Files
Ardiuno/ESP32-PoE-Test1/ESP32-PoE-Test1.ino
2021-01-06 17:44:20 +01:00

69 lines
1.6 KiB
C++

#define BATTERY_PIN 35 // Battery sensor of ESP32-PoE
#define VCC_PIN 39 // 5V Present sensor of ESP32-PoE
float battery_read()
{
unsigned long sum = 0; // sum of samples taken
float voltage = 0.0; // calculated voltage
float output = 0.0; // output value
// Make 200 measures to avoid error.
for (int i = 0; i < 200; i++)
{
sum += analogRead(BATTERY_PIN);
delayMicroseconds(1000);
}
// calculate the voltage
voltage = sum / (float)200;
// Max value for 3.6V is 2275 (ADC value / 470k + 470k bridge)
output=map(voltage, 0.0f, 2275.0f, 0, 100);
if (output < 100)
return output;
else
return 100.0f;
}
bool external_powered()
{
// This can used to calculate the 5V level but we will return powered or not
unsigned long sum = 0;
float voltage = 0.0;
float output = 0.0;
// Make 100 measures to avoid error.
for (int i = 0; i < 100; i++)
{
sum += analogRead(VCC_PIN);
delayMicroseconds(1000);
}
// Calculate the voltage
voltage = sum / (float)100;
// Max value for 3.6V is 4095 (ADC value / 470k + 470k bridge)
output=map(voltage, 0.0f, 4095.0f, 0, 100);
if (output < 100)
//return output;
return false;
else
//return 100.0f;
return true;
}
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.print("Battery Level: ");
Serial.print(battery_read(), 2);
Serial.println(" %");
if(external_powered())
Serial.println("Powered by 5V");
else
Serial.println("Powered by Battery");
delay(1000);
}