SenseCAP Solar P1 voltage detection

skeypn
Sun, 29 Mar 2026 15:02:35 +0000

On one of my SenseCAP Solar P1 units, the MeshCore app shows a battery voltage of about 7.9–8.0 V, while on another similar SenseCAP Solar P1 the reading looks normal at around 4.1 V.

This is the battery voltage detection code from the MeshCore firmware (Arduino/PlatformIO), are there P1 variants or is there a manufacturing issue with some units detecting voltage incorrectly? It’s strange that it would only report incorrect values on some P1 units.

#define BATTERY_PIN             (16)    // Read the BAT voltage.
#define AREF_VOLTAGE            (3.0F)
#define ADC_MULTIPLIER          (3.0F) // 1M, 512k divider bridge

uint16_t getBattMilliVolts() override {
    digitalWrite(VBAT_ENABLE, LOW);
    int adcvalue = 0;
    analogReadResolution(12);
    analogReference(AR_INTERNAL_3_0);
    delay(10);
    adcvalue = analogRead(BATTERY_PIN);
    return (adcvalue * ADC_MULTIPLIER * AREF_VOLTAGE) / 4.096;
  }