Skip to content
Snippets Groups Projects
Verified Commit 61ff895e authored by TheJoeCoder's avatar TheJoeCoder
Browse files

Add architecture to the README

parent eaaf548f
Branches
No related tags found
No related merge requests found
......@@ -33,3 +33,23 @@ xhost +
# Run the clock
sudo ./.venv/bin/python3 main.py
```
## Architecture
The main system running the software is a Raspberry Pi Zero 2 W. The display is a 240x240 pixel SPI display.
In terms of software stack:
- The clock's software is written in Python, using the Pygame library for rendering the display.
- The software is multithreaded:
- One thread for the display, which renders the display (with pygame).
- One thread for the LEDs, controlling the patterns (with either neopixel or dummy led libraries).
- One thread for the web server, which serves the configuration page and API endpoints.
- The main thread controls the other threads and handles changes to the configuration.
- Wayland is used as the display server, as it is faster than X11 and works well with the SPI display.
- For operating system we use Raspberry Pi OS Lite, with Wayland and the necessary dependencies installed.
It's designed to be:
- Modular, with different modules - both widgets for the display and patterns for the LEDs that
can be added or removed. The clock can be configured to display different modules in different orders,
and the modules can be easily created or modified.
- Easily extensible, with a simple API for creating new modules. The clock is also designed to be
easily configurable, with a simple configuration file that can be edited to change the appearance of the clock.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment