

RGB Clock
RGB Pixel Clock
- Size
- 43.4 × 129.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 13
- Nets
- 8
- Pads
- 32
- Tracks, vias
- 130, 0
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 5 Nov 2025
- Updated
- 16 Nov 2025
Overview
RGB Clock is an open-source printed circuit board by PerlPooch, from the PerlPooch/Clock repository on GitHub. It is a 2-layer board of 43.4 × 129.5 mm with 13 parts on 8 nets, routed with 130 tracks and 0 vias.
It is built around the WS2812B. Its parts include 8 connectors and 5 diodes. It belongs with the lEDs and displays boards of this library.
Main components
1README
README.mdHardware
You can power Clock via the NodeMCU micro-USB port, but it is preferable to provide +5V power via the on-board connector or terminal J1. Driving the LEDs brighter than 50% when powered via the micro-USB connector may damage the NodeMCU.
A ring of 60 WS2812B LEDs are connected to J5 or J2 (but not both). Pin 1 is ground, Pin 2 is data, Pin 3 is +5. See [[RGB Clock Controller/Schematic.pdf][The Schematic]] for details.
Dual connectors J3 are provided for an optional small OLED display. Select the header that matches the orientation of the display.
Software 2.11
Wifi Configuration
If there is no configuration present or Clock is powered-on with button (SW3) depressed, Clock enters WiFi configuration mode.
In this mode, Clock will create a WiFi access point with the SSID Clock xx:xx:xx:xx:xx:xx. Join this AP with the password 12345678 and you will be presented with menus through which you can select and join an Internet-connected AP.
Once configured, Clock will reboot.
USB-Serial Access
Clock will provide a serial interface via USB at 115200/8/n/1.
OpenWeather
If you have an OpenWeather key, Clock will obtain the weather by making requests to
GET http://api.openweathermap.org/data/2.5/weatherusing the configured key. You must set owAppKey, latitude, and longitude.
Start Up
Clock will test the display, connect to the configured WiFi AP, and retrieve the current date and time via NTP.
Configuration
You can reach Clock via HTTP at its address. If you don't know the address that was assigned, you can enter WiFi Configuration mode and view the assigned IP address. Alternatively, the assigned IP address is available via the Serial connection upon start up.
Query Values and Status
Making a GET request to / will return a JSON payload of the current configuration.
http://<clockip>/| Field | Meaning / Range |
|---|---|
| "sleepRemaining" | <int> – Remaining sleep time in seconds |
| "timezone" | <int> – Timezone offset from OpenWeather data |
| "nextNTPUpdate" | <int> – Seconds until the next NTP time update |
| "nextOWUpdate" | <int> – Seconds until the next OpenWeather update |
| "temperature" | <int> – Current temperature (°F) |
| "lastOWResponse" | <int> – Last HTTP response code from OpenWeather |
| "time" | <string> – Current time |
| "display" | <string> – Display state (Day, Night, Sleep, or Preparing) |
| "version" | <string> – Clock firmware version |
Set Values
Making a GET request with a query-string can configure the options.
For example, to set the dim intensity and bright intensity for both daytime and nighttime modes:
http://clockip/?dim=7&bright=20&dimNight=7&brightNight=20| Option | Meaning / Range |
|---|---|
| "dim" | 0 .. 100 – Brightness of standard dots during Day time |
| "bright" | 0 .. 100 – Brightness of tick dots during Day time |
| "dimNight" | 0 .. 100 – Brightness of standard dots during Night time |
| "brightNight" | 0 .. 100 – Brightness of tick dots during Night time |
| "temp" | 0 .. 100 – Brightness of temperature dot when sleeping |
| "hue" | 0 .. 100 – Universal color shift to apply |
| "coldHue" | 0 .. 100 – Color of temperature dot when temperature < 60° |
| "warmHue" | 0 .. 100 – Color of temperature dot when temperature > 60° |
| "nightHour" | 0 .. 23 – Hour to start Night time |
| "dayHour" | 0 .. 23 – Hour to end Night time |
| "owAppKey" | <string> – OpenWeather API Key |
| "latitude" | <float> – Location Latitude |
| "longitude" | <float> – Location Longitude |
| "displaySleep" | <int> – Sleep the display for this many seconds |
| "reboot" | <> – Reboot |
OTA Firmware Update
GET http://<clockip>/_ac/updateWiFi Configuration Changes
GET http://<clockip>/_ac/Building
Clock is based on the (now old) NodeMCU 12E ESP8266 board.
Libraries
The Arduino community is great, offering many useful libraries to build upon. This project requires:
- SPI
- Wire
- Adafruit GFX Library
- Adafruit SSD1306
- arduino-timer
- ArduinoJson
- ESP8266WiFi
- ESP8266WebServer
- AutoConnect
- LittleFS
- ESP8266HTTPClient
- NeoPixelBus by Makuna
- NTPClient
These Libraries, in turn, require:
- Adafruit BusIO
- DNSServer
- EEPROM
- PageBuilder
- SD
- SDFS
- ESP8266SdFat
- Ticker
- ESP8266httpUpdate
Parts
13| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D1, D2, D3, D4, D5 |
| 2 | +5 | Connector_Pin:Pin_D1.0mm_L10.0mm | J3, J7 |
| 2 | GND | Connector_Pin:Pin_D1.0mm_L10.0mm | J5, J8 |
| 1 | D In | Connector_Pin:Pin_D1.0mm_L10.0mm | J4 |
| 1 | D Out | Connector_Pin:Pin_D1.0mm_L10.0mm | J6 |
| 1 | In | Marc:Connector 2.0mm 5.0mm on 2.5mm | J1 |
| 1 | Out | Marc:Connector 2.0mm 5.0mm on 2.5mm | J2 |
Questions
How big is the RGB Clock PCB?
It measures 43.4 × 129.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the RGB Clock use?
13 parts, built around the WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the RGB Clock KiCad files?
From the PerlPooch/Clock repository on GitHub, at the commit this page was made from: the board is RGB Clock LED Ring/RGB Clock.kicad_pcb and its schematic RGB Clock Controller/RGB Clock Controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the RGB Clock design in my own project?
Its repository states no licence, so its author keeps all rights: ask PerlPooch before reusing the design.
More from PerlPooch/Clock
1- 2 layers69.2 × 28.2 mm

Similar boards
- 4 layers99 × 53.3 mm

PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io
199 parts1.7kApache-2.0 - 2 layers26 × 30 mm

Microcontroller
FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop
34 parts1.1kCC-BY-4.0 - 4 layers82.6 × 82.5 mm

- 2 layers95.3 × 161.9 mm

- 2 layers42.8 × 28.8 mm

MM Skirt
PrintersForAnts/Micron
If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)
11 parts741GPL-3.0 - 2 layers149.6 × 127.1 mm

- 2 layers285.5 × 95 mm

- 2 layers177.7 × 144.5 mm
