Inkplate 10 battery voltage reading with ESPHome firmware

Customer:

Can I connect a 10000mAh 3.7V Li-ion battery to the Inkplate10 display? Does the built-in charger support it and is it safe to use with Inkplate?

Original message (Croatian)

Mogu li spojiti ovu bateriju: Li-Ion Battery 10000mAh 3.7V - Durable Power Source – Soldered Electronics

na Inkplate10 display?

Da li ugrađeni punjač podržava istu i da li je sigurno koristiti s inkplateom?

Hvala,

Lp!

[name removed]

Originally submitted via email support on 25 July 2025. Migrated to the forum for community visibility.

Soldered Support:

The mentioned battery is compatible and its connector matches the port on the Inkplate 10 device.

Original message (Croatian)

navedena baterija je kompatibilna i njezin konektor odgovara priključku na samom Inkplate 10 uređaju.

Customer:

The battery arrived and everything works. I have an additional question: is there a way to get information about the remaining battery percentage and/or other battery information (such as whether it’s charging, voltage, current)?

Original message (Croatian)

Baterija je stigla, sve radi :slight_smile:

Imam još dodatno pitanje, postoji li mogućnost dobiti info negdje o preostalom postotku baterije i/ili neke druge informacije o bateriji (tipa puni li se, voltaža, amperaža)?

Hvala!

Soldered Support:

It is possible to read the voltage currently on the battery using readBattery: Inkplate-Arduino-library/examples/Inkplate10/Advanced/Other/Inkplate10_Read_Battery_Voltage/Inkplate10_Read_Battery_Voltage.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub

It is not possible to detect with 100% certainty whether the battery is charging or not, but when USB is connected, readBattery returns around 4.2, and then by detecting this value with some tolerance you can detect whether Inkplate is charging. This corresponds approximately to the voltage of a full battery, so a function that would check whether the battery is charging or not would return false positives for a short time.

Current cannot be read on Inkplate 10.

Check the documentation for other questions: Inkplate Documentation | Soldered Documentation

Original message (Croatian)

ovdje sam za tehničke upite :slight_smile: moguće je pročitati napon koji je trenutno na bateriji koristeći readBattery: Inkplate-Arduino-library/examples/Inkplate10/Advanced/Other/Inkplate10_Read_Battery_Voltage/Inkplate10_Read_Battery_Voltage.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub

Nije moguće detektirati 100% deterministički puni li se baterija ili ne, ali kad se USB spoji, readBattery vraća oko 4.2, i onda se preko detektiranja te vrijenodsti s nekom tolerancijom može detektirati puni li se Inkplate. To odgovara približno naponu pune baterije tako da funkcija koja bi provjeravala puni li se baterija ili ne bi vraćala kratko vrijeme false positive.

Amperažu nije moguće pročitati na Inkplate 10.

Nadam se da info pomaže :slight_smile: Provjeri dokumentaciju za ostala pitanja: Inkplate Documentation | Soldered Documentation

Customer:

Since I flashed ESPhome firmware, do you know how I could access battery information there?

Original message (Croatian)

Hvala ti na primjeru i trudu.

S obzirom da sam flashao
ESPhome firmware, znaš li možda kako bih tamo mogao pristupiti informacijama o bateriji?

Hvala,

Lp!

[name removed]

Soldered Support:

Here is a config snippet for ESPHome that allows you to do this:

time:
  - platform: pcf85063
    id: esptime
    # repeated synchronization is not necessary unless the external RTC
    # is much more accurate than the internal clock
    update_interval: never
  - platform: homeassistant
    # instead try to synchronize via network repeatedly ...
    on_time_sync:
      then:
        # ... and update the RTC when the synchronization was successful
        - pcf85063.write_time:

pca6416a:
  - id: pca6416a_hub
    address: 0x20
    # Primary expander for display control and additional I/O
  - id: pca6416a_hub2
    address: 0x21
    # Secondary expander for additional I/O

switch:
  - platform: gpio
    id: battery_read_mosfet
    pin:
      pca6416a: pca6416a_hub
      number: 9

sensor:
  - platform: adc
    id: battery_voltage
    update_interval: never
    attenuation: 12db
    pin: 35
  - platform: template
    unit_of_measurement: "V"
    accuracy_decimals: 3
    lambda: |-
      // Enable MOSFET to connect battery voltage divider
      id(battery_read_mosfet).turn_on();
      // Wait for voltage to stabilize
      delay(5);
      // Sample ADC value
      float adc = id(battery_voltage).sample();
      // Disable MOSFET to save power
      id(battery_read_mosfet).turn_off();
      return adc;
    filters:
      - multiply: 2 # Compensate for voltage divider (1:2 ratio)

