Blueprint

ModuPad

A 3x3 programmable external numpad (Macropad: named as ModuPad) with layered functionality, encoder-driven mode switching, and an event-driven OLED user interface.

Created by lasipK lasipK

Hackpad

22 views

0 followers

lasipK lasipK submitted ModuPad for review ago

1Mon 1Mon requested changes for ModuPad ago

really nice work on the hackpad! currently your demo video is down/deleted so please reupload it! check out https://blueprint.hackclub.com/about/submission-guidelines to make sure your project is ready to go!

Tier: 4

lasipK lasipK submitted ModuPad for review ago

lasipK lasipK added to the journal ago

Display Testing

9 Feb 2026 | 11:00 PM – 11:20 PM

With an exhausted mind, I shifted my focus again — this time to the OLED screen.

I didn’t even know if it worked. Was there an electrical issue? A wiring mistake? Something else I overlooked?

It was confusing and frustrating. I felt like I wasn’t making progress.

Then I remembered that I had previously seen other HackPads in Hack Club repositories. I went back and searched through those projects. I found example code related to OLED displays and modified it to match my project.

It still didn’t work.

I used ChatGPT to debug the error, and I discovered the actual problem: I didn’t have the required libraries inside my CircuitPython lib folder.

After adding the correct libraries, the OLED finally worked.

It was extremely satisfying to see text displayed on the screen for the first time.

I experimented a bit more with the code and managed to display some cool custom text.

That moment felt like real progress.


Screenshot (510)


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


lasipK lasipK added to the journal ago

Key Testing

9 Feb 2026

After the previous day’s failures, I shifted my focus to testing the key switches since the encoder functionality was still not behaving as intended.

After a lot of struggle, I finally managed to make one key respond as an input device — just like a normal keyboard key. I had to experiment with pin assignments to figure out the correct configuration, but I eventually got it working.

Then I managed to get three keys in a column working simultaneously.

My encoder button was part of the matrix, so I got that working too.

However, no matter what I tried, only four keys were functioning. The rest were completely unresponsive. I couldn’t figure out why.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


Screenshot 2026-02-23 235302


lasipK lasipK added to the journal ago

CASE Dlivered

ModuPad – CASE


Images

Image 1 Image 2 Image 3
IMG_20260208_181629_Censored IMG_20260208_181551 IMG_20260208_181614_Censored

My pad case was delivered on 8th Feb. The print quality was top-notch. I even complimented the person who printed it — the craftsmanship was impressive.

But there was bad news.

There were measurement errors and branding alignment issues. The encoder and display cutouts were slightly off relative to the PCB. The key switches and MCU placements were accurate, but the encoder and display alignment were wrong.

My father and I analyzed the issue and concluded that we needed to manually cut part of the upper plate to allow the encoder and display to fit correctly. The bottom case had no issues — the PCB fit perfectly there.

We also realized something critical: we had to desolder the key switches. The correct assembly order required placing the upper plate first and then soldering the switches through it.

So we unsoldered the switches, modified (cut) the upper plate to properly align with the PCB, then reassembled everything and tightened the screws.

Honestly, it looked great after the modification. Really satisfying to see it come together.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


lasipK lasipK added to the journal ago

KMK to QMK

8 Feb 2026

I continued testing the encoder to confirm everything was stable. After that, I moved on to implementing its intended function — controlling Windows volume.

I tried very hard but was unsuccessful.

After multiple failures, I shifted my focus to QMK-based firmware. Again, I faced difficulties. It was written in C, and everything felt very complicated. The reason I originally chose KMK over QMK was exactly this — QMK is very advanced and powerful, probably best suited for my ModuPad, but KMK is Python-based and easier to understand.

One big advantage of KMK was flashing. First, I installed CircuitPython onto the MCU. After that, the board appeared as a USB drive (CIRCUITPY / Seeed-XIAO-RP2040). Making changes was simple — I only had to modify code.py directly on the drive.

Despite that convenience, I struggled a lot with functionality. After many failed attempts, I quit for the day and went to sleep.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


The Image provided is of Compiling statusof my OMK based Firmware.

Ignore the mess around my Desk and LCD, its always like this!

733baa89-5d99-4c6c-8100-c8d66cede92e


m0.hid m0.hid requested changes for ModuPad ago

Hey! Great work on this hackpad but can you rewrite the journal and readme youself and not using AI please? Your demo video should also show you using your hackpad so please update this as well!

Tier: 4

lasipK lasipK submitted ModuPad for review ago

lasipK lasipK added to the journal ago

Firmware

Re-Writing Firmware

7 Feb 2026

After discovering that the firmware was not working for my Seeed XIAO RP2040, I had to dig deep into KMK firmware writing. I decided to create a simple test program to verify whether my pad was functioning properly — checking for wiring errors and confirming that everything was working as planned.

I managed to test my encoder by reading TRUE/FALSE signals that changed based on its rotation direction. That made it clear that the encoder hardware was working fine and should perform correctly in KMK.

No hardware issues.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


Screenshot 2026-02-23 231241


lasipK lasipK added to the journal ago

Soldring Compoments!!!!

Components!

Receiving the components was a great experience — completely different from the PCB situation. They delivered everything right to my doorstep, which made it even better. I was genuinely excited. I wanted to solder them immediately.

When I opened the package, I was impressed. All the parts were very small, but very satisfying to look at and place on the PCB. Aligning them felt precise and accurate — they fit perfectly.


Parcel received: 5th Feb | 3:00 PM

After receiving it, I carefully examined all the parts. I checked everything thoroughly. I was tempted to start soldering right away, but I stopped myself because I needed to prepare properly before soldering onto the board.

At 11:00 PM, I finally started the soldering process.

Before soldering, I inspected everything again. Since I was about to solder all the components, I didn’t want to make a mistake. I first checked their placement on the PCB and only then began soldering.

I started with the MCU. It was very difficult. It was my first time soldering something that small, and the MCU pins were tiny. It was frustrating and honestly made me want to quit.

After struggling for quite a while, I managed to solder a single pin along with the header. The solder joint wasn’t perfect, but it was enough to keep the MCU from falling off.

Then I moved to the display — same situation. Then the key switches — same again. Then the encoder — again, same story. The solder joints were messy and not clean. Nothing looked professional.

By 1:00 AM, I was extremely frustrated and exhausted. I stopped soldering and went to sleep.


The next morning, my father checked my work. He knows how to solder, and he immediately told me my soldering wasn’t good enough. He then helped me redo everything properly and cleanly.

Getting help from him was a great experience. I learned a lot just by watching and assisting. Honestly, I don’t even want to imagine what would have happened if he didn’t know how to solder. My first-ever electronics project might have completely failed.

After we finished fixing the soldering, I moved on to firmware flashing.

That part didn’t go as smoothly as I expected either. The firmware contained many errors. Still, I managed to test the components and confirm that they were functioning.


Timeline:

Started: 6 Feb 2026 | 2:30 PM
Ended: 6 Feb 2026 | 5:00 PM
Journal Entry Written: 10 Feb 2026 | 11:30 PM

Reason for the late journal entry: I was so focused on fixing the firmware that I forgot to continue writing. That’s on me — laziness and poor time management.


IMG_20260205_153720 (1)

lasipK lasipK added to the journal ago

PCB

PCB Recived.

After paying the tax and duties, my PCB was finally released by the International Mail Office (IMO). The package had been held, and I was questioned about the electronics. They created a ticket for the items, and the visit itself was rough and exhausting.

Despite that, I successfully collected the PCBs — and I’m extremely satisfied with them. The manufacturing quality is top-notch. Since the components have not yet arrived, I tested the key placement using one of my own keyboard switches. The alignment turned out very good. I’m genuinely impressed with the result.

Now I’m waiting for the remaining components. Once they arrive, I’ll begin soldering and continue refining the firmware. It still lacks some features and requires core improvements, so that will be my next focus.


The reason for the delayed journal entry — although the PCB arrived on 3rd February and I’m writing this on 9th February — is that I was exhausted after the IMO visit.

On 4th February, I got distracted tracking my components. I was concerned that I might receive another notice to visit the IMO and pay additional tax. While analyzing the tracking updates, I discovered that the components had already cleared customs and were on their way to my doorstep.

What happens next is written inthe next journal!!!


Parcel Recived: 03-Feb-2026 | 1-PM
Journal entry written: 09-Feb-2026 | 8-PM


Images

2da82686-2fa3-4be5-9c07-132f4ad8b50c acc4d039-34a6-4ce9-af2e-8dcf436e6874 bca0371b-0b56-4121-be27-8d3720b139bf

lasipK lasipK added to the journal ago

Parcels Status Updats

Soldering Iron

  • I ordered the soldering iron through my 18$ Grant on 5 January 2026.
  • It was delivered on 17 January 2026 and received by me on 19 January 2026.
  • Total time in transit was 14 days.

PCB & Components

  • The PCB order has been placed and is currently on its way.
  • I also received an email confirmation stating that all required pad components have been shipped.

3D-Printed Case

  • The 3D-printed case was delayed due to issues with the grant during the purchasing phase.
  • These issues are now resolved, and the print payment has been confirmed and completed.
  • The order is ready to proceed.

Status

  • The project is now clear of purchasing issues, and I am excited to complete it as soon as the remaining parts arrive.

Images

Image 1 Image 2 Image 3
IMG_20260119_162121_Censored IMG_20260119_162617 IMG_20260119_162605

