Skip to the content
PCBKitNew board
2 layers47.2 × 55.5 mmInki, the printed circuit board in 3D

Battery-powered e-paper sign: room signage, sensor graphs, home automation, or anything over Wi-Fi. Wakes by real-time clock, NFC tap, or button. Raspberry Pi Pico W firmware, custom PCB, and 3D-printed case included.

Size
47.2 × 55.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
54
Nets
58
Pads
191
Tracks, vias
586, 53
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
6 Apr 2025
Updated
27 Oct 2026

Overview

Inki is an open-source printed circuit board by c0de111, from the c0de111/tinta repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 47.2 × 55.5 mm with 54 parts on 58 nets, routed with 586 tracks and 53 vias.

It is built around the BMP581, DS3231MZ+ and RV-3028-C7, with the BAT54J, MMBT3904 and TSM260P02CX6 among its other parts. Its parts include 22 resistors, 8 capacitors, 8 diodes, 6 connectors and 4 transistors. It belongs with the home automation and IoT and radio and wireless boards and the RP2040 boards of this library.

Main components

8

README

hardware/circuit/README.md

Tinta Circuit

This directory contains the schematic and hardware documentation for the Tinta PCB. There is also a former hand-solderable design, see legacy/.


Overview

The Tinta circuit is designed for long-term operation (years) using 3×AAA or 3×AA batteries. It uses a real-time clock for accurate timekeeping and wake-up scheduling — either a DS3231 or RV-3028, detected automatically at runtime — combined with MOSFET-based power switching to fully disconnect the controller between wake cycles. During wake cycles, information is fetched via Wi-Fi and displayed on an ePaper display that retains its content without power.

Key features:

  • MOSFET power switching — Pico W fully disconnected during sleep, drawing only µA from the RTC and passives
  • Dual RTC support — DS3231 or RV-3028, auto-detected at runtime via I2C
  • NFC wake and control — ST25 chip powered by RF field when Pico is off
  • Board identity straps — 4-bit hardware profile (GP0–GP3) selects display type and hardware variant at boot
  • Push button inputs — manual wake, page selection, and on-demand fetches

pcb


Concept, Functional Blocks and Components

The power control concept works as follows: in the default (sleep) state Q1 is off and the Pico W has no supply voltage. Three sources can wake the system: an RTC alarm (DS3231 or RV-3028 via their INT pin), a pushbutton, or an NFC field event from the ST25DV. Once Q1 switches on, the Pico pulls down the gate of Q2 to hold power, executes its program, sets the next RTC alarm, and cuts power by releasing Q1 — returning to the µA idle state.

The ePaper display is controlled via SPI; RTC and NFC communicate via I2C.

Manual user interaction:

  • Pushbuttons #0–3: on current boards the buttons are diode-OR'd into the wake line, so any of the four wakes the device. On earlier boards only #0 wakes it.
  • Pushbuttons #1–3: also read once at startup to select the page — hold them while the device powers on. Page selection works the same on both board generations.
  • ST25 NFC: write an NFC message to the tag to trigger a wake or page selection
Tinta board - for details use KiCADschematic - for details use KiCAD
Tinta board – for details use KiCADschematic – PDF · for details use KiCAD

Board Identity Straps (R8–R11)

Four 10k pull-up resistors on GP0–GP3 encode the board profile as a 4-bit code read at boot to determine display type and hardware configuration.

  • Populated resistor = bit reads 1
  • Empty pad = bit reads 0 (firmware applies internal pull-down)
CodeR8R9R10R11DisplayCoin CellBoard
0x00————?yesLegacy / unstrapped
0x0110k———7.5"yesL1, 7.5"
0x02—10k——4.2"yesL1, 4.2"
0x0310k10k——7.5"yesL2, 7.5"
0x04——10k—4.2"yesL2, 4.2"
0x0510k—10k—7.5"noL2 minimal (no coin cell)
0x06—10k10k—4.2"noL2 minimal 4.2" (no coin cell)
0x07–0x0F——————(reserved)

I2C devices (RTC, NFC) are auto-detected via bus scan — not encoded in straps. Buttons and LED do not require strap encoding.


RTC Backend Selection

The firmware auto-detects the RTC at runtime via I2C bus scan:

  • DS3231 at 0x68 — classic, high-accuracy, moderate power (~200 µA active)
  • RV-3028 at 0x52 — ultra-low power (~45 nA idle), AMBA/Micro Crystal

Both provide alarm-based wake scheduling. The RV-3028 improves idle power budget significantly for high-frequency refresh use cases.


NFC Integration (ST25DV04KC)

The ST25DV NFC tag is powered from the RF field when the Pico is off (0 mA from battery). Its GPIO-controlled VCC line (GP18) is held low during sleep. An NFC write from a phone or reader pulls the ST25 INT line, which feeds into the wake circuit — waking the device without a button press. The firmware reads the NFC payload at startup to determine the requested page or action.


Power Consumption and Estimations

Typical battery life can be estimated with power_consumption_estimate.py. Edit the parameters at the top of the script and run it; the two examples below are its output.

Power Consumption Estimate for 4.2"

Parameters taken from a real deployment — the field unit whose discharge curve is shown below.

Used Parameters

  • Idle current: 5 µA (RTC consumption, residual current via pullups and others)
  • Activation consumption: 0.250 mAh per wake-up (same for 4.2" and 7.5", measured — the ePaper refresh is not a significant contribution)
  • LED consumption (included above): 0.021 mAh per wake-up
  • Wake-up schedule: 18.3× per day, 5 days per week
  • Battery self-discharge: 2.5 % per year
  • Battery capacity: 1200 mAh (AAA batteries)

Annualized Consumption Rates (approximate)

  • Idle: 43.8 mAh/year
  • Active (wake-ups): 1192.8 mAh/year

⇒ Estimated battery lifetime: 350 days (≈ 0.96 years)

Yearly Breakdown

YearSelf-Discharge (mAh)Fixed Consumption (mAh)
114.321185.75

Measured battery discharge of a 4.2-inch field unit over 393 days

The same unit, measured: 393 days and 5142 wake cycles on one set of AAA cells, logged at every wake. The scheduled interval held a median of exactly 2700.0 s, in each of the 13 months, with a p95 jitter of about 7 s that did not change as the pack drained; the discharge fits a straight line at R² = 0.987. One interruption occurred in the whole period, 66 hours in January 2026, appearing at the same time in the logs of five other units on the same server.


Power Consumption Estimate for 7.5"

Used Parameters

  • Idle current: 5 µA (RTC consumption, residual current via pullups and others)
  • Activation consumption: 0.250 mAh per wake-up (same for 4.2" and 7.5", measured — the ePaper refresh is not a significant contribution)
  • LED consumption (included above): 0.021 mAh per wake-up
  • Wake-up schedule: 12× per day, 5 days per week
  • Battery self-discharge: 2.5 % per year
  • Battery capacity: 2500 mAh (AA batteries)

Annualized Consumption Rates (approximate)

  • Idle: 43.8 mAh/year
  • Active (wake-ups): 782.1 mAh/year

⇒ Estimated battery lifetime: 1065 days (≈ 2.92 years)

Yearly Breakdown

YearSelf-Discharge (mAh)Fixed Consumption (mAh)
151.48826.80
229.82826.80
38.76757.20

RTC Backup Supply

Some boards carry a coin cell (BT1, e.g. CR1225) feeding the RTC's VBAT pin through a diode-OR (D1, D2) alongside the main battery. It is optional and no longer fitted: Tinta re-syncs the RTC from the network at every wake cycle, so the RTC only has to hold time between cycles, which the main cells do. The board identity straps record which variant a given board is.


Key Components

  • Q1: P-channel MOSFET — main power switch, disconnects Pico during sleep
  • Q2: N-channel MOSFET — power latch (Pico holds itself on)
  • U1: Raspberry Pi Pico W — main controller (Wi-Fi, ePaper, I2C, SPI)
  • U2: DS3231SN or RV-3028 — RTC, alarm wake, I2C (auto-detected)
  • U3: ST25DV04KC — NFC tag, ISO 15693, I2C, RF-powered when Pico off
  • R8–R11: Board identity straps (10k pull-ups on GP0–GP3)
  • D1/D2, BT1: optional diode-OR and coin cell for RTC backup (not fitted on current boards)

Files

  • tinta_l2.pdf — schematic PDF (no KiCad required)
  • tinta_l2.kicad_sch — main schematic
  • tinta_l2.kicad_pcb — PCB layout
  • tinta_l2_BOM.csv — bill of materials
  • wake_sources.kicad_sch — wake circuit sub-schematic
  • optional_i2c_device.kicad_sch — optional I2C device sub-schematic
  • power_consumption_estimate.py — battery lifetime model (edit parameters, run)
  • project-libraries/ — custom KiCad symbols and footprints

Legacy Design

A former hand-solderable design is preserved in legacy/. It supports DS3231 only and has no NFC or identity straps, but can be assembled by an experienced solderer without SMD equipment.


License

This hardware is published under the CERN-OHL-S v2 license.

Parts

54
QtyValueFootprintReferences
8100nFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C6, C7, C8
7BAT54JDiode_SMD:D_SOD-323_HandSolderingD1, D3, D4, D5, D6, D7, D8
61kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5, R10, R11, R12, R13, R21
5Conn_01x02_SocketConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2, J3, J4, J5, J7
410kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR17, R18, R19, R20
4200kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R7, R8, R14
24k7Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3, R4
250kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR9, R22
2MMBT3904Package_TO_SOT_SMD:SOT-23Q2, Q4
2TSM260P02CXPackage_TO_SOT_SMD:SOT-23_HandsolderingQ1, Q3
11MResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2
11N4148WSDiode_SMD:D_SOD-323_HandSolderingD2
1220RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6
122RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR16
12M2Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR15
1BMP581inki:BMP581U2
1Battery 3,7VBattery:BatteryHolder_LINX_BAT-HLD-012-SMTbattery_RTC1
1DS3231MPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU1
1RV-3028-C7Package_SON:MicroCrystal_C7_SON-8_1.5x3.2mm_P0.9mmU3
1SC0918PICO:MODULE_SC0918pico1
1SW_DIP_x04Button_Switch_SMD:SW_DIP_SPSTx04_Slide_9.78x12.34mm_W8.61mm_P2.54mmSW1
1connector epaperConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ1

Questions

How big is the Inki PCB?

It measures 47.2 × 55.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Inki use?

54 parts, built around the BMP581, DS3231MZ+, RV-3028-C7 and BAT54J. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Inki KiCad files?

From the c0de111/tinta repository on GitHub, at the commit this page was made from: the board is hardware/circuit/legacy/inki.kicad_pcb and its schematic hardware/circuit/legacy/inki.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Inki design in my own project?

Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from c0de111/tinta

1
  • 2 layers47.2 × 55.5 mmTinta l2, the printed circuit board in 3D

    Tinta l2

    c0de111/tinta

    Battery-powered e-paper sign: room signage, sensor graphs, home automation, or anything over Wi-Fi. Wakes by real-time clock, NFC tap, or button. Raspberry Pi Pico W firmware, custom PCB, and 3D-printed case included.

    60 parts39Apache-2.0

Similar boards

  • 2 layers52.7 × 39.6 mmNFC harness V0, the printed circuit board in 3D

    NFC harness V0

    c0de111/NFC_exploration

    NFC exploration with st25 and raspberry pico

    22 parts3
  • 2 layers180 × 38 mmIrrgiation sensor, the printed circuit board in 3D

    Irrgiation sensor

    henriheimann/prosper3-monitor

    Repository of the Prosper III Environment Monitor project ☀️🌱

    39 parts
  • 4 layers65 × 56 mmKingfisher hat, the printed circuit board in 3D

    Kingfisher hat

    westphae/kingfisher

    Go flight data recorder for a turbonormalized Beech Bonanza V35B, running on a Raspberry Pi 5

    53 parts
  • 4 layers60 × 60 mmRocket payload, the printed circuit board in 3D

    Rocket payload

    Gupatron/Gupsfirstpcb

    This is the first pcb that I will manufacture and intend to use for teleop usecases in my personal projects.

    138 parts
  • 2 layers245.2 × 100 mmV5 main, the printed circuit board in 3D

    V5 main

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    160 parts156
  • 2 layers243.2 × 100 mmZ2 rbpi4, the printed circuit board in 3D

    Z2 rbpi4

    zynthbox-hw/zynthbox-hw

    182 parts
  • 2 layers36.4 × 29.4 mmKicad Smart Watch, the printed circuit board in 3D

    Kicad Smart Watch

    AFLProjects/DIY-Smart-Watch

    DIY Smart Watch with ATMEGA32U4 , ST7789 SPI display and RV3028-C7 Extreme Low Power RTC Module

    63 parts12
  • 4 layers64 × 56 mmEsp32s3-devkit-5v, the printed circuit board in 3D

    Esp32s3-devkit-5v

    eshelton328/forge

    Hardware design monorepo with software-grade CI/CD. KiCad PCB projects with automated ERC/DRC, multi-fab rule validation, schematic & BOM checks, and auto-generated board documentation.

    124 parts