No description
  • C 98.9%
  • HTML 0.8%
  • Lua 0.2%
  • Nix 0.1%
Find a file
2025-10-07 22:52:21 +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 allow updating screen via web interface 2025-10-07 02:02:13 +02:00
boards/esp32c3-devkit use test for specific board 2024-09-25 09:43:59 +02:00
main allow updating screen via web interface 2025-10-07 02:02:13 +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 only use a single nixpgks revision as input 2025-10-07 22:52:21 +02:00
flake.nix only use a single nixpgks revision as input 2025-10-07 22:52:21 +02:00
partitions.csv add more complex examples (#1) 2024-10-22 10:14:59 +02:00
README.md Add index.html with basic documentation 2025-10-06 21:05:24 +02:00
sdkconfig allow updating screen via web interface 2025-10-07 02:02:13 +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 assets/scripts/post_test.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/
    • http/: Static assets to be served by the HTTP server
    • scripts/: Directory containing all Lua scripts; some are older example scripts that are not executed
      • boot.lua contains the sketch that runs at startup
      • post_test.lua contains another sketch