1Mon 1Mon requested changes for ModuPad ago

please resubmit once your project is fully completed! also, please do not use AI in your journal!

Tier: 4

lasipK lasipK submitted ModuPad for review ago

1Mon 1Mon requested changes for ModuPad ago

nice hackpad! please upload a demo for your macropad, it should be on youtube or reddit or similar.

Tier: 4

lasipK lasipK submitted ModuPad for review ago

Iamalive Iamalive 🚀 approved ModuPad ago

Great hackpad!

lasipK lasipK submitted ModuPad for review ago

Shaurya Bisht Shaurya Bisht requested changes for ModuPad ago

please fix the ai generated readme. looks good otherwise

lasipK lasipK submitted ModuPad for review ago

lasipK lasipK started ModuPad ago

1/19/2026 - Parcels Status Updats

Soldering Iron

  • I ordered the soldering iron through my 18$ Grant on 5 January 2026.
  • It was delivered on 17 January 2026 and received by me on 19 January 2026.
  • Total time in transit was 14 days.

PCB & Components

  • The PCB order has been placed and is currently on its way.
  • I also received an email confirmation stating that all required pad components have been shipped.

3D-Printed Case

  • The 3D-printed case was delayed due to issues with the grant during the purchasing phase.
  • These issues are now resolved, and the print payment has been confirmed and completed.
  • The order is ready to proceed.

Status

  • The project is now clear of purchasing issues, and I am excited to complete it as soon as the remaining parts arrive.

Images

Image 1 Image 2 Image 3
IMG_20260119_162121_Censored IMG_20260119_162617 IMG_20260119_162605

2/9/2026 - PCB

PCB Recived.

After paying the tax and duties, my PCB was finally released by the International Mail Office (IMO). The package had been held, and I was questioned about the electronics. They created a ticket for the items, and the visit itself was rough and exhausting.

Despite that, I successfully collected the PCBs — and I’m extremely satisfied with them. The manufacturing quality is top-notch. Since the components have not yet arrived, I tested the key placement using one of my own keyboard switches. The alignment turned out very good. I’m genuinely impressed with the result.

Now I’m waiting for the remaining components. Once they arrive, I’ll begin soldering and continue refining the firmware. It still lacks some features and requires core improvements, so that will be my next focus.


The reason for the delayed journal entry — although the PCB arrived on 3rd February and I’m writing this on 9th February — is that I was exhausted after the IMO visit.

On 4th February, I got distracted tracking my components. I was concerned that I might receive another notice to visit the IMO and pay additional tax. While analyzing the tracking updates, I discovered that the components had already cleared customs and were on their way to my doorstep.

What happens next is written inthe next journal!!!


Parcel Recived: 03-Feb-2026 | 1-PM
Journal entry written: 09-Feb-2026 | 8-PM


Images

2da82686-2fa3-4be5-9c07-132f4ad8b50c acc4d039-34a6-4ce9-af2e-8dcf436e6874 bca0371b-0b56-4121-be27-8d3720b139bf

2/10/2026 10 AM - Soldring Compoments!!!!

Components!

Receiving the components was a great experience — completely different from the PCB situation. They delivered everything right to my doorstep, which made it even better. I was genuinely excited. I wanted to solder them immediately.

When I opened the package, I was impressed. All the parts were very small, but very satisfying to look at and place on the PCB. Aligning them felt precise and accurate — they fit perfectly.


Parcel received: 5th Feb | 3:00 PM

After receiving it, I carefully examined all the parts. I checked everything thoroughly. I was tempted to start soldering right away, but I stopped myself because I needed to prepare properly before soldering onto the board.

At 11:00 PM, I finally started the soldering process.

Before soldering, I inspected everything again. Since I was about to solder all the components, I didn’t want to make a mistake. I first checked their placement on the PCB and only then began soldering.

I started with the MCU. It was very difficult. It was my first time soldering something that small, and the MCU pins were tiny. It was frustrating and honestly made me want to quit.

After struggling for quite a while, I managed to solder a single pin along with the header. The solder joint wasn’t perfect, but it was enough to keep the MCU from falling off.

Then I moved to the display — same situation. Then the key switches — same again. Then the encoder — again, same story. The solder joints were messy and not clean. Nothing looked professional.

By 1:00 AM, I was extremely frustrated and exhausted. I stopped soldering and went to sleep.


The next morning, my father checked my work. He knows how to solder, and he immediately told me my soldering wasn’t good enough. He then helped me redo everything properly and cleanly.

Getting help from him was a great experience. I learned a lot just by watching and assisting. Honestly, I don’t even want to imagine what would have happened if he didn’t know how to solder. My first-ever electronics project might have completely failed.

After we finished fixing the soldering, I moved on to firmware flashing.

