Contrib Cal Github Desk Gadget

by loganfouts in Circuits > Gadgets

1881 Views, 19 Favorites, 0 Comments

Contrib Cal Github Desk Gadget

IMG_6438.png
2.png
3.png

Tired of your coding achievements living only on a screen? This guide will show you how to build Contrib Cal, a physical, glowing GitHub calendar that sits on your desk. It visualizes your commit history with LEDs and can even display weather animations. Also, essential self host software is one click deployable from the web interface. Powered by a Raspberry Pi Zero W, it's a perfect weekend project for makers and developers.

A huge thank you to PCBWay for sponsoring this project by providing the high-quality custom PCB! Check out their reliable PCB fabrication and assembly services for your next build.

Check out the product launch website!

Quick Demo and Assembly Guide


Join the email list!:

  1. This helps me judge interest and is a good spot for feedback and ideas :)

Supplies

Electronics:

  1. Raspberry Pi Zero W
  2. Custom PCB (e.g., from PCBWay) and At least 28x WS2812B (Neopixel) 5050 smd LEDs
  3. USB-C Breakout Board
  4. 5v step down buck convertor
  5. Solid-core wire (recommended for easier handling)

Hardware & Mechanical:

  1. 3D-Printed Case (Face and Back pieces - STL files available on the project thingiverse)
  2. Fasteners:
  3. I know there's a lot I will try to minimize the different sizes needed in the future!
  4. 4x M3 x 12mm screws
  5. 4x M1.7 screws
  6. 6x M2.5 screws
  7. 2x M2 screws
  8. 4x M3 heat-set inserts
  9. For the Front Diffuser:
  10. A thin piece of plastic and a piece of printer paper is best attached with spray adhesive or simply glue stick to avoid visible residue.

Tools:

  1. 3D Printer
  2. Soldering Iron & Solder
  3. Screwdrivers
  4. Wire Cutters/Strippers

Print the Case

7.JPG
8.JPG

Note: if you are building with the buck convertor I need to upload that version of the case to thingiverse which I will do shortly

Print the two main parts: the Face (front) and the Back Case. Standard PLA settings (0.2mm layer height, 20% infill) work well. Files are on thingiverse.

Solder the LED Matrix

2.JPG
6.JPG
Contrib cal Wiring Schematic.png

This is the most meticulous step.

  1. Orient your LEDs correctly (check the silkscreen for the small dot in the corner). My recommended technique: Put a small amount of solder on one pad (tinning), place the LED with tweezers, re-melt the solder to secure it, let it cool, then solder the remaining pins.

Install Heat-Set Inserts

FYJ2C33MEUA270B.jpg

Using a soldering iron carefully press the 4x M3 heat-set inserts into their designated holes in the 3D-printed back case. Let them cool completely. These will provide strong threads for assembling the case later.

Wiring and Power

5.JPG

1. Connect the LED Matrix to the Raspberry Pi:

Solder wires from your LED matrix to the corresponding pins on the Raspberry Pi GPIO header.

  1. LED Matrix 5VRaspberry Pi 5V
  2. LED Matrix GNDRaspberry Pi GND
  3. LED Matrix Data InRaspberry Pi GPIO 18

2. Connect the Power Source:

You have two options for powering the system:

  1. Option A: Using a USB-C Breakout and Buck Converter (Recommended for high-power LEDs)
  2. Solder wires from your USB-C breakout board:
  3. Breakout VCC (5V)Buck Converter Vin+ (Positive Input)
  4. Breakout GNDBuck Converter Vin- (Negative Input)
  5. Connect the Buck Converter output to the Raspberry Pi:
  6. Buck Converter Vout+Raspberry Pi 5V
  7. Buck Converter Vout-Raspberry Pi GND
  8. Option B: Direct USB Power (Simpler)
  9. You can simply power the Raspberry Pi directly via its Micro USB port, bypassing the need for a separate buck converter. Ensure your power supply can provide enough current for both the Pi and the LEDs. Just orient the pi the other way around when screwing it into the case.

Assembly - Screw Everything In

F5SWYWOMFFQ6I56.png
IMG_6445.png

1. Mount the Internal Components:

  1. LED Matrix: Secure the PCB to the inside of the Face using the four M1.7 screws.
  2. Raspberry Pi: Mount the Raspberry Pi Zero to the Back Case using the four M2.5 screws.
  3. USB-C Board: Attach the USB-C breakout board to the Back Case using the two M2.5 screws.
  4. Buck Converter: Fasten the buck converter to the Back Case using the two M2 screws.

2. Final Assembly:

  1. Neatly route all wiring to prevent pinching or damage when the case is closed.
  2. Align the Face with the Back Case and secure the two halves using the four M3 x 12mm screws, fastening them into the pre-installed heat-set inserts.

Install the Diffuser

For a sharp, clean appearance, a diffuser is essential. You have two recommended options:

  1. Option A: Apply spray adhesive to a piece of clear plastic (e.g., acetate). Carefully attach a sheet of paper to the adhesive-coated plastic, creating a laminated diffuser. Use the included stencil to trace and cut it to the perfect size. Secure the assembly into the recess with a minimal amount of super glue.
  2. Option B (This is what I have done): Use a single piece of quality paper or construction paper. Trace and cut it using the included stencil for a perfect fit. Attach it directly into the recess using a glue stick or spray adhesive to minimize visible residue.

Important: Take your time to align the diffuser neatly within the recessed area on the Face. A precise installation is what transforms the display, making the individual light cells look distinct and professional.

Software Setup

250915_08h37m46s_screenshot.png
250915_08h17m52s_screenshot.png

The magic happens with code! Flash the Raspberry Pi OS Lite to a microSD card and follow the detailed Getting Started guide on the project's GitHub repository to install the software, connect it to your GitHub account, and configure the settings.

GitHub Repo: The code is being actively maintained and polished up by me, but feel free to make PRs :).

Enjoy! Plug in power, and watch your GitHub contribution history light up your desk

Join the email list!