Blueprint

skibidi album clicker

alllllll iiiiii wanttttt forr christmassssssssssss, is a tiny 3d printed with some pcb to display photos of the year 🤑🤑🤑🤑🤑🤑🤑🤑🤑 note for reviewers: prices are in canadian dollars except jlcpcb

7 views

0 followers

Iamalive Iamalive 🚀 requested changes for skibidi album clicker ago

Hey, great project idea but I'm a little confused - from your digikey screenshots you're buying 5 of two different rotary encoders? Does this mean you're buying 10 for $14? If so, make sure to reduce the price by lowering the quantity - at most you'll need one or two spares just in case. Also why are you buying two different oled screens? From your alibaba cart screenshot you highlight that you're getting two, it it needed? Finally, make sure to update your repo by adding a wiring diagram along with a combined cad model, since I'm pretty you have one to be a case for the pcb. Thanks!

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

Updated BOM and added gerber

New BOM:

Description Quantity Part # Unit Price Extended Price USD
20V 5A [email protected],2.4A 1.31W 1V 1 10 FDN304P 0.099 0.99
IC BATT CNTL LI-ION 1CEL SOT23-5 5 MCP73832T-2ACI/OT 0.76 3.80
20V 3.77A 750MW [email protected],5A 850 10 SI2312A 0.109 1.09
RES 2K OHM 1% 1/16W 0402 25 RMCF0402FT2K00 0.0048 0.12
RES 100K OHM 1% 1/16W 0402 50 RC0402FR-07100KL 0.0032 0.16
RES 470 OHM 1% 1/16W 0402 50 RC0402FR-07470RL 0.003 0.15
ENCODER INCRE QUAD HORIZN PC PIN 5 PEC12R-4217F-S0024 1.478 7.39
ENCODER INCRE QUAD HORIZN PC PIN 5 PEC12R-4220F-S0024 1.478 7.39
XIAO RP2040 1 102010428 4.68 4.68
LED AMBER CLEAR 0603 SMD 10 150060AS75000 0.15 1.50
60V 115MA 7.5@10V,500MA 225MW N 10 2N7002 0.054 0.54
DIODE SCHOTTKY 20V 1A SOD123 10 MBRX120LF-TP 0.236 2.36
CAP CER 4.7UF 10V X5R 0603 50 CL10A475KP8NNNC 0.006 0.30
Digikey 1 Shipping 20 20.00
Neopixel 5 SK6812MINI-E
PCB 1 JLCPCB PCB 4.7 4.70
Aliexpress LCDs 17 17.00
Total 72.17

image

Tanuki Tanuki ⚡🚀 requested changes for skibidi album clicker ago

Nice project toby! Just try to find some cheaper rotary encoders, because $12 each is kinda absurd. Try and get both rotary encoders to $10 total. Chuck your gerbers in there too while you're at it! Maybe try LCSC?

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

Iamalive Iamalive 🚀 requested changes for skibidi album clicker ago

As it currently stands, your project is only at most a tier 4 project! Why do you need to get enough parts for 5 boards? 2-3 should be fine, no?

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

update readme

added bom to readme

Qty Value
4 4.7u
1 LED
1 D_Schottky
1 SPI LCD
8 MountingHole
1 Conn01x02Socket
1 SolderJumper2Bridged
1 SolderJumper2Open
1 SK6812MINI-E
1 QPMOSGSD
1 QNMOSGSD
2 2k
3 100k
1 RotaryEncoder_Switch
1 XIAO-RP2040-DIP
1 MCP73831-2-OT
Digikey cart: $46.00
JLCPCB: $4.70
Aliexpress: $17.00
Total: $67.70

image

Iamalive Iamalive 🚀 requested changes for skibidi album clicker ago

Please fix your readme. It should follow the instructions on https://blueprint.hackclub.com/about/submission-guidelines

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

added test firmware

#include
#include "pico/stdlib.h"
#include "hardware/spi.h"
#include "hardware/dma.h"
#include "JPEGDEC.h"
#include "image_data.h"

#define TFTSPIPORT spi0
#define TFTPINSCK 2
#define TFTPINMOSI 3
#define TFTPINCS 1
#define TFTPINDC 0
#define TFTPINRST 26
#define TFTPINBL 27

#define TFTWIDTH 240
#define TFT
HEIGHT 240

