This repository contains the firmware for the Golioth Ostentus.
Ostentus is a faceplate designed for use with Golioth hardware demonstrations. The printed circuit board includes five reverse-mounted LEDs for status indication, an ePaper display for output, three capacitive touch pads, and an accelerometer. The faceplace receives commands via i2c to control the following features:
- Show a splashscreen from image file stored on the mass storage partition.
- Display information on slides, including a slide label and data which may be updated using partial refresh.
- Control the state of the five status LEDs.
- The may be controlled using capacitive touch input to change to the next and previous slides, and to toggle the summary slide.
- Ostentus Hardware repository
- This firmware was originally based on the Pimoroni Badger2040 project.
Precompiled .uf2 binaries can be found in the Releases section.
Micropython has known issues building with some CMake versions. This repository includes a Dockerfile that will install a known-working build environment. Installation and use of the Docker container has been simplified as much as possible.
-
After cloning the repo, run the bootstrap script to configure submodules
./bootstrap.sh
-
Install Docker on your system
Note: If you have installed Docker Desktop on macOS you can skip this step.
sudo apt install docker.io sudo usermod -a -G docker <your_username> newgrp docker
-
Perform initialization of the Docker image/container
make docker_init # macOS make docker_init_mac -
Build firmware
make
The result of running make is a firmware.uf2 file in the root directory of
this repository that can be flashed onto the Pico.
If you encounter issues using this approach, please consult the Build with Docker guide for building the Ostentus binary.
It is recommended that you use the libostentus library to control Ostentus
from Zephyr. (This is included as a submodule of this repo.) Add
the libostentus repo to your Zephyr
project as a submodule.
Use any i2c-controller to write to the display on device-address 0x12.
The source of truth for the memory registers is from the golioth/libostentus
repository (included as a submodule). Please consult
libostentus/include/libostentus_regmap.h