RGB Matrix Clock
CircuitPython firmware for a 64x32 matrix clock with RTC, sensors, and menu controls.
Overview
This project is a hardware clock build powered by CircuitPython on a Raspberry Pi Pico-class board and a Waveshare 64x32 RGB matrix panel. It combines local sensor input with RTC-backed timekeeping and a compact on-device menu for display control.
Hardware Stack
- Raspberry Pi Pico-class board (UF2 in repo targets Pico 2 W)
- Waveshare 64x32 RGB matrix panel
- DS3231 RTC (I2C)
- DHT22 temperature/humidity sensor
- Photoresistor for ambient light sensing
- Three buttons for menu navigation
Firmware Structure
The active firmware lives in RGB_scroll_clock_0215/ and is split by responsibility:
-
code.py: main loop, refresh cadence, and fault recovery reload -
display_manager.py: matrix and label object setup -
display_updates.py: time/date rendering, animations, sensor display updates -
brightness.py: auto/manual dim logic and color scaling -
menu.py: button handling and menu state transitions -
sensors.py: DS3231, DHT22, and photoresistor initialization
Key Features
- Animated 24-hour time display
- Date and weekday row
- Temperature and humidity readout
- Scrolling banner text
- Auto brightness with manual override
- Menu controls for brightness mode and dim level
Setup Summary
- Flash CircuitPython UF2 from
RGB_scroll_clock_0215/. - Copy firmware files and
lib/dependencies toCIRCUITPY. - Confirm wiring in
config.pypin mappings. - Set display text/colors and brightness defaults in
config.py. - Reboot and verify menu controls and sensor updates.
Repository
Source code and setup documentation: gitbenlewis/RGB_Matrix_Clock_waveshare_64_32_pi_pico