JPEGDEC jpeg;

void tftwritecommand(uint8t cmd)
{
gpio
put(TFTPINDC, 0);
gpioput(TFTPINCS, 0);
spi
writeblocking(TFTSPIPORT, &cmd, 1);
gpio
put(TFTPINCS, 1);
}

void tftwritedata(uint8t *data, sizet len)
{
gpioput(TFTPINDC, 1);
gpio
put(TFTPINCS, 0);
spiwriteblocking(TFTSPIPORT, data, len);
gpioput(TFTPIN_CS, 1);
}

void tftsetwindow(uint16t x, uint16t y, uint16t w, uint16t h)
{
uint8t caset[] = {0, (uint8t)x, 0, (uint8t)(x + w - 1)};
uint8
t raset[] = {0, (uint8t)y, 0, (uint8t)(y + h - 1)};

tft_write_command(0x2A);
tft_write_data(caset, 4);
tft_write_command(0x2B);
tft_write_data(raset, 4);
tft_write_command(0x2C);

}

void tftinit()
{
spi
init(TFTSPIPORT, 62500000);
gpiosetfunction(TFTPINSCK, GPIOFUNCSPI);
gpiosetfunction(TFTPINMOSI, GPIOFUNCSPI);

gpio_init(TFT_PIN_CS);
gpio_set_dir(TFT_PIN_CS, GPIO_OUT);
gpio_put(TFT_PIN_CS, 1);
gpio_init(TFT_PIN_DC);
gpio_set_dir(TFT_PIN_DC, GPIO_OUT);
gpio_put(TFT_PIN_DC, 1);

if (TFT_PIN_RST != -1)
{
    gpio_init(TFT_PIN_RST);
    gpio_set_dir(TFT_PIN_RST, GPIO_OUT);
    gpio_put(TFT_PIN_RST, 1);
    sleep_ms(100);
    gpio_put(TFT_PIN_RST, 0);
    sleep_ms(100);
    gpio_put(TFT_PIN_RST, 1);
    sleep_ms(200);
}

if (TFT_PIN_BL != -1)
{
    gpio_init(TFT_PIN_BL);
    gpio_set_dir(TFT_PIN_BL, GPIO_OUT);
    gpio_put(TFT_PIN_BL, 1);
}

tft_write_command(0x11);
sleep_ms(120);
tft_write_command(0x3A);
uint8_t color[] = {0x55};
tft_write_data(color, 1);
tft_write_command(0x36);
uint8_t rot[] = {0x00};
tft_write_data(rot, 1);
tft_write_command(0x21);
tft_write_command(0x29);

}

int drawMCU(JPEGDRAW *pDraw)
{

tft_set_window(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);

gpio_put(TFT_PIN_DC, 1);
gpio_put(TFT_PIN_CS, 0);

spi_write_blocking(TFT_SPI_PORT, (uint8_t *)pDraw->pPixels, pDraw->iWidth * pDraw->iHeight * 2);

gpio_put(TFT_PIN_CS, 1);
return 1;

}

int main()
{
stdioinitall();

gpio_init(0);
gpio_set_dir(0, GPIO_OUT);
gpio_put(0, 1);

tft_init();

tft_set_window(0, 0, TFT_WIDTH, TFT_HEIGHT);

while (true)
{

    for (int i = 0; i < total_images; i++)
    {

        if (jpeg.openFLASH((uint8_t *)image_list[i], image_sizes[i], drawMCU))
        {

            jpeg.setPixelType(RGB565_BIG_ENDIAN);
            jpeg.decode(0, 0, 0);
            jpeg.close();
        }

        sleep_ms(3000);
    }
}

}

image

zsharpminor zsharpminor requested changes for skibidi album clicker ago

You're getting there!! Only a few more things left:

  1. please include the code you will be using (even if preliminary), if any.
  2. please include your gerbers and drills in one big zip file
  3. please include an image of the actual kicad/easyeda schematic in your readme.
  4. just expand on your readme a tad, maybe include a description of what it does or why you made it!!

otherwise great project!

example project of mine (simpler but this is how i like to organize things): https://github.com/newtontriumphant/zsharpminor-smartbell-v1-FINAL

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

zsharpminor zsharpminor requested changes for skibidi album clicker ago

we need a BOM stating which materials you're using for what and at what cost, as well as multiple angles of your assembled pcb, and your schematic and pcb images! nice idea, though!

