Retro-style homebrew computer (with VERY neat wiring)

We first came across this project when a colleague posted a link on Slack with jubilant cries pointing out how satisfyingly neat the wiring is. That’s the kind of thing that flows our juices around here. Pi Towers is wild.

the completed computer sitting on a wooden desk with a keyboard
We weren’t lying about the wiring – he must have glued it in place it lays so perfectly

Anyway, maker Shane Mason wanted to create a retro-looking computer using modern microcontrollers to better understand how his work as a software engineer translates in the real world of computing. Shane has no experience in hardware and hadn’t even successfully soldered anything before embarking on this impressive project.

Variety is the spice of making

Both the hardware architecture and operating system are completely custom. The build is primarily based on our RP2040, but features a variety of microcontrollers from Adafruit and Sparkfun, as well as a Raspberry Pi Pico.

wiring diagram of all the pcbs, screens and other components

Adafruit Feather RP2040’s built-in USB host helps the system convert the attached keyboard’s keystrokes to ASCII characters. The Feather is also the board responsible for the 20×4 LCD display, which acts as the visual command-line editor.

An Adafruit Metro M4 Express processes incoming shell commands and throws them onto a 3.5″ touchscreen display. The reference implementation for this uses Raspberry Pi Pico.

the components fixed to a wooden board all together

The Sparkfun RP2040 Pro Micro provides environmental monitoring by listening out for an Adafruit AHT20 (Temperature and Humidity Sensor Breakout board), then displays this information on an 0.96-inch OLED. The Sparkfun board also looks after the blinking lights which give user feedback.

Despite the computer’s 1-bit data bus and ~2 Hz refresh rate for the display, it served its purpose as a learning experiment and bridged Shane’s knowledge gap between software and hardware.

Check out the original project post, or the YouTube video above, for more details.

Raspberry Pi roots

Shane’s creation is exactly why Raspberry Pi was created in the first place – to get people back into building their own computers at home. He named his homemade computer Ficus to differentiate each element of the build. As explained in his original project post: “The overall design philosophy for the Ficus architecture is based around the metaphor of its name-sake tree – with its complex, interconnected roots and branches.” The individual elements of the computer include the canopy, fig, keys, leaf, roots, and trunk.

a ficus plant in a terracotta pot against a plain beige background with a fake facial recognition green square oscillating in front of it

An old-school, at-home tinkerer project, designed around a plant-based extended metaphor. We love it.

4 comments
Jump to the comment form

Steve avatar

A awesome project, I really like that design style of a wood base and metal standoffs holding boards above it. I wonder if he’s got another project lined up after successfully building something like this 🙂.

My main excuse to not having made anything like this is lacking a place for soldering in a small house without any usable shed space. I should check again if there’s a maker space in the city I live near, I don’t think there was last I checked but that was pre 2018 at least.

Reply to Steve

Dennis Langley avatar

You created a functional learning tool of certain beauty but there’s much more to learn. You’ve used each microcontroller for a narrow range of function; each is capable of much more. By applying interrupt processing to external hardware, and internal CPU timer, events in a sequential state machine (coded in C for speed), your multiple computational units can be realized within a single microcontroller, like the Adafruit ESP32-S3 with TFT display (https://www.adafruit.com/product/5691). The key to getting the most out of microcontrollers is a coding technique few do-it-yourselfers ever learn: the sequential state machine, an architecture that can juggle multiple event tasks without missing a beat.

Reply to Dennis Langley

Scott avatar

Do you know of some good documentation on the coding of sequential state machines in a microcontroller?

Reply to Scott

StevenP avatar

I found this 3 part explanation of a state machine implemented on a microcontroller very useful. The author describes his development of a general purpose state machine. In real life, state machines are often simpler, but his is general purpose design and has all the features you may ever need and is well thought out.

https://coder-tronics.com/msp430-state-machine-project-pt1/

A simple method to use a microcontroller to do many things at the same time, is to have all your functions non-blocking, and just call every function in turn within a large outer endless loop. The state machine(s) handle the work (if any) currently required within each function. If you have a function which is very time critical, then this would be better on an interrupt, passing its result to a shared variable/buffer.

Reply to StevenP

Leave a Comment