47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# 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:
|
|
|
|
``` bash
|
|
cat assets/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:
|
|
|
|
- ESP-IDF version 5.1.0 or higher
|
|
- Components:
|
|
- [Lua 5.4](https://components.espressif.com/components/georgik/lua/)
|
|
- [LittleFS 1.14](https://components.espressif.com/components/joltwallet/littlefs/)
|
|
- [EPDIY](https://github.com/vroland/epdiy)
|
|
|
|
## Build and Flash
|
|
|
|
```bash
|
|
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
|
|
- `boot.lua` contains the sketch that runs at startup
|
|
- `post_test.lua` contains another sketch
|
|
|