tobi the wife lover tobi the wife lover 🚀 submitted skibidi album clicker for ship review ago

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

re routed the pcb

rerouted the pcb with the mosfet power control system, added a neopixel if need status, and improved holes

image............................................

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

finished routing the pcb

pcb routing done yay!!!! had to do 2 trial of this, second design is much more organized and neat than the first design. first design was too small too lol

image

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

added several more devices to the schematic

added lcd footprint, added rotary encoder with switch to schematic, wired up rotary encoder and rewired lcd without cs pin. :3

image
........................

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

added lcd to schematic

added lcd to schematic and connected to xiao. link to lcd: https://www.aliexpress.com/item/1005006824077787.html

image

tobi the wife lover tobi the wife lover 🚀 added to the journal ago

routed the schematic basic, has most parts figured out

pretty cool, now i just need to route the rest of the schematic...

time to route the power mosfets, and the encoder and encoder switch

found good documentation for the lcd: https://www.waveshare.com/wiki/1.9inch_LCD_Module#IDE_Installation

image,,,,,,,,,,,,,,,,,

tobi the wife lover tobi the wife lover 🚀 started skibidi album clicker ago

11/21/2025 1:34 AM - routed the schematic basic, has most parts figured out

pretty cool, now i just need to route the rest of the schematic...

time to route the power mosfets, and the encoder and encoder switch

found good documentation for the lcd: https://www.waveshare.com/wiki/1.9inch_LCD_Module#IDE_Installation

image,,,,,,,,,,,,,,,,,

11/21/2025 1:58 AM - added lcd to schematic

added lcd to schematic and connected to xiao. link to lcd: https://www.aliexpress.com/item/1005006824077787.html

image

11/21/2025 11 PM - added several more devices to the schematic

added lcd footprint, added rotary encoder with switch to schematic, wired up rotary encoder and rewired lcd without cs pin. :3

image
........................

11/22/2025 - finished routing the pcb

pcb routing done yay!!!! had to do 2 trial of this, second design is much more organized and neat than the first design. first design was too small too lol

image

12/6/2025 - re routed the pcb

rerouted the pcb with the mosfet power control system, added a neopixel if need status, and improved holes

image............................................

12/7/2025 - added test firmware

#include
#include "pico/stdlib.h"
#include "hardware/spi.h"
#include "hardware/dma.h"
#include "JPEGDEC.h"
#include "image_data.h"

#define TFTSPIPORT spi0
#define TFTPINSCK 2
#define TFTPINMOSI 3
#define TFTPINCS 1
#define TFTPINDC 0
#define TFTPINRST 26
#define TFTPINBL 27

#define TFTWIDTH 240
#define TFT
HEIGHT 240

JPEGDEC jpeg;

void tftwritecommand(uint8t cmd)
{
gpio
put(TFTPINDC, 0);
gpioput(TFTPINCS, 0);
spi
writeblocking(TFTSPIPORT, &cmd, 1);
gpio
put(TFTPINCS, 1);
}

void tftwritedata(uint8t *data, sizet len)
{
gpioput(TFTPINDC, 1);
gpio
put(TFTPINCS, 0);
spiwriteblocking(TFTSPIPORT, data, len);
gpioput(TFTPIN_CS, 1);
}

void tftsetwindow(uint16t x, uint16t y, uint16t w, uint16t h)
{
uint8t caset[] = {0, (uint8t)x, 0, (uint8t)(x + w - 1)};
uint8
t raset[] = {0, (uint8t)y, 0, (uint8t)(y + h - 1)};

tft_write_command(0x2A);
tft_write_data(caset, 4);
tft_write_command(0x2B);
tft_write_data(raset, 4);
tft_write_command(0x2C);

}

void tftinit()
{
spi
init(TFTSPIPORT, 62500000);
gpiosetfunction(TFTPINSCK, GPIOFUNCSPI);
gpiosetfunction(TFTPINMOSI, GPIOFUNCSPI);

gpio_init(TFT_PIN_CS);
gpio_set_dir(TFT_PIN_CS, GPIO_OUT);
gpio_put(TFT_PIN_CS, 1);
gpio_init(TFT_PIN_DC);
gpio_set_dir(TFT_PIN_DC, GPIO_OUT);
gpio_put(TFT_PIN_DC, 1);

if (TFT_PIN_RST != -1)
{
    gpio_init(TFT_PIN_RST);
    gpio_set_dir(TFT_PIN_RST, GPIO_OUT);
    gpio_put(TFT_PIN_RST, 1);
    sleep_ms(100);
    gpio_put(TFT_PIN_RST, 0);
    sleep_ms(100);
    gpio_put(TFT_PIN_RST, 1);
    sleep_ms(200);
}

if (TFT_PIN_BL != -1)
{
    gpio_init(TFT_PIN_BL);
    gpio_set_dir(TFT_PIN_BL, GPIO_OUT);
    gpio_put(TFT_PIN_BL, 1);
}

tft_write_command(0x11);
sleep_ms(120);
tft_write_command(0x3A);
uint8_t color[] = {0x55};
tft_write_data(color, 1);
tft_write_command(0x36);
uint8_t rot[] = {0x00};
tft_write_data(rot, 1);
tft_write_command(0x21);
tft_write_command(0x29);

}

int drawMCU(JPEGDRAW *pDraw)
{

tft_set_window(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);

gpio_put(TFT_PIN_DC, 1);
gpio_put(TFT_PIN_CS, 0);

spi_write_blocking(TFT_SPI_PORT, (uint8_t *)pDraw->pPixels, pDraw->iWidth * pDraw->iHeight * 2);

gpio_put(TFT_PIN_CS, 1);
return 1;

}

int main()
{
stdioinitall();

gpio_init(0);
gpio_set_dir(0, GPIO_OUT);
gpio_put(0, 1);

tft_init();

tft_set_window(0, 0, TFT_WIDTH, TFT_HEIGHT);

while (true)
{

    for (int i = 0; i < total_images; i++)
    {

        if (jpeg.openFLASH((uint8_t *)image_list[i], image_sizes[i], drawMCU))
        {

            jpeg.setPixelType(RGB565_BIG_ENDIAN);
            jpeg.decode(0, 0, 0);
            jpeg.close();
        }

        sleep_ms(3000);
    }
}

}

image

12/25/2025 - update readme

added bom to readme

Qty Value
4 4.7u
1 LED
1 D_Schottky
1 SPI LCD
8 MountingHole
1 Conn01x02Socket
1 SolderJumper2Bridged
1 SolderJumper2Open
1 SK6812MINI-E
1 QPMOSGSD
1 QNMOSGSD
2 2k
3 100k
1 RotaryEncoder_Switch
1 XIAO-RP2040-DIP
1 MCP73831-2-OT
Digikey cart: $46.00
JLCPCB: $4.70
Aliexpress: $17.00
Total: $67.70

image

1/18/2026 - Updated BOM and added gerber

New BOM:

Description Quantity Part # Unit Price Extended Price USD
20V 5A [email protected],2.4A 1.31W 1V 1 10 FDN304P 0.099 0.99
IC BATT CNTL LI-ION 1CEL SOT23-5 5 MCP73832T-2ACI/OT 0.76 3.80
20V 3.77A 750MW [email protected],5A 850 10 SI2312A 0.109 1.09
RES 2K OHM 1% 1/16W 0402 25 RMCF0402FT2K00 0.0048 0.12
RES 100K OHM 1% 1/16W 0402 50 RC0402FR-07100KL 0.0032 0.16
RES 470 OHM 1% 1/16W 0402 50 RC0402FR-07470RL 0.003 0.15
ENCODER INCRE QUAD HORIZN PC PIN 5 PEC12R-4217F-S0024 1.478 7.39
ENCODER INCRE QUAD HORIZN PC PIN 5 PEC12R-4220F-S0024 1.478 7.39
XIAO RP2040 1 102010428 4.68 4.68
LED AMBER CLEAR 0603 SMD 10 150060AS75000 0.15 1.50
60V 115MA 7.5@10V,500MA 225MW N 10 2N7002 0.054 0.54
DIODE SCHOTTKY 20V 1A SOD123 10 MBRX120LF-TP 0.236 2.36
CAP CER 4.7UF 10V X5R 0603 50 CL10A475KP8NNNC 0.006 0.30
Digikey 1 Shipping 20 20.00
Neopixel 5 SK6812MINI-E
PCB 1 JLCPCB PCB 4.7 4.70
Aliexpress LCDs 17 17.00
Total 72.17

image