That part didn’t go as smoothly as I expected either. The firmware contained many errors. Still, I managed to test the components and confirm that they were functioning.


Timeline:

Started: 6 Feb 2026 | 2:30 PM
Ended: 6 Feb 2026 | 5:00 PM
Journal Entry Written: 10 Feb 2026 | 11:30 PM

Reason for the late journal entry: I was so focused on fixing the firmware that I forgot to continue writing. That’s on me — laziness and poor time management.


IMG_20260205_153720 (1)

2/10/2026 11 AM - Firmware

Re-Writing Firmware

7 Feb 2026

After discovering that the firmware was not working for my Seeed XIAO RP2040, I had to dig deep into KMK firmware writing. I decided to create a simple test program to verify whether my pad was functioning properly — checking for wiring errors and confirming that everything was working as planned.

I managed to test my encoder by reading TRUE/FALSE signals that changed based on its rotation direction. That made it clear that the encoder hardware was working fine and should perform correctly in KMK.

No hardware issues.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


Screenshot 2026-02-23 231241


2/23/2026 10:22 AM - KMK to QMK

8 Feb 2026

I continued testing the encoder to confirm everything was stable. After that, I moved on to implementing its intended function — controlling Windows volume.

I tried very hard but was unsuccessful.

After multiple failures, I shifted my focus to QMK-based firmware. Again, I faced difficulties. It was written in C, and everything felt very complicated. The reason I originally chose KMK over QMK was exactly this — QMK is very advanced and powerful, probably best suited for my ModuPad, but KMK is Python-based and easier to understand.

One big advantage of KMK was flashing. First, I installed CircuitPython onto the MCU. After that, the board appeared as a USB drive (CIRCUITPY / Seeed-XIAO-RP2040). Making changes was simple — I only had to modify code.py directly on the drive.

Despite that convenience, I struggled a lot with functionality. After many failed attempts, I quit for the day and went to sleep.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


The Image provided is of Compiling statusof my OMK based Firmware.

Ignore the mess around my Desk and LCD, its always like this!

733baa89-5d99-4c6c-8100-c8d66cede92e


2/23/2026 10:44 AM - CASE Dlivered

ModuPad – CASE


Images

Image 1 Image 2 Image 3
IMG_20260208_181629_Censored IMG_20260208_181551 IMG_20260208_181614_Censored

My pad case was delivered on 8th Feb. The print quality was top-notch. I even complimented the person who printed it — the craftsmanship was impressive.

But there was bad news.

There were measurement errors and branding alignment issues. The encoder and display cutouts were slightly off relative to the PCB. The key switches and MCU placements were accurate, but the encoder and display alignment were wrong.

My father and I analyzed the issue and concluded that we needed to manually cut part of the upper plate to allow the encoder and display to fit correctly. The bottom case had no issues — the PCB fit perfectly there.

We also realized something critical: we had to desolder the key switches. The correct assembly order required placing the upper plate first and then soldering the switches through it.

So we unsoldered the switches, modified (cut) the upper plate to properly align with the PCB, then reassembled everything and tightened the screws.

Honestly, it looked great after the modification. Really satisfying to see it come together.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


2/23/2026 10:55 AM - Key Testing

9 Feb 2026

After the previous day’s failures, I shifted my focus to testing the key switches since the encoder functionality was still not behaving as intended.

After a lot of struggle, I finally managed to make one key respond as an input device — just like a normal keyboard key. I had to experiment with pin assignments to figure out the correct configuration, but I eventually got it working.

Then I managed to get three keys in a column working simultaneously.

My encoder button was part of the matrix, so I got that working too.

However, no matter what I tried, only four keys were functioning. The rest were completely unresponsive. I couldn’t figure out why.


Journal Entry Written: 11 Feb 2026 | 12:50 - AM


Screenshot 2026-02-23 235302


2/23/2026 10:58 AM - Display Testing

9 Feb 2026 | 11:00 PM – 11:20 PM

With an exhausted mind, I shifted my focus again — this time to the OLED screen.

I didn’t even know if it worked. Was there an electrical issue? A wiring mistake? Something else I overlooked?

It was confusing and frustrating. I felt like I wasn’t making progress.

Then I remembered that I had previously seen other HackPads in Hack Club repositories. I went back and searched through those projects. I found example code related to OLED displays and modified it to match my project.

It still didn’t work.

I used ChatGPT to debug the error, and I discovered the actual problem: I didn’t have the required libraries inside my CircuitPython lib folder.

After adding the correct libraries, the OLED finally worked.

It was extremely satisfying to see text displayed on the screen for the first time.

I experimented a bit more with the code and managed to display some cool custom text.

That moment felt like real progress.


Screenshot (510)


Journal Entry Written: 11 Feb 2026 | 12:50 - AM