display:
  - platform: inkplate6
    id: inkplate_display
    greyscale: true
    partial_updating: false
    update_interval: never
    model: inkplate_10
    ckv_pin: 32
    sph_pin: 33
    gmod_pin:
      pca6416a: pca6416a_hub
      number: 1
    gpio0_enable_pin:
      pca6416a: pca6416a_hub
      number: 8
    oe_pin:
      pca6416a: pca6416a_hub
      number: 0
    spv_pin:
      pca6416a: pca6416a_hub
      number: 2
    powerup_pin:
      pca6416a: pca6416a_hub
      number: 4
    wakeup_pin:
      pca6416a: pca6416a_hub
      number: 3
    vcom_pin:
      pca6416a: pca6416a_hub
      number: 5

We are working on improving and better documenting ESPHome support for Inkplate in our new official documentation.

Original message (Croatian)

Nema na čemu,

evo kolega mi je poslao snippet configa za ESPHome gdje se ovo može

time:

  • platform: pcf85063
    id: esptime

repeated synchronization is not necessary unless the external RTC

is much more accurate than the internal clock

update_interval: never

  • platform: homeassistant

instead try to synchronize via network repeatedly …

on_time_sync:
then:

… and update the RTC when the synchronization was successful

pcf85063.write_time:

pca6416a:

  • id: pca6416a_hub
    address: 0x20

Primary expander for display control and additional I/O

  • id: pca6416a_hub2
    address: 0x21

Secondary expander for additional I/O

switch:

  • platform: gpio
    id: battery_read_mosfet
    pin:
    pca6416a: pca6416a_hub
    number: 9

sensor:

  • platform: adc
    id: battery_voltage
    update_interval: never
    attenuation: 12db
    pin: 35
  • platform: template

unit_of_measurement: “V”
accuracy_decimals: 3
lambda: |-
// Enable MOSFET to connect battery voltage divider
id(battery_read_mosfet).turn_on();
// Wait for voltage to stabilize
delay(5);
// Sample ADC value
float adc = id(battery_voltage).sample();
// Disable MOSFET to save power
id(battery_read_mosfet).turn_off();
return adc;
filters:

  • multiply: 2 # Compensate for voltage divider (1:2 ratio)

display:

  • platform: inkplate6
    id: inkplate_display
    greyscale: true
    partial_updating: false
    update_interval: never
    model: inkplate_10

ckv_pin: 32
sph_pin: 33
gmod_pin:
pca6416a: pca6416a_hub
number: 1
gpio0_enable_pin:
pca6416a: pca6416a_hub
number: 8
oe_pin:
pca6416a: pca6416a_hub
number: 0
spv_pin:
pca6416a: pca6416a_hub
number: 2
powerup_pin:
pca6416a: pca6416a_hub
number: 4
wakeup_pin:
pca6416a: pca6416a_hub
number: 3
vcom_pin:
pca6416a: pca6416a_hub
number: 5
Inače radimo na tom da se ESPHome za Inkplate poboljša i bolje dokumentira na našoj novoj službenoj dokumentaciji, tako da hvala na ideji da možemo lakše pružiti ovo kroz config.

Customer:

What voltage (approximately) would correspond to 0% battery charge? It’s great that you plan to work on ESPHome documentation.

Original message (Croatian)

puno hvala na informacijama i snippetu.

Sve radi :slight_smile:

Još zadnje pitanje, koja voltaža (otprilike) bi odgovarala 0% napunjenosti baterije?

Super je ako imate u planu raditi dokumentaciju za ESPHome :slight_smile:

Hvala još jednom!

Lp!

[name removed]

Soldered Support:

Inkplate will not discharge the battery down to literally 0%. Effectively 0% occurs when the display can no longer refresh and the ESP32 enters a boot loop where it constantly tries to draw enough current to start. From our testing, it is good to look at around 3.65 V. Your mileage may vary depending on the model and battery, but I suggest this as an initial value.

Original message (Croatian)

Inkplate bateriju neće spustiti doslovce do 0% već je efektivno 0% kad se display više ne može refreshati i ESP32 uđe u boot loop gdje stalno pokuša povući dovoljno struje kako bi se upalio. Iz naših pokusa to je dobro gledati oko 3.65 V. YMMV ovisno o modelu i o bateriji, to predlažem kao neki početnu vrijednost