Skip to the content
PCBKitNew board
2 layers80 × 32 mmTGL Board, the printed circuit board in 3D

This project is a small low profile PCB LED matrix that can be used as a name tag or to display various text and animations and to play games.

Size
80 × 32 mm
Copper layers
2
Thickness
1.6 mm
Parts
185
Nets
187
Pads
718
Tracks, vias
1,098, 196
Pours
8
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
6 May 2024
Updated
5 Jul 2024

Overview

TGL Board is an open-source printed circuit board by Beo-Coder, from the Beo-Coder/muek-TGLBoard repository on GitHub. It is a 2-layer board of 80 × 32 mm with 185 parts on 187 nets, routed with 1,098 tracks and 196 vias.

It is built around the RP2040, AP2112K-3.3 and WS2812B, with the ABM8G-12.000MHZ-4Y-T3 among its other parts. Its parts include 128 diodes, 29 capacitors, 11 resistors, 3 ICs and 2 connectors. It belongs with the lEDs and displays boards and the RP2040 boards of this library.

Main components

4

README

README.md

TGL Board

8x16 ARGB LED Board

This project is a small low profile PCB LED matrix that can be used as a name tag or to display various text and animations and to play games.

If you have your own "programmable" version, you can read more about programming here

About

This project was initially planned as a gift for teachers after our graduation.
It is a small and low cost LED matrix board.
It consists of a 8x16 ARGB LED matrix, two buttons as user input and a USB-C jack for powering and programming. On the front and backside there are several places where custom text can be written to, to further individualize the board.
One of the main goals was that the whole board is visually appealing and can be used without an enclosure to have a simpler and sleeker looking product.

The electronics consist of an RP2040 microcontroller and a 2 MB (16 Mbit) flash IC.
You can read more about the electronic here

To program the board, you can use SWD on the Tag-Connect connector on the backside as well as on the custom pads on the backside.
It is also possible to program the board over USB-C, but this needs further hardware modifications (Read more about here)

Software

Currently, the software has four modes:

  • Displaying text
  • Showing animations
  • Playing a game
  • Setting the brightness

Between these modes, you can easily switch by holding down both buttons at the same time and waiting a bit. You can choose the mode by going left or right and select it by either waiting or pressing both buttons again.

Inside the different modes, the two buttons have different meanings. They change the text, the color of the text, the animation, or you can play the game.

Text

The text can be individually programmed by modifying the board_text_config.h file.

Animations

There are currently seven different animations:

  • Fireworks
  • Snake "AI"
  • Conway's Game of Life
  • Meteorite rain
  • Smooth rainbow
  • 'Hard' rainbow
  • Jumping 'thing'

Games

There are also two games, but only one is selected by default.

  • Dino Game (Default)
  • Tetris

To change the game, you need to modify main.cpp.

Controls:

Dino Game:

Left: Duck
Right: Jump

After each game, your score and your high score is shown.

Tetris:

Left: Moves block to the left
Right: Moves block to the right
Right while holding left: Rotating block

After each game, your score and your high score is shown.
This Tetris game was created by @StarMiner99

Brightness control

The brightness is only saved when you switch the menu after setting the desired brightness.

Programming

You can either use PlatformIO (Arduino Framework) or the official C/C++ SDK from Raspberry Pi.
If you want to use the C/C++ SDK, please use the c-SDK branch.

For details on how these two differ, read Runtime.

Usage

You need PlatformIO to use this project.
Arduino IDE might work too (not tested).

In the platform.ini file, there are now two build environments. pico_normal and pico_fast you can read about the differences here Runtime.

For your own programming, you can use my pioMatrixOutput library. Documentation is here pioMatrixOutput.

For your own text, you can use my library. Documentation is here Textcontroller.

For flash usage, read here Flash.

