You are browsing as a guest. Sign up (or log in) to start making projects!

Macro Microcontroller 2

Hardware
  • 13 Devlogs
  • 28 Total hours

An RP2040 microcontroller development board with an integrated macropad that lets you control GPIOs with keyboard keys on a single PCB, plus a custom BASIC interpreter and disk operating system.

Ship #2

This ship focuses more on the firmware and documentation of my project! For this ship, I made a PC-like system for my microcontroller, including a DOS-like firmware which boots from a BIOS I written myself. The effect of the BIOS made my device look really like an actual usable computer from the 80’s and the DOS allows it to be used as a PC! After this, I would try to implement a filesystem, so that it can actually be used to store files, as it has 15 MB of extra flash!

Here is the DOS demo video: https://nicholas1023.github.io/macro-microcontroller-2/assets/dos-demo.mp4

  • 5 devlogs
  • 8h build
  • 5.00x multiplier
  • 41 Stardust
Video of Project → See source code →
Open comments for this post

38m 12s logged

Added new guide and modified the directory of the documentation site!

In this devlog, I added a new page for the DOS setup and usage guide!

As the pages in my documentation site are getting more and more, I decided to create a folder, and move the guides in, so the navbar would be less cluttered.

One problem I faced though was the CSS and icons not loading in the guide, as the directories were getting a little complicated, given that I am using the /docs directory in my repo for the site, which makes URLs without the full path returning 404. After a few commits (localhost was not using /docs as the root of the site), I finally found the right URL!

0
0
54
Open comments for this post

30m 23s logged

Organised the repo, README and docs!

In this devlog, I updated the README.md contents as it was a little outdated due to the new firmware revision.

I also just realised I didn’t link the datasheet for my board in the README, so that is also one of the changes I made.

Additionally, I created a 404 page for my docs, and I will be making my second ship soon!

0
0
36
Open comments for this post

2h 25m 38s logged

New Commands for DOS!

