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
Created by
tobi the wife lover 🚀
Tier 3
7 views
0 followers
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 🚀
submitted skibidi album clicker for ship review ago
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 |

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 🚀
submitted skibidi album clicker for ship review ago
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 🚀
submitted skibidi album clicker for ship review ago
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 |

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 🚀
submitted skibidi album clicker for ship review ago
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 TFTHEIGHT 240
JPEGDEC jpeg;
void tftwritecommand(uint8t cmd)
{
gpioput(TFTPINDC, 0);
gpioput(TFTPINCS, 0);
spiwriteblocking(TFTSPIPORT, &cmd, 1);
gpioput(TFTPINCS, 1);
}
void tftwritedata(uint8t *data, sizet len)
{
gpioput(TFTPINDC, 1);
gpioput(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)};
uint8t 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()
{
spiinit(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);
}
}
}

zsharpminor
requested changes for skibidi album clicker ago
You're getting there!! Only a few more things left:
- please include the code you will be using (even if preliminary), if any.
- please include your gerbers and drills in one big zip file
- please include an image of the actual kicad/easyeda schematic in your readme.
- 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 🚀
submitted skibidi album clicker for ship review ago
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 🚀
submitted skibidi album clicker for ship review ago
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
............................................
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

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

........................
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

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
,,,,,,,,,,,,,,,,,
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
,,,,,,,,,,,,,,,,,
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

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

........................
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

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
............................................
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 TFTHEIGHT 240
JPEGDEC jpeg;
void tftwritecommand(uint8t cmd)
{
gpioput(TFTPINDC, 0);
gpioput(TFTPINCS, 0);
spiwriteblocking(TFTSPIPORT, &cmd, 1);
gpioput(TFTPINCS, 1);
}
void tftwritedata(uint8t *data, sizet len)
{
gpioput(TFTPINDC, 1);
gpioput(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)};
uint8t 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()
{
spiinit(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);
}
}
}

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 |

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 |
