LaskaKit ESPink is a Czech board for e-paper displays with the ESP32-S3 chip. The display connects with a flat cable to the FPC connector, sensors to the μŠup connectors, and the board can run from a Li-Ion cell and charge it. Both the display and the sensors can be switched off completely, so the board lasts for weeks on battery.
The ESPink runs, for example, the ŽivýObraz display service or the offline weather station from chiptron.
Specifications
- ESP32-S3 (ESP32-S3-WROOM-1-N16R8 module): 2 cores up to 240 MHz, 16 MB flash, 8 MB PSRAM
- 2.4 GHz Wi-Fi, Bluetooth LE 5; variant with onboard antenna or with IPEX connector
- 24-pin FPC connector for e-paper (SPI), DIP switch for the display type
- μŠup I2C and μŠup SPI, headers J1 (16 pads) and JP1 (8 pads)
- switchable VSENSOR power for the display and sensors (GPIO47), TP4054 charger, battery voltage measurement (GPIO9)
- USB-C via a CH9102F converter, RESET and IO40 buttons
- 73 × 28 mm
The pinout applies to version 3.6 (3.5 has the same layout) and is based on the LaskaKit schematic and Gerbers. The diagram is drawn in portrait orientation with USB at the top – the manufacturing files show the board in landscape with USB-C on the left.
Two pads on header J1 are mislabeled: “3” goes to GPIO37 and “18” to GPIO36. Both pins, as well as GPIO35 on JP1, are used by the module’s PSRAM – don’t connect anything to them. Verified in the schematic and by following the copper traces in the manufacturing files.
Before working with the display or sensors, turn on their power: digitalWrite(47, HIGH). The display is on SPI CS 10, SCK 12, MOSI 11, DC 48, RST 45, BUSY 38. The older ESPink 2.x with ESP32-WROOM has different pins.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | SPI | ADC | Touch | Note |
|---|---|---|---|---|---|---|---|---|
| Header J1 1 | VCC | input/output | 5 V from USB-C (after reverse-polarity protection) | |||||
| Header J1 2 | GND | – | ||||||
| Header J1 3 | GPIO37 | input/output | Pad J1-3 is silkscreened "3" but goes to IO37 (verified in the schematic and on the copper in the v3.6 gerbers). IO35–37 are used by the octal PSRAM of the N16R8 module – do not use as GPIO. GPIO3 is on the μŠup SPI connector. | |||||
| Header J1 4 | GPIO20 | input/output | ADC2_CH9 | USB D+ on the chip – USB-C goes through the CH9102F. | ||||
| Header J1 5 | GPIO19 | input/output | ADC2_CH8 | USB D− on the chip – but USB-C goes through the CH9102F converter; native USB is available only on the header. | ||||
| Header J1 6 | GPIO8 | input/output | ADC1_CH7 | T8 | ||||
| Header J1 7 | GPIO36 | input/output | Pad J1-7 is silkscreened "18" but goes to IO36 (schematic and copper v3.6). Module PSRAM – do not use. GPIO18 is the display's second CS (CS2). | |||||
| Header J1 8 | GPIO17 | input/output | ADC2_CH6 | |||||
| Header J1 9 | GPIO16 | input/output | ADC2_CH5 | |||||
| Header J1 10 | GPIO15 | input/output | ADC2_CH4 | |||||
| Header J1 11 | GPIO7 | input/output | ADC1_CH6 | T7 | ||||
| Header J1 12 | GPIO6 | input/output | ADC1_CH5 | T6 | ||||
| Header J1 13 | GPIO5 | input/output | ADC1_CH4 | T5 | ||||
| Header J1 14 | GPIO4 | input/output | ADC1_CH3 | T4 | ||||
| Header J1 15 | EN | input | Reset (RESET button) – logic 0 holds the chip in reset | |||||
| Header J1 16 | 3V3 | output | 3.3 V output, powers the ESP32 (always on) | |||||
| Header JP1 1 | GND | – | ||||||
| Header JP1 2 | GPIO1 | input/output | ADC1_CH0 | T1 | ||||
| Header JP1 3 | GPIO43 | input/output | TX | UART0 TX – also routed to the CH9102F converter | ||||
| Header JP1 4 | GPIO44 | input/output | RX | UART0 RX – also routed to the CH9102F converter | ||||
| Header JP1 5 | GPIO41 | input/output | JTAG MTDI | |||||
| Header JP1 6 | GPIO40 | input/output | Onboard button (pressed = logic 0) | |||||
| Header JP1 7 | GPIO39 | input/output | JTAG MTCK | |||||
| Header JP1 8 | GPIO35 | input/output | N16R8 module PSRAM – do not use. | |||||
| μŠup I2C 1 | GND | – | ||||||
| μŠup I2C 2 | VSENSOR | output | Power for the display and both μŠup connectors from a dedicated regulator. Enabled by GPIO47 (logic 1) – without it the display and sensors don't work. | |||||
| μŠup I2C 3 | GPIO42 | input/output | SDA | I2C SDA of the μŠup connector. 4k7 pull-ups to VSENSOR are connected only by the I2C_PULL-UP jumper on the bottom (open in the gerbers) – μŠup modules have their own. | ||||
| μŠup I2C 4 | GPIO2 | input/output | SCL | ADC1_CH1 | T2 | I2C SCL of the μŠup connector; for pull-ups see SDA. | ||
| μŠup SPI 1 | GND | – | ||||||
| μŠup SPI 2 | VSENSOR | output | Power for the display and both μŠup connectors from a dedicated regulator. Enabled by GPIO47 (logic 1) – without it the display and sensors don't work. | |||||
| μŠup SPI 3 | GPIO21 | input/output | MISO | |||||
| μŠup SPI 4 | GPIO14 | input/output | SCK | ADC2_CH3 | T14 | |||
| μŠup SPI 5 | GPIO3 | input/output | MOSI | ADC1_CH2 | T3 | μŠup connector SPI MOSI. Strapping pin for JTAG selection (ignored unless the eFuse is set). | ||
| μŠup SPI 6 | GPIO46 | input/output | SS | μŠup connector SPI CS. Strapping pin – must be logic 0 at boot (VSENSOR is off after power-up, so the sensors won't pull it up). | ||||
| Battery 1 | BAT+ | input/output | 3.7 V Li-Ion / Li-Pol cell (charged by TP4054) | |||||
| Battery 2 | GND | – |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GPIO10 | Displej – SPI CS |
| GPIO11 | Displej – SPI MOSI (DIN) |
| GPIO12 | Displej – SPI SCK |
| GPIO48 | Displej – DC |
| GPIO45 | Display – RST (strapping pin, logic 0 at boot) |
| GPIO38 | Displej – BUSY |
| GPIO18 | Display – second CS (GDEM1085T51 only) |
| GPIO47 | Display and sensor power enable VSENSOR (logic 1 = on) |
| GPIO9 | Battery voltage via 1 MΩ / 1.3 MΩ divider (Vbat = Vadc × 1.769) |
| GPIO0 | Download mode – controlled by the CH9102F converter itself (the board has no BOOT button) |
What to watch out for
- The GPIO are not 5V tolerant.
- The J1 pads with silkscreen “3” and “18” are actually GPIO37 and GPIO36 (PSRAM) – do not use them.
- Neither the display nor the sensors on μŠup work until GPIO47 turns on the VSENSOR power.
- The onboard I2C pull-ups are connected only with the I2C_PULL-UP solder jumper on the bottom – μŠup modules have their own.
- GPIO46 (CS on μŠup SPI) and GPIO45 (display RST) are strapping pins – they must be at logic 0 at boot.
- GPIO43/44 on JP1 are also the UART to the CH9102F converter.
More pinouts
See all pinouts on the Pinouts page.