In this devlog, I added new commands for my OS:

  • CALCULATE: Performs basic operations on 2 numbers. Usage: CALCULATE [Number] [+ - * / ^ root] [Number]
  • GPIO: Turns on a specified GPIO for 1 second. Usage: GPIO [LED# IO# BELL MOTOR]
  • VERSION: Shows the release version.
  • REBOOT: Reboots the system. Usage: REBOOT -m [BASIC BOOTSEL]*
  • INFO: Displays device and memory information.
  • UPTIME: Shows device uptime.

I took quite a while to find out how to make the CALCULATE command work. Initially, 1/3 was returning 0. Turns out the problem was due to me using integers instead of doubles!

Here’s a demo video of the OS!

0
0
15
Open comments for this post

30m 21s logged

Some updates to the documentation site!

Since I added a new firmware, I have to update the downloads section of my site! It took me quite a while to organise my repo a little bit, as the firmware files were getting a little messier and releases getting more complicated as I have 2 firmware now!

Next, I’ll be working on the DOS, adding more commands to the system!

0
0
27
Open comments for this post

4h 6m 46s logged

New firmware update!

Previously, I was asking myself: How can I make my device look more like an old PC?

When I was turning on an old desktop I have at home, I saw the BIOS screen due to CMOS errors, and this was where I got an inspiration for a new firmware update.

In this devlog, I redid the firmware, added a BIOS-like CLI, while still keeping the original BASIC interpreter as a fallback if no bootable “OS” was found. Here’s what it looks like:

 _  _
| \/ | Macro Microcontroller BIOS Version 0.0.1.
|_\/_| Copyright (C) 2025-2026 Nicholas Lim.

Device: Macro Microcontroller 2 (RP2040 @ 125MHz)
Serial Number: ************
RAM Free: 254K OK
Serial Status: Connected

Press SW1 to enter Macro Microcontroller BASIC.
Press SW2 to enter BOOTSEL mode.

Booting system...

The UI was inspired by the old BIOS POST screens from the 1980s. As I wanted a retro feel to my microcontroller, I thought that a BIOS-like system would look nice to it!

Thanks for reading!

0
0
17
Ship #1

I’ve made Macro Microcontroller 2, a microcontroller development board and macropad with a custom BASIC interpreter firmware created in C from scratch! I’m proud of the PCB itself as I was surprised my board works well physically, as it was my first attempt creating one with a bare MCU chip on it! TO accompany the firmware and hardware, I created a documentation site to share more details as well!

Documentation: https://nicholas1023.github.io/macro-microcontroller-2/

  • 8 devlogs
  • 10h build
  • 5.00x multiplier
  • 52 Stardust
Video of Project → See source code →
Open comments for this post

3h 40m 21s logged

Finally received the board and soldered the parts on!

In this devlog, I made some changes to the firmware and released v0.0.3 that adds support for comments:

10 REM This is a comment that will be ignored!
20 PRINT "Hello world!"

I’ve also added a more detailed programming guide for my custom BASIC Interpreter.

Difficulties I’ve faced

I had some trouble soldering the keyboard switches on as it was moving everywhere. I’ve attempted applying tape, but it did not work as the temperature was too high.

I’ll be tidying up the repo and get ready to finally ship🚢 my project!

0
0
9
Open comments for this post

2h 55m 43s logged

Updated the firmware and ordered my PCB and parts!

In this devlog, I’ve added a new function to my custom BASIC interpreter for my development board, and finally sent my PCB for manufacturing!

It took me quite a while to write the random number function that the old BASIC interpreters used to have: RND. I did many rounds of trial and error to finally create a working code (the previous code was returning either nothing or throwing compiler errors due to data types):

printf("%f\n", (float)rand() / (float)RAND_MAX);

Here’s a sample program you could run that generates a random number, stores it in a variable and prints it:

10 let x = rnd
20 lsvar
30 print x

Now, I’ll be working on support for comments in my interpreter and wait for my parts to come. I can’t wait to assemble my macropad + dev board!

0
0
7
Open comments for this post

1h 15m 23s logged

More updates to the documentation site!

Today, I changed the layout and content of the documentation website and made it responsive for mobile devices! I initially wanted to add a 3D viewer to display the .glb file for rendering, but it did not output the result I wanted. (The silkscreen was not appearing!) I’ll read up on more about it, and hopefully, I would be able to add the 3D model into my documentation!

0
0
4
Open comments for this post

2h 35m 8s logged

Created a documentation site for my microcontroller!

In this devlog, I improved the documentation of my project by creating a simple website to share specifications, schematics, and provide a direct link to download firmware and 3D print files. You may view it at https://nicholas1023.github.io/macro-microcontroller-2!

What I’ll be doing next

Next, I will be ordering the PCB and electronic components and finally solder them together!

0
0
3
Open comments for this post

3h 1m 13s logged

Finished the enclosure and organised the repository!

Today, I have completed the 3D case for Macro Microcontroller 2 and did some minor bug fixes for the BASIC Interpreter. I needed to reassign the GPIO pins from the first revision of the board.

Although the interpreter is currently still basic, it supports 4 BASIC statements and 4 custom statements for controls.

What’s new in this devlog

  • Text and key labels for enclosure with cover
  • Organised repository
  • New KEY statement for hardware GPIO control
0
0
3
Open comments for this post

2h 4m 14s logged

Halfway through my PCB’s case!

What I’ve done in this devlog

For the first-half, I added silkscreen text to the PCB for the IO components (GPIO Pins, Keyboard switches, LEDs…). Next, I moved on to designing the enclosure. It took a while for me to get used to using a new app to design it.

Modifications to the PCB

  • Added screw mounting pads for easier mounting.
  • LEDs moved closer to each other for space to add silkscreen designs.

Problems I’ve faced

The screw holes were not appearing during the first few attempts, but it worked in the end when I placed it manually, instead of using the move function.

Creating the cutout for the USB connector took me about 15 mins as I needed to measure the length and clearance needed for a micro-USB plug and create another sketch before extruding it as a cutout.

What I’ll be working on next

Next, I’ll be continuing with the enclosure design, adding a cover with a keyboard plate, and finally moving on to the BASIC interpreter firmware for it!

0
0
4
Open comments for this post

2h 1m 39s logged

Finished routing my microcontroller board!

Did most of the routing for the MCU and macropad segment today, but I might need to do some rewiring for the flash memory as the trace length for SD0 and SD2 are very different (5.57 & 13.2 mm).

What has been added since the last devlog

  • Added power LED
  • Added pin headers for GPIO and power
  • Added barrel jack in case if the DC motor drains too much power

What I’ll be doing next

Next, I’ll be adding more silkscreen text, and maybe design an icon for my macropad + microcontroller board. I’ll also be creating a custom enclosure for my device!

0
0
4
Open comments for this post

2h 22m 57s logged

Finished the schematics and a little of the BASIC Interpreter for my microcontroller board!

What I did today

  • Redid the old schematics by adding custom RP2040 circuit instead of a using a dev board.
  • Added new GPIO devices such as DC motor and a buzzer. (for the BASIC interpreter)
  • Started on PRINT, LET and INPUT for the interpreter.

What I’ll be doing next

Next, I will be focusing on the BASIC interpreter firmware, working on variable assignment and math operations and testing it on a real pico board! Also, I will be starting on the layout and BOM as I have completed the schematics!

0
0
8

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…