Skip to the content
PCBKitNew board
2 layers195 × 100 mmPico.Light controller, the printed circuit board in 3D

Pico.Light controller

MonkeyCodeMen/ULC-Pico-C-Code1

ULC - Pico universal light controller with Rasperry Pico

Size
195 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
117
Nets
107
Pads
437
Tracks, vias
971, 162
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
1 Oct 2023
Updated
1 Apr 2026

Overview

Pico.Light controller is an open-source printed circuit board by MonkeyCodeMen, from the MonkeyCodeMen/ULC-Pico-C-Code repository on GitHub, published under the MIT licence. It is a 2-layer board of 195 × 100 mm with 117 parts on 107 nets, routed with 971 tracks and 162 vias.

It is built around the IRLZ34N and BSS138. Its parts include 35 resistors, 25 capacitors, 20 connectors, 12 transistors and 10 fuses. It belongs with the lEDs and displays boards and the RP2040 and AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

ULC Pico (Universal Light Controller on Raspberry Pico)

All started with the purchasing of Raspberry Pico RP2040 in 2023.

a fascinating dual core processor for less than 5€ (gosh do you know what we have paied for Z80 or 68K when I started with µController) .. congratulation to the raspberry foundation good job

The Arduino IDE beacomes to small for this number files so I changed to Visual Studio Code with PlatformIO .. fascinating all for free .. and the integration of RP2040 from maxgerhardt outstanding .. Thanks a lot

I tried several other things like:

  • Rapberry Pico Debuger
  • Unity test
  • embedded dual core arcitecture With debugging
  • LED stripes, RGB LED Stripes, WS2812B LED stripes, WS2812B LED Matrix
  • SD card
  • Advent calender
  • Real Time Clock
  • SPI Display
  • I2C Slave (Arduino Nano)
  • I2C keyboard
  • GIF animations of WS2812B Matrix
  • advent calendar with gifs Layout Layout

.. I think I show you a picture of the current state: system architecture

I just want to explore how it works and it lead to this .. but it will not be the end, it just reached a state where I decided to make it public to give something back to the community, in the hope it may be usefull for somebody. And don’t forget: always stay curious and persistent. The best way to learn is through mistakes. But only those who try something new and unfamiliar can make mistakes to learn from. Every day without learning something is a lost day.

So, search behind every tree and under very stone for the three-headed monkey, and if you need a boat, just ask for Stan.

The project keeps growing and growing .. I needed a PCB .. I found KiCad : @KiCad Team .. a professional layout tool for free .. great work ...

Layout

there were now a lot of components so I needed a hosuing .. you will not belief there is a free M-CAD tool : freecad

housing

I build all in wood an milled it on my MP CNC (a nice free project for CNC machine please look for it) And this is the final result:

final implementation

and what can I do ?

mainly it control several types of LED (a lot of them)

one example a advent calendar for nurds: final implementation

some more details: final implementation final implementation final implementation


Table of Contents


System architecture

system architecture


Software architecture

software architecture

I staied with the Arduino loop concept and designed the most classes in this manner. This is not suitable for hard real time rqeuirement, but it is easy and with the performance of the two cores of the RP2040 it is amazing what is possible.

But from my experience I use during one loop run a fixed time (now). I freeze this time at the begin of the loop and pass it than to every module that is been called in this loop.

In addition to that I have a favor for the rough concept of state-machine with init run etc...

For more details please refer the comment of the individual classes.

ToDo description to :

  • multi core problems - MUTEX handling

Required Libraries

Below is a list of the libraries or frameworks required for the project to run. Make sure to install them before proceeding.

Many thanks to all the amazing developers of these libraries. Based on this foundation, it is possible to create larger projects like this one with a moderate amount of time. This enables significantly more functionality than would have been achievable by a single person alone.

All Lib's will be installed by PlatformIO based on ini file .. perfect .. @PlatforIO team: outstanding job, i know several professional tools from automobile industry that can not do this !!!!

from Arduino:

  • Arduino base
  • wire
  • spi
  • SD

RP2040 Toolchain

https://github.com/maxgerhardt/platform-raspberrypi.git

form adafruit: Adafruit BusIO @ ^1.16.2

  • RTClib @ ^2.1.4
  • Adafruit NeoMatrix @ ^1.3.3

form bodmer:

  • TFT_eSPI @ ^2.5.43

from kitesurfer1404:

  • WS2812FX @ ^1.4.4 A beautiful and extensive library with many animations for intelligent RGB LEDs. Truly professional and exceptionally impressive work. Thank you so much for making something like this available!

bitbank2:

  • AnimatedGIF @ ^2.1.1 a real handy lib to handle GIF's thanks .. It would have cost me several monthes to do somthing that will be for sure not at this level ... Thanks

robtillaart:

  • CRC @ ^1.0.3

bblanchon:

  • ArduinoJson @ ^7.2.1

@all LIB authors .. great job, please keep up this good work


Installation

Prerequisites

  • SW:
  • install Visual Studio Code
  • in Visual Studio install PlatformIO extension
  • HW:
  • Install Kicad
  • Mechanic:
  • Install freeCad

Steps

  1. clone this project from GitHub (you can use Visual Studio Code interface or download it per WEB interface)
    bash
    git clone https://github.com/MonkeyCodeMen/ULC-Pico-C-Code.git

Configuration

ToDo


Unit Test

ToDo


License

The MIT License (MIT)

Copyright (c) 2024 MonkeyCodeMen@GitHub

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

have fun !!

Parts

117
QtyValueFootprintReferences
1710KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R25, R26, R27, R28, R29, R30, R31, R32, R35, R36, R38, R39, R56, R58 +1
13100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C4, C6, C8, C9, C11, C13, C15, C17, C19, C21, C26, C28
12100µFCapacitor_THT:CP_Radial_D8.0mm_P3.80mmC1, C3, C5, C7, C10, C12, C14, C16, C18, C20, C27, C29
111KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR9, R10, R15, R16, R17, R18, R19, R20, R21, R55, R57
1015AFuse:Fuseholder_Clip-5x20mm_Eaton_1A5601-01_Inline_P20.80x6.76mm_D1.70mm_HorizontalF1, F2, F3, F4, F5, F6, F7, F8, F9, F10
10IRLZ34NPackage_TO_SOT_THT:TO-220-3_VerticalQ4, Q5, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16
5MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4, H5
4100RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3, R4, R5, R6
3100Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR33, R53, R54
21N4001Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1, D10
2BSS138Package_TO_SOT_SMD:SOT-23Q1, Q2
2GND 3V3 SCL SDAConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ10, J12
2GND 5V 12VTerminalBlock_Dinkle:TerminalBlock_Dinkle_DT-55-B01X-03_P10.00mmJ8, J9
2GND 5V SDA SCL DS Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3, J15
174125Package_DIP:DIP-14_W7.62mm_LongPadsU3
1Arduino_Nano_EveryModule:Arduino_NanoA1
1Conn_01x03_MaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ24
1Conn_02x06_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ1
1GND SDA SCL 3V3Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ6
1I2S: L/R WS SCK SD 3V3 GND Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ17
1L/RConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ13
1MIC-AnalogConnector_JST:JST_EH_B3B-EH-A_1x03_P2.50mm_VerticalJ16
1PWM1: 12V R G BTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_HorizontalJ18
1PWM2: 12V R G BTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_HorizontalJ19
1PicoModules_User:RPi_Pico_SMD_TH_KopieU1
1RESETButton_Switch_THT:SW_PUSH_6mmSW1
1SD_card: GND MISO SCK MOSI CS_SD 3V3Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ4
1SW0: 12V GNDTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ22
1SW1: 12V GNDTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ23
1SW2: 12V GNDTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ20
1SW3: 12V GNDTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ21
1TFT: 3V3 GND CS RES DC MOSI SCK BL MISO SCK | TOUCH: CS MOSI MISO IRQ Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_VerticalJ7
1WS0: GND DO 5VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalWS_0
1WS1: GND DO 5VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalWS_1
1WS2: GND DO 5VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalWS_2
1WS3: GND DO 5VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalWS_3

Questions

How big is the Pico.Light controller PCB?

It measures 195 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pico.Light controller use?

117 parts, built around the IRLZ34N and BSS138. 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 Pico.Light controller KiCad files?

From the MonkeyCodeMen/ULC-Pico-C-Code repository on GitHub, at the commit this page was made from: the board is PCB/Pico.Light-controller/Pico.Light-controller.kicad_pcb and its schematic PCB/PI-keys/PI-keys.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pico.Light controller design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from MonkeyCodeMen/ULC-Pico-C-Code

1
  • 2 layers185 × 60 mmPI keys, the printed circuit board in 3D

    PI keys

    MonkeyCodeMen/ULC-Pico-C-Code

    ULC - Pico universal light controller with Rasperry Pico

    33 parts1MIT

Similar boards

  • 2 layers100 × 50 mmEspled, the printed circuit board in 3D

    Espled

    Yottabits/espled

    THE one and only esp8266 LED Controller

    52 parts6
  • 2 layers224.8 × 60.3 mmDeurnode nieuw, the printed circuit board in 3D

    Deurnode nieuw

    Hans-Beerman/Deurnode_ESP32-PoE

    KiCad design Deurnode for the MakerSpace Leiden, based on the Olimex ESP32-PoE

    38 parts4Apache-2.0
  • 2 layers111.3 × 68.1 mmMKS relay v4, the printed circuit board in 3D

    MKS relay v4

    3D-Printing-for-Microfluidics/3D_printer_control

    2nd generation 3D printer control software

    67 parts3GPL-3.0
  • 2 layersWatch cleaner pcb, the printed circuit board in 3D

    Watch cleaner pcb

    DavidJ-Saving-Time/watch-cleaner

    So this is a very rough draft of code designed to run on an esp32 to control a watch cleaning machine see this YouTube video https://youtu.be/Opr75n8DbYY I'll be adding to this and making it easier for people to use.

    16 parts3MIT
  • 2 layers31.8 × 114.8 mm3DWelderPCB, the printed circuit board in 3D

    3DWelderPCB

    destroyer796/3DWelder

    An overbuilt 3D pen that will use a chc pro hotend and custom dc extruder powered by a power tool battery

    17 parts3MIT
  • 2 layers83.8 × 50.8 mmShunt charge controller, the printed circuit board in 3D

    Shunt charge controller

    grillbaer/solar-power-supply

    Solar power harvesting for micro controller projects with li-Ion battery and highly efficient charge controller

    16 parts3MIT
  • 2 layers80 × 45 mmWifiOiler01, the printed circuit board in 3D

    WifiOiler01

    volw/wifiOiler

    Automatic, distance depending chain oiler for motorbikes with track recording (GPS).

    15 parts3GPL-3.0
  • 2 layers80 × 20 mmSpider dropper, the printed circuit board in 3D

    Spider dropper

    aidtopia/spider_dropper

    Mechanism to "drop" a spider (or other lightweight prop) for Halloween fun

    10 parts2