Important: If you brick your board (can't upload anything) please read here.

Hardware

Schematic, layout, BOM and gerber files can be found here.

Each button has a 10k-ohm pull-down resistor and a 100-nF capacitor for debouncing.

The design of the MCU section follows more or less the hardware design guide for the RP2040.

Because of the design, it was not possible to add a 100-nF capacitor to each LED, but each row of LEDs (16 each) has its own 10-uF cap (I know it is not perfect or a replacement).
Also, there are multiple more capacitors to further decouple the matrix as good as possible so that fast-changing patterns do not affect the MCU and its operations.
This is further improved by the fact the whole MCU subsystem runs on 3.3V over a LDO and not the 5.0V that the LEDs run on. While testing, I haven't had any issues with noisy power lines.
Also, when measuring with my oscilloscope and the matrix turning fully on and fully off as fast as possible, I couldn't measure any serious noise on the 5.0V rail nor on the 3.3V rail for the MCU.

USB-C

Behind the USB-C jack, there are two unpopulated pads. These pads cut the USB data signal, so that you can't program the board over USB.
This can be useful, for example, if you do not want that your teachers get confused when they plug it in to their pc :^)
If you want to enable USB programming, you need to short these two pads either with an 0402 0-ohm resistor or simply with solder bridges.
Be aware that this is quite challenging to solder, you shouldn't destroy/desolder neighboring components.
Maybe it is easier if you use a hotplate and 0-ohm resistors (Haven't tried it).
If you order new boards, you can add those to be assembled too.
The 27-ohm resistors on each USB data line necessary for the RP2040 are already assembled.

It should look something like this: usb connections

SWD interface

The three unnamed pads on the backside above the UART pads are connections for SWD programming.

Pinout:

board outline | | +---+ +---+ +---+ | / \ / \ / \ | / \ / \ / \ | + RUN + + SWD + + SWCLK + | \ / \ / \ / | \ / \ / \ / | +---+ +---+ +---+ | | +---+ +---+ | / \ / \ | / \ / \ | + Tx + + Rx + | \ / \ / | \ / \ / | +---+ +---+

Stand

I also created a stand for the board. It has three different angles: 90°, 70° and 60°.
It has place for a name on the top side and for text on the bottom side.
Inside the stand there are three slots for 1 cent coins (EU) to make the stand more stable.
If you want to insert those coins, you need to stop the print mid-way and insert/glue the coins in place.
3mf and STL files can be found here

stand

If you have any questions, please contact me.

© 2024 Leonhard Baschang

Parts

185
QtyValueFootprintReferences
128WS2812BLeosLib:LED_WS2812B_XL-1615RGBC-WS2812BD1, D10, D11, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112 +112
13100nCapacitor_SMD:C_0402_1005MetricC1, C2, C5, C6, C7, C8, C9, C10, C11, C14, C16, C20, C21
1110uCapacitor_SMD:C_0603_1608MetricC15, C17, C18, C22, C23, C24, C25, C26, C27, C28, C29
310kResistor_SMD:R_0402_1005MetricR2, R6, R7
20Resistor_SMD:R_0402_1005MetricR10, R11
215pCapacitor_SMD:C_0402_1005MetricC12, C13
21uCapacitor_SMD:C_0402_1005MetricC3, C4
227Resistor_SMD:R_0402_1005MetricR8, R9
25.1kResistor_SMD:R_0402_1005MetricR3, R4
1100kResistor_SMD:R_0402_1005MetricR5
11kResistor_SMD:R_0402_1005MetricR1
13.3VTestPoint:TestPoint_Pad_D1.0mmTP7
147uCapacitor_SMD:C_0805_2012MetricC19
15.0VTestPoint:TestPoint_Pad_D1.0mmTP8
1ABM8G-12.000MHZ-4Y-T3Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U2
1Button 1PTS526:PTS526SK15SMTR2LFSS1
1Button 2PTS526:PTS526SK15SMTR2LFSS2
1Conn_ARM_SWD_TagConnect_TC2030-NLConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ1
1GNDTestPoint:TestPoint_Pad_D1.0mmTP6
1LOGOcustomLogos:muehkLogoG***
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU1
1RUNTestPoint:TestPoint_Pad_D1.0mmTP1
1RxTestPoint:TestPoint_Pad_D1.0mmTP3
1SWCLKTestPoint:TestPoint_Pad_D1.0mmTP4
1SWDTestPoint:TestPoint_Pad_D1.0mmTP5
1TxTestPoint:TestPoint_Pad_D1.0mmTP2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ2
1W25Q16JVUXIQ_TRW25Q16JVUXIQ:SON50P300X200X60-9LIC1

Questions

How big is the TGL Board PCB?

It measures 80 × 32 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TGL Board use?

185 parts, built around the RP2040, AP2112K-3.3, WS2812B and ABM8G-12.000MHZ-4Y-T3. 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 TGL Board KiCad files?

From the Beo-Coder/muek-TGLBoard repository on GitHub, at the commit this page was made from: the board is hardware/KiCAD/TGL_Board.kicad_pcb and its schematic hardware/KiCAD/MatrixModule.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TGL Board design in my own project?

Its repository states no licence, so its author keeps all rights: ask Beo-Coder before reusing the design.

Similar boards

  • 4 layers150 × 65 mm32blit, the printed circuit board in 3D

    32blit

    Daft-Freak/32blit-hardware-kicad

    Imported and cleaned up 32blit board files

    121 parts
  • 4 layers26.4 × 49.4 mmRP2040 Dev, the printed circuit board in 3D

    RP2040 Dev

    CafeAsh/DevBoards

    Development board based on the ATmega32U4 microcontroller, designed for USB-enabled embedded projects, rapid prototyping, and firmware experimentation.

    40 parts
  • 4 layers15 × 48 mmUSB dongle v1.0, the printed circuit board in 3D

    USB dongle v1.0

    r4gus/CandyStick

    Now it gets real

    46 parts
  • 4 layers56 × 85 mmControl board, the printed circuit board in 3D

    Control board

    TrendBit/SMBR-hardware

    Design file for SMBR hardware modules in KiCAD.

    229 partsGPL-3.0
  • 6 layers32 × 20 mmWire Free DAQ, the printed circuit board in 3D

    Wire Free DAQ

    Aharoni-Lab/Miniscope-Wire-Free-DAQ

    All information, guides, and tutorials can be found on the Miniscope-Wire-Free-DAQ Wiki Page .

    126 parts5
  • 4 layers85.9 × 82 mmBalloonMotherboardV4, the printed circuit board in 3D

    BalloonMotherboardV4

    EggiEl/SpiCy-BEXUS

    Cyanobacteria are among the oldest and most efficient photosynthetic organisms on planet Earth. They contribute 25% of the oxygen on Earth today and were crucial in forming our atmosphere in the early stages of Earth's…

    283 parts1
  • 2 layers57.5 × 78.3 mmDroneV2, the printed circuit board in 3D

    DroneV2

    Flynsky/RP2040-Drone

    A simple Quadrocoper based on the RP2040

    100 parts