elink is a daisy chain of electronic shelf labels (ESL). They are linked together via UART, in such a way that the TX
line of a node is connected to the RX
line of the next. The first node is special, as it can be connected to via Bluetooth Low Energy (BLE).
The ESLs are Hanshow Stellar-MN2, an e-paper, BLE capable device that uses the Telink TLSR8359 SoC under the hood.
Directory | Description |
---|---|
code/ |
Firmware for the displays - based on atc1441/ATC_TLSR_Paper |
clients/python-cli |
A complete Python command line client for elink |
clients/web/ |
A simple web client for elink. Supports only drawing text via BLE. It is additionally deployed on rbaron.github.io/elink |
case/ |
Fabrication files for the case - SVGs templates for laser cutting and 3D-printable supports |
The Dockerfile sets up a Linux Alpine container with all the dependencies and toolchain.
# Build the Docker image.
$ cd code/
$ docker build -t elink-docker .
# Mount the code/ directory inside the container and run `make`
$ docker run -it --rm -v "${PWD}":/app elink-docker
# make
The firmware will be created in ./code/elink.bin
.
The Dockerfile.devcontainer defines an image for VSCode's devcontainer, and .c_cpp_properties.json sets up the include path inside the container. Once set up, opening code/
in VSCode should allow you to edit the code with auto-complete and build it with make
inside VSCode's built-in terminal, that runs inside the Docker container. The toolchain, SDK and custom linker script should be set up automatically.
The code is released under the MIT license, and fabrication files (STL, SVGs) under CC BY-NC-ND 4.0.
Here's drawing "Hello, world" over BLE with the web client: