Skip to the content
PCBKitNew board
2 layers74 × 56.5 mmLed matrix, the printed circuit board in 3D

Code, PCB and 3D Printing files for the TechNickTräff Pixelmatrix.

Size
74 × 56.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
35
Pads
70
Tracks, vias
69, 0
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
10 Feb 2025
Updated
5 Apr 2025

Overview

Led matrix is an open-source printed circuit board by TechNickTraff, from the TechNickTraff/Pixelmatrix repository on GitHub. It is a 2-layer board of 74 × 56.5 mm with 14 parts on 35 nets, routed with 69 tracks and 0 vias.

It is built around the 74AHCT125D. Its parts include 2 ICs, 2 connectors, 2 switches, 1 capacitor and 1 resistor. It belongs with the lEDs and displays boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

Pixelmatrix

Code, PCB and 3D Printing files for the TechNickTräff Pixelmatrix.

TODOs

  • Make Animations work (code is there but memory limits kicks)
  • Make it possible to save files bigger than 4000bytes via the web interface (memory limits again)
  • The whole Arduino codebase is a mess ;)
  • Delete is not yet implemented on the arduino
  • Maybe a better debounce implementation for the action button?

Installation

  1. Copy the contents of the sd Folder to the root of the SD Card on the LED Matrix. (And check no hidden .DS_STORE files were created in the gallery folder)
  2. Copy the secrets.h.example file to secrets.h and add your WiFi Information.
  3. Use the Arduino IDE or the Arduino CLI to compile and flash the LEDMatrix.ino file to your Arduino.
  4. Use the Serial Monitor in the Arduino IDE (Under Tools->Serial Monitor) or Arduino CLI to connect to the LED Matrix to retrieve the current IP Address.
  5. Using your Webbrowser navigate to the IP Address (http only) and change the Settings as you like them.
  6. If you have a somewhat smart router it might be beneficial to add a static DHCP lease so the Matrix always has the same ip.

Build Web

As the Arduino is quite slow it is beneficial to minify the JavaScript. Install the necessary Build Tools using npm. Afterwards run npm run build to generate the correct files in the sd Folder.

Build Arduino

Either click the Button in the Arduino IDE or use the Arduino CLI command arduino-cli compile.

Using the Arduino CLI

Using arduino-cli and compiling the project is unfortunately a bit more involved than running arduino-cli compile . in the project directory but very instructive. Below are some pointers to overcome common issues when using arduino-cli. Additionally, a Makefile is provided to simplify the process.

Installing Dependencies

When managing the project through arduino-cli, the dependencies are not installed automatically. You have to install them manually:

bash
$> arduino-cli lib install SD FastLED WiFiNINA ArduinoJson

Main sketch filename

Compiling the project requires that the main sketch file has the same name as the project directory.

  • Running arduino-cli compile --fqbn [..] . will fail if the main sketch file is not named the same as the repository - that is, if the repository is called Pixelmatrix, the main sketch file should be called Pixelmatrix.ino.

User permissions

The flash may initially fail since the user typically does not have write permissions on the serial TTYs by default. This can be fixed by adding the user to the proper group (e.g. dialout, uucp or tty).

  • Quick fix: sudo chmod 666 /dev/ttyACM0 (or whatever the port is)
  • Doing it properly:
    • Run arduino-cli board list to get the port of the Arduino, e.g. /dev/ttyACM0.
    • ls -l /dev/ttyA* to get the group of the device (uucp in my case).
    • sudo usermod -aG uucp $USER to add yourself to the group.
    • Log out and log back in to apply the changes.

Monitoring the serial output

Using arduino-cli to monitor the serial port, you are typically not fast enough to catch the sketch reporting its IP address.

  • To circumvent this issue, a macro DEBUG_SERIAL can be defined which delays the setup of the sketch until a serial connection is established.
  • To compile the sketch with the DEBUG_SERIAL macro, run arduino-cli compile --fqbn [..] --build-property build.extra_flags="-DDEBUG_SERIAL" ..

Knowlege base

[Custom IDE] Arduino.h not found

Arduino.h is from the Arduino Core Project. It is automatically installed with the Arduino IDE and can then be added to your CPATH or you can clone the repository and add that to your CPATH (You have to download more files than just Arduino.h).

Testing the Web Page locally

You have to use a simple web server like php -S, npx serve or other. Whatever you have installed. (Just opening the index.html does not work due to webmodules requiring the same origin policy.) You can also use the api_endpoint key in the main.mjs file to point the local served web file to your Arduino. Here is an example:

js
const settings = { api_endpoint: "http://192.168.1.41"};

The Arduino is stuck/ doesn't respond/ cannot be flashed

You can reset the Arduino using the button on the back of the Arduino. Pressing it 2 times quickly in sucession will lead to the Arduino halting in the bootloader. (Press the button a third time to exit the boot loader.) Also, here are some reasons how i've crashed my Arduino, it might help.

Reasons why I have crashed the Arduino
  • Too many read requests to the sd library in quick sucession (every 1000ms)
  • Accessing empty memory due to passing JsonArray which internally points to a JsonDoc and the JsonDoc gets dereferenced.
  • Accidental endless loops ;)
  • Using too much Memory

Explanation of weird language constructs

text
  while (true)
    ;

Since the Arduino runs a continuous loop, when encountering unrecoverable errors this endless while loop will lead to the watchdog terminating the arduino process. It is the only option (that i know of) to stop executing the programm.

Parts

14
QtyValueFootprintReferences
112V Power INConnector_Wire:SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mmJ2
116V1000uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC1
1470RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
174AHCT125Package_DIP:DIP-14_W7.62mm_LongPadsU2
1ACTION_BUTTONConnector_Wire:SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mmSW2
1Arduino_Nano_33_IOTModule:Arduino_NanoA1
1LED_STRIPConnector_Wire:SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mmJ1
1LOGOLOGOG***
1POWER_SWITCHConnector_Wire:SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mmSW1
1~Custom_Footprints:CR-4030LU1

The 10 most common of 14 parts.

Questions

How big is the Led matrix PCB?

It measures 74 × 56.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Led matrix use?

14 parts, built around the 74AHCT125D. 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 Led matrix KiCad files?

From the TechNickTraff/Pixelmatrix repository on GitHub, at the commit this page was made from: the board is resources/PCB/KiCad/led_matrix.kicad_pcb and its schematic resources/PCB/KiCad/led_matrix.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Led matrix design in my own project?

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

Similar boards

  • 2 layers333.4 × 149.9 mmOmega Mainboard, the printed circuit board in 3D

    Omega Mainboard

    skiselev/omega

    Omega Home Computer

    248 parts459GPL-3.0
  • 2 layers45 × 54 mmRusty hangulclock, the printed circuit board in 3D

    Rusty hangulclock

    suapapa/HangulClock

    원조 한글시계. (Rust, Go, Arduino 구현)

    15 parts49
  • 2 layers333.4 × 149.9 mmOmega Mainboard, the printed circuit board in 3D

    Omega Mainboard

    merlinkv/Omega_MSX2

    Update of the Omega Home Computer Project

    265 parts40GPL-3.0
  • 2 layers273.8 × 109 mmTrueStrike42, the printed circuit board in 3D

    TrueStrike42

    byungyoonc/TrueStrike42

    TrueStrike42 is a columnar staggered unibody split keyboard designed to maximize performance and minimize finger fatigue.

    167 parts24
  • 4 layers65.4 × 53.3 mmWaterdrop esphome, the printed circuit board in 3D

    Waterdrop esphome

    twasilczyk/waterdrop-esphome

    Waterdrop RO system smart Wi-Fi module for Home Assistant

    39 parts15MIT
  • 2 layers345 × 105.6 mmPov display, the printed circuit board in 3D

    Pov display

    usedhondacivic/ECE-4760-POV-Display

    Persistence of vision display. 30 FPS, full RGB color, and 26" diameter. Updates remotely over WIFI.

    50 parts13
  • 2 layers95.3 × 50.8 mmTinyDiskII, the printed circuit board in 3D

    TinyDiskII

    GLGPrograms/tinyDiskII

    Homemade floppy disk emulator for Apple II series computers

    52 parts12GPL-3.0
  • 2 layers296 × 234 mmDeck, the printed circuit board in 3D

    Deck

    joshjetson/phosphor

    A full fledged DAW in TUI and GUI flavors: Run it in the terminal or run it as a desktop app (Desktop App Coming Soon..maybe)

    281 parts12MIT