No description
  • C 98.9%
  • HTML 0.8%
  • Lua 0.2%
  • Nix 0.1%
Find a file
2025-10-05 11:33:41 +02:00
.github/workflows use test for specific board 2024-09-25 09:43:59 +02:00
.vscode add more complex examples (#1) 2024-10-22 10:14:59 +02:00
assets remove unused lua scripts 2025-10-05 11:33:41 +02:00
boards/esp32c3-devkit use test for specific board 2024-09-25 09:43:59 +02:00
main Add HTTP server 2025-10-05 10:37:12 +02:00
.envrc add flake.nix 2025-10-04 19:08:59 +02:00
.gitignore add basic epdiy setup for lilygo t5 2025-10-03 22:31:29 +02:00
CMakeLists.txt Fix application name 2025-10-05 09:22:32 +02:00
diagram.json add project build automation 2024-09-25 09:03:35 +02:00
flake.lock add flake.nix 2025-10-04 19:08:59 +02:00
flake.nix add flake.nix 2025-10-04 19:08:59 +02:00
partitions.csv add more complex examples (#1) 2024-10-22 10:14:59 +02:00
README.md Add HTTP server 2025-10-05 10:37:12 +02:00
sdkconfig add basic epdiy setup for lilygo t5 2025-10-03 22:31:29 +02:00
sdkconfig.defaults add more complex examples (#1) 2024-10-22 10:14:59 +02:00
wokwi.toml add project build automation 2024-09-25 09:03:35 +02:00

Inkpot on ESP32 Lilygo T5

This repository contains the sources required to run the Inkpot frontend on a Lilygo T5, an ESP32 equipped with an e-ink display. It allows you to create Lua sketches that draw on the e-ink screen.

You need to give it a 2.4Ghz Wifi SSID and password by adjusting main/settings.h. After that it will start an HTTP server that you can use to interact with the device. The HTTP server has two endpoints:

  • GET / -- Hello world page to confirm that things are working
  • POST /draw -- Accepts a Lua POST body and will execute the script

You can send scripts like this:

cat foo.lua | curl -X POST --data-binary @- 10.0.0.100/draw

The IP address of the display is logged to its serial output and can be read via idf.py monitor (see below).

Prerequisites

There is a flake.nix at the root of this repository that defines a development environment with all required tools. If you are using direnv, cd into the repositorie's root directory after cloning it and run direnv allow. If you aren't using direnv the enviroment can be activated using nix develop ..

The build environment consists of:

Build and Flash

idf.py set-target esp32
idf.py build flash monitor

You can stop the monitor by pressing Ctrl + ].

File Structure

  • main/
    • inkpot.c: Main program containing embedded Lua script and file-based Lua execution.
    • paper.c: Defines the lua bindings to epdiy that can be used for drawing on the screen.
  • assets/: Directory containing all Lua scripts; some are older example scripts that are not executed
    • epaper.lua contains the sketch that runs at startup