The display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together, and leaving individual access to the cs lines of each display, This board allows you to display images with a resolution of 480x160px.

The board integrates also 4 general purpose buttons for human interface, which allows the board to have multiple applications, the main application that this board was intended to be used is a fully customizable clock.

The PCB is intended to be compatible with any Microcontroller or SBC like the Raspberry as it only needs some GPIOs and an SPI Port. This makes the PCB compatible with a simple microcontroller as an Arduino to other more advanced microcontrollers. We could say this board is a breakout board for the arrangement of six displays and 4 buttons.

Controller Board

The controller board integrates an ESP32-S2 for its integrated USB Bootloader making it a very compact board with a powerful microcontroller with wifi and Bluetooth capabilities.

This board connects directly to the SPI Display Array Board in its back, it also has an RGB LED and Audio Amplifier for color and audible notifications. The hardware is more than capable to manage 6 displays at a decent frame rate and has enough memory for more than 5 different timezones and clock themes.

This controller has also take into account the possibility of an 8 display board and different display controller detection by the reading of one GPIO, Low logic state for ST7735, and High logic state for ST7789.

Firmware

The latest firmware includes the addition of 4 timezones with different clock themes with the corresponding country Flag, the firmware is based on the SNTP example provided by Expressif which allows you to configure and set your Wifi’s SSID and password for automatic clock time according to the chosen timezones.

I am very new with the ESP32 so I have tried with MicroPython, CircuitPython, Arduino, and Espressif repository running in Visual Studio Code, and the easiest for me was this last one, so I took the SNTP example located at the protocols example folder. In Visual Studio Code is the Espressif plug-in which makes it very easy and fast to get started with the ESP32.

After installing and opening the example we just need to configure the example for the Wifi credentials.

And now is as easy as adding the SPI configurations for the displays.

#define PIN_NUM_RST     33
#define PIN_NUM_DC      34
#define PIN_NUM_MOSI    35
#define PIN_NUM_CLK     36
#define PIN_NUM_BLK     37
#define PIN_NUM_MISO    -1

#define PIN_NUM_CS1     1
#define PIN_NUM_CS2     2
#define PIN_NUM_CS3     3
#define PIN_NUM_CS4     4
#define PIN_NUM_CS5     5
#define PIN_NUM_CS6     6
#define PIN_NUM_CS7     7
#define PIN_NUM_CS8     8

#define PIN_NUM_BTN     0
#define PIN_NUM_BTA     10
#define PIN_NUM_BTB     11
#define PIN_NUM_BTC     12 
#define PIN_NUM_BTD     13

Media

All the graphical design files can be downloaded and modified according to your needs. I have drawn 12 Clock themes and it would be awesome to add yours to the project. The design files are Inkscape SVG, which means that the designs are fully scalable to other screen resolutions.

I have also already converted all the images to bytes for your microcontroller in case that you want to follow the already written test firmware.

These are just some flags but I can add some more if you leave me a comment.

The following is an example of a very simple splash screen that can be added to the clock. 

For the case, I decided to design it in Autodesk Fusion 360 so that everyone is able to modify it.