Inkplate 2 battery compatibility and charging management

Customer:

I purchased a 3D printed enclosure for Inkplate 2 and want to source a battery separately. Which Li-ion battery is mechanically and electrically compatible with this model and enclosure? Please provide specifications.

Original message (Croatian)

Kupio sam tiskano kućište za Inkplate 2 vaše proizvodnje (Soldered). Želio bih samostalno nabaviti bateriju, pa me zanima:

Koja Li-ion baterija mehanički i električno odgovara ovom modelu i kućištu? Molim vas da mi navedete specifikacije (npr. tip).

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

Soldered Support:

The compatible battery is a 600mAh Li-ion battery. You will need to cut the JST connector and solder it to the contacts on the board: red wire to +, black wire to -.

Original message (Croatian)

hvala na upitu, riječ je o 600mAh bateriji s našeg webshopa: Li-Ion Battery 600mAh 3.7V for Reliable Power – Soldered Electronics

Potrebno je odrezati JST konektor i zalemiti ga na kontakte na pločici:

Crvena na +, crvena na -

Javi ako još što treba :slight_smile:

Attachment omitted in migration: image.png

Customer:

I’m planning to use Inkplate 2 as a display for selected parameters from Home Assistant. I have one more question about the battery: it’s difficult for me to find a Li-ion battery in the required dimensions. What will happen if I use a similar Li-poly battery with the same capacity and identical dimensions? Of course, with built-in protections.

Original message (Croatian)

Hvala ti. Siguran sam da će se Inkplate 2 odlično pokazati kao zaslon za prikaz odabranih parametara iz Home Assistanta. Već sam pronašao nekoliko zanimljivih projekata. Vaš proizvod je upravo ono što sam već neko vrijeme tražio, praktički spreman za korištenje. Ako dopustiš, imao bih još jedno pitanje o bateriji. Teško mi je pronaći Li-ion bateriju u traženim dimenzijama. Što će se dogoditi ako upotrijebim sličnu Li-poly bateriju istog kapaciteta i identičnih dimenzija? Naravno, s ugrađenim zaštitama. Pitam jer ste mi daleko pouzdaniji izvor od raznih foruma. Pozdrawiam, [name removed]

Attachment omitted in migration: Screenshot 2025-08-26 082712.jpg

Soldered Support:

Li-poly batteries are not supported. Soldering a Li-poly battery to the contacts could damage both the battery and Inkplate. The 600mAh Li-ion battery is the exact one designed for the Inkplate 2 enclosure. We recommend using exactly that battery or powering Inkplate via a USB-C power bank. Using any battery other than Li-ion with protection is not recommended and could permanently damage Inkplate.

Original message (Croatian)

Witaj [name removed],

Drago mi je, trenutno radimo na tome da službeno podržamo više Inkplate ploča preko Home Assistanta. Li-Poly baterija na žalost nije podržana i lemljenje nje na kontakte bi ju moglo oštetiti i oštetiti Inkplate.

Baterija koju sam linkao: Li-Ion Battery 600mAh 3.7V for Reliable Power – Soldered Electronics je točno ona koja je u kućištu Inkplate 2.

Preporučujem korištenje točno te baterije ili napajanje Inkplate-a preko USB-C power banka. Korištenje bilo kakve baterije osim Li-ion sa zaštitom (naše s web shopa) nije preporučeno i moglo bi oštetiti Inkplate trajno.

Customer:

I’m working on a project with Inkplate 2 and using InkplateLibrary installed via Arduino IDE Library Manager. I encountered two compilation problems:

Initialization / 1-bit mode: Some examples show initialization as Inkplate display(INKPLATE_1BIT); display.begin(); while others show Inkplate display; display.begin(INKPLATE_1BIT);. Both fail to compile in my library version with “no matching function” errors.

Dynamic font sizing: I want to dynamically adjust text size based on screen width using getTextBounds():

int textSize = 3;
while (textSize > 1) {
  display.setTextSize(textSize);
  display.getTextBounds(headerText, 0, 0, &x1, &y1, &w, &h);
  if (w <= display.width() - 10) break;
  textSize--;
}

This also fails to compile with an error on the getTextBounds() call.

Minimal example 1 – initialization problem:

#include <Inkplate.h>
Inkplate display(INKPLATE_1BIT); // does not compile

void setup() {
  Serial.begin(115200);
  display.begin(); // or: display.begin(INKPLATE_1BIT); → also doesn't
}

void loop() {
}

Minimal example 2 – dynamic text sizing problem:

#include <Inkplate.h>
Inkplate display(INKPLATE_1BIT);

void setup() {
  Serial.begin(115200);
  display.begin();
  String headerText = "Very Long Station Name That Might Not Fit";
  int16_t x1, y1;
  uint16_t w, h;
  int textSize = 3;
  while (textSize > 1) {
    display.setTextSize(textSize);
    // ❌ compilation fails here
    display.getTextBounds(headerText, 0, 0, &x1, &y1, &w, &h);
    if (w <= display.width() - 10) break;
    textSize--;
  }
  display.setCursor(10, 20);
  display.print(headerText);
  display.display();
}

void loop() {
}

What is the correct way to initialize Inkplate 2 in 1-bit mode in the current library version? Is dynamic font sizing with getTextBounds() supported on Inkplate 2?

Original message (Croatian)

Dober dan, radim projekt s Inkplate 2 i koristim InkplateLibrary instaliranu putem Arduino IDE Library Managera. Naišao sam na dva problema koja onemogućuju kompilaciju koda: Inicijalizacija / 1-bitni način rada U nekim primjerima inicijalizacija izgleda ovako: Inkplate display(INKPLATE_1BIT); display.begin(); U drugima ovako: Inkplate display; display.begin(INKPLATE_1BIT); Međutim, u mojoj verziji knjižnice oba primjera ne uspijevaju se kompilirati: Konstruktor s argumentom → “no matching function” begin(INKPLATE_1BIT) → “no matching function for call to ‘Inkplate::begin(int)’”
Dakle, nije jasno kako pravilno postaviti 1-bitni način rada na Inkplate 2. Dinamičko podešavanje veličine fonta

Želio bih dinamički prilagoditi veličinu teksta prema širini zaslona pomoću getTextBounds(), primjerice: int textSize = 3; while (textSize > 1) { display.setTextSize(textSize); display.getTextBounds(headerText, 0, 0, &x1, &y1, &w, &h); if (w <= display.width() - 10) break; textSize–; } Nažalost, i ovo se ne može kompilirati – pojavljuje se greška kod poziva getTextBounds(). Za referencu prilažem dva minimalna .ino primjera koja demonstriraju probleme: Minimal example 1 – initialization problem #include Inkplate display(INKPLATE_1BIT); // does not compile void setup() { Serial.begin(115200); display.begin(); // or: display.begin(INKPLATE_1BIT); → also doesn’t } void loop() { } Minimal example 2 – dynamic text sizing problem #include Inkplate display(INKPLATE_1BIT); void setup() { Serial.begin(115200); display.begin(); String headerText = “Very Long Station Name That Might Not Fit”; int16_t x1, y1; uint16_t w, h; int textSize = 3; while (textSize > 1) { display.setTextSize(textSize); // :cross_mark: compilation fails here display.getTextBounds(headerText, 0, 0, &x1, &y1, &w, &h); if (w <= display.width() - 10) break; textSize–; } display.setCursor(10, 20); display.print(headerText); display.display(); } void loop() { } Molim te, objasni koji je ispravan način inicijalizacije Inkplate 2 u 1-bitnom modu u trenutnoj verziji knjižnice? Je li dinamičko podešavanje veličine fonta s getTextBounds() podržano na Inkplate 2? Ako da, molim Vas za minimalni radni primjer. Općenite primjedbe su da sam, pregledavajući razna foruma, saznao za nesklad između verzija biblioteka. Na primjer, konstruktor Inkplate(INKPLATE_1BIT) radi samo u novijim verzijama, što može dovesti do pogrešaka pri kompilaciji ako se koristi verzija instalirana putem Library Managera. Neki linkovi su zastarjeli i gubi se vrijeme na pretraživanje jer navedene stranice ili repozitoriji više ne postoje. Ako moje pisanje na hrvatskom nije točno i/ili potpuno razumljivo, možemo prijeći na engleski. Srdačan pozdrav, [name removed]

Soldered Support:

See the Inkplate 2 documentation: Inkplate 2 – Initialization | Soldered Documentation

Inkplate 2 has one mode of operation, so it is not necessary to specify 1-bit or 3-bit mode. Inkplate 2 runs in black-white-red mode only. You just need to declare Inkplate display and then call display.begin() in setup.

Make sure you are using the latest version of the Arduino Library, which should be updatable through the Arduino library manager.

getTextBounds() is supported on Inkplate 2 because it is part of the AdafruitGFX library and can be used. We do not have a code example for this.

We have implemented a drawTextBox() function in the Inkplate library that automatically prints to a new line if a word goes beyond the text box boundaries. We have an example for Inkplate 6 but it will work the same way for Inkplate 2: Inkplate 6 – Printing Text | Soldered Documentation

Official and latest documentation for our products is at Welcome | Soldered Documentation with examples for all Inkplate device functionalities.

Original message (Croatian)

pogledaj dokumentaciju za Inkplate 2:

Inkplate 2 – Initialization | Soldered Documentation

On ima jedan način rada, zbog toga nije potrebno navoditi 1 bit ili 3 bit mode. Inkplate 2 radi samo na mod black-white-red i dovoljno je navesti Inkplate display i onda u setupu display.begin()

Preporučujem da koristiš zadnju verziju Arduino Library-a, ona bi se trebala moći update-ati kroz Arduino library manager.

Gettextbounds je podržan na Inkplate 2 zbog toga što je dio AdafruitGFX biblioteke, te se može koristiti. Nemamo primjer koda za ovo.

Mi smo u Inkplate library implementirali drawTextBox funkciju koja automatski printa u novi red ako riječ dođe preko rubova text box-a, imamo primjer za Inkplate 6 ali će na isti način raditi i za Inkplate 2: Inkplate 6 – Printing Text | Soldered Documentation

Službena i najnovija dokumentacija za naše proizvode nalazi se na Welcome | Soldered Documentation i tamo postoje primjeri za sve funkcionalnosti za Inkplate uređaje. Službeni Soldered Forum još ne postoji, pa je zapravo najbolje kontaktirati nas na support.

Customer:

Thanks for the advice. With your help, I finally managed to work with the text box. I understand that your products assume users will work with them independently and have the necessary knowledge. But nothing can replace basic support and pointing in the right direction. I have a question: does Inkplate 2 manage battery charging completely? I ask because opinions on the internet are divided. Specifically, I’m wondering about a situation where the device is connected to USB power for several hours, for example if someone forgets about it.

Original message (Croatian)

[name removed], hvala ti na savjetima. Zahvaljujući njima, napokon sam se snašao s tekstualnim okvirom. Znam da vaši proizvodi pretpostavljaju da će se korisnik samostalno baviti njima i da ima potrebno znanje za to. Ali ništa ne može zamijeniti osnovnu podršku i pokazivanje pravog smjera :blush: Zanima me, upravlja li Inkplate 2 s baterijom u potpunosti procesom punjenja? Pitam jer su mišljenja na internetu podijeljena. Konkretno me zanima situacija u kojoj je uređaj priključen na USB napajanje tijekom više sati, primjerice kad se na to zaboravi. [name removed]

Soldered Support:

Great that it worked! Inkplate 2 does not manage the battery itself, and battery status cannot be read on Inkplate 2 due to PCB design space constraints. The battery itself has overfcharge protection built in, and the charging chip on the board handles everything. The battery charges automatically when the device is connected to USB-C. You can leave the device connected to USB-C continuously—it will charge fully and then automatically regulate to prevent overcharging.

Original message (Croatian)

Witaj [name removed],

super, drago mi je da je proradilo! Zato pišemo i tu novu dokumentaciju, da je lako sve pronaći.

Inkplate 2 ne upravlja baterijom, i stanje baterije se na Inkplate 2 ne može pročitati zbog manjka mjesta dizajna na PCB-ju. Baterija sama ima zaštitu od previše punjenja i sve obavlja chip za punjenje na pločici. Baterija se automatski puni kad je uređaj spojen na USB-C i to je to. Može se uređaj spojiti na USB-C stalno, on će se napuniti do kraja i onda automatski regulirati od prevelikog punjenja.