Ceres-1 Portable: a retro-inspired laptop | HackSpace #59

In the latest issue of HackSpace magazine, out today, Brendan Charles talks about the creation process behind Ceres-1 Portable, a retro-inspired laptop.

Ceres-1 Portable hackspace 59

Computers used to be enormous machines the size of entire rooms, made exclusively for governments and industry. Then they became small enough to serve as fixtures inside the home. Eventually, somewhere in the 1980s, they were small enough to become portable devices that you could take with you nearly anywhere. At this point, the possibilities of productivity and creativity were practically limitless. It’s this feeling of limitless potential and portability that inspired me to create my portable PC project.

Taking some mid-1980s portables as a point of inspiration, I looked at two specific models: the Dynamac and the Grid Compass. Both have a certain sense of rarity and mystique to them (the Dynamac being a limited release Macintosh conversion, and the Compass being the computer of choice for NASA engineers). The two models were also aesthetically pleasing in both opened and closed positions.

Old and new in one hybrid build hackspace 59
Old and new in one hybrid build

I originally wanted to use an old PC case for the body of my computer, but quickly realised that, with the price collectors pay for these relics, it wasn’t going to fit my budget. So, I started looking at retro toy computers instead. Luckily, I discovered the Talking Whiz Kid made by VTech in 1987. It looked like an old computer, had plenty of room to fit a small screen, a Raspberry Pi, and other components and, even better, it was only about 30 bucks. So I bought the one in the best condition for the best price, and moved on with my project.

While I waited for the body to ship, I began making mock-ups in SketchUp. I got measurements of the body online, and started to plan where the components were going to go. There was a lot of guesswork at this stage, but I was comfortable enough to commit to a 7-inch screen made by GeeekPi for the display. I also bought a compact keyboard (for an iPad case) that I thought might fit into the body of the PC. 

Ceres-1 Portable hackspace 59
The donor machine: a 1980s toy computer

When I finally received the Talking Whiz Kid, it felt like Christmas morning. The first thing I did was open it up and (carefully) take out all the original components. Then, I used a Dremel to cut out any plastic pieces or parts that weren’t needed any more. This gave me a better idea of how much room I had for all my parts, and the exact size I had to work with. I had two big revelations at this point: first, that I could use the original VTech speaker if I got an amplifier board for my Raspberry Pi, and second, the iPad  keyboard I bought was not going to work. If I wanted to plug the keyboard in while using it, the wire was going to stick out awkwardly from the side and would be too large for the case.

I now ran into my first major blocker of the project: the keyboard. I spent months looking for the perfect keyboard to fit inside this small case, and finally came to one daunting conclusion: I was going to have to make a custom mechanical keyboard. Having never soldered anything in my life, this was an intimidating prospect, but was looking like the best option. The smallest keyboard I found was a PB Gherkin, a tiny 30-key kit that fit perfectly in my case. I also had to buy an inexpensive soldering iron to get the job done.

Ceres-1 Portable hackspace 59
Mocking up the design in CAD

To construct the Gherkin, I had to solder diodes, key switches, and a microcontroller onto a PCB. I must have made every mistake you could possibly make. I soldered diodes in the wrong direction, installed the microcontroller upside-down, and bridged a couple of switch pins. Eventually, I was able to troubleshoot all these issues away and, along the way, learned even more soldering skills, like applying flux and desoldering using a sucker. I also came to the realisation that, if the keyboard was going to fit, I was going to need to add a layer of Plexiglas to the bottom of the case and then drop the keyboard into it. Otherwise, the keyboard would be too high and the top of the case wouldn’t close. After all this work, I had made a fully functioning mechanical keyboard, complete with custom keystrokes and macros to account for the small size.

My second biggest obstacle for the project was the battery and power system. Not being an electrical engineer, some of the inner workings of power draws, currents, and amperage were lost on me, and probably still are. However, using the many resources online, I was able to learn that I was going to need a few things to make this setup work: a battery with a high enough capacity to run the PC for a couple hours, a power boost module to provide a stable enough current at the right amperage, and good wires to connect everything together. Since my Raspberry Pi would be powering a screen, keyboard, audio amplifier, and small fan, it was really important to get the most power from my battery as possible. I learned most of this information from Adafruit and their many guides, and ended up buying the battery and wires directly from them. I purchased the power boost module from another manufacturer called DFRobot, which was able to supply a little more power to my build. After a bunch of trial runs and refunding wires for slightly better ones, I finally got my entire setup to work solely off battery power.

Ceres-1 Portable hackspace 59
Keyboards aren’t complex, but do involve a lot of soldering

As I progressed through the build and started using the keyboard more for trial runs, I realised I could do a whole lot better. Even though I practically pulled my hair out trying to figure out my Gherkin, the experience I got from building it made me realise there were other, better options. So, I went back to the chalkboard and found another keyboard that worked even better.

The 5×5 keyboard was a modular project that allows you to connect PCBs of five keys by five keys together, to make a configuration of 5×5, 5×10, or 5×15. So I chose to make a 5×10, but had to leave the top row of keys empty in order for everything to fit in my case. 

After already having one under my belt, the second was much easier to assemble than the first. Though I’ll admit it was not without its own challenges. This keyboard, for example, used a different microcontroller (an Arduino Micro) which was slightly more difficult to get working than the last one (a Teensy). When the keyboard was finally complete, it fitted into the case much better, and I had an extra row of keys for the numbers at the top. 

Ceres-1 Portable hackspace 59
The internals before gutting

As I was going down the checklist of features I wanted in the build, only one thing was missing: I wanted to add a built-in  cursor to the case. After doing some more research and ordering some more parts, I found two modules that might work: a ThinkPad-style trackpoint (red ball) and a trackball made by Pimoroni. While both made really good cursors when I tested them on a normal PC, I ran into problems using them with my Raspberry Pi. The problem seemed to be in my power distribution. Since my Raspberry Pi was already powering so many different things, it had reached its limit for what it could do with the battery. I might have been able to make it work if I upgraded the battery or power boost module but, if I’m being honest, I didn’t have the know-how to pull it off, and I also really wanted to complete the project. So, unfortunately, I had to settle on using a Bluetooth wireless mouse when in the Raspberry Pi OS.

Now that I had solidified my complete setup, I dry-fitted my components into the case to confirm that everything worked properly. With the help of my 3D printer, I made some brackets to fit the display into, a clip for the ribbon cable, and a front panel for the top of the case to leave room for the keyboard and hold down the screen. It was pretty satisfying to see everything working and enclosed in the body of the PC that I’d spent many months cutting and cramming parts into.

Paint hides a multitude of sins hackspace 59
Paint hides a multitude of sins

The last major step in the completion of my portable PC was painting it. I uninstalled all my components once again and did a few coats of spray paint, sanding in between each layer. I ended the process with a couple of light coats of spray polyurethane to seal everything up and protect from stains and smudges. 

Seeing my finished project boot up for the first time was a magical moment. There were some flaws in my execution of the build that stuck out to me, but probably weren’t so noticeable to everyone else. The biggest issue was a small sealed-up hole on one side from where I was going to place the built-in trackball. On the whole though, I was very happy with the way it turned out. From this point on, I focused on the software. I installed the system to boot into RetroPie, where I also installed Kodi for media, and a short cut to the PIXEL desktop environment for coding and word processing.

For a while, I didn’t know what to name my portable computer, except I knew I wanted it to have a space-related name. So, I started looking at celestial bodies and stopped on Ceres, a dwarf planet in our solar system. It’s small, and so is my PC, and I liked the wordplay of Ceres-1 (instead of Series 1). So the Ceres-1 Portable was born, and I’ve been having fun with it ever since. 

A fun coincidence happened after I posted my creation online – I received a comment from someone asking if my project had anything to do with the Ceres Workstation, which, with a little research, I discovered was an existing line of computers made by ETH Zurich in 1987. While I wasn’t aware of the existing models, the fact that these computers existed in the same era I drew inspiration from was kind of validating.

As happy as I was with the final product, I was even happier with all the skills I learned along the way. Prior to the project, I had never touched a soldering iron, made a custom keyboard, or dealt with many of the components that I used in this build. With the help of YouTube tutorials, message boards, and different Discord servers, I was able to navigate my way through these unknowns and build myself a cool PC that not only worked, but brought back the nostalgic feeling of retro PCs that inspired me.

HackSpace magazine issue 59 out NOW!

Each month, HackSpace magazine brings you the best projects, tips, tricks and tutorials from the makersphere. You can get HackSpace from the Raspberry Pi Press online store or your local newsagents.

hackspace 59

As always, every issue is free to download in PDF format from the HackSpace magazine website.

Print Friendly, PDF & Email

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Server Status

Aradippou Chat 1 Chat 2 Larnaca Limassol Nicosia

Chat Links

Official Links.

1. Chat 1.
2. Chat 2.

Alternative Mirror Links.

1. KiwiIRC 1.
2. KiwiIRC 2.

Other Web Clients.

1. IrcCloud.

Recent Posts

Related Posts:

Advertisement

Archives

Super Club Radio

Mighty Deals

CyIRC

CyIRC Tweets

Scroll Up
Fatal error: Uncaught WMAC\JSMin_UnterminatedStringException: WMAC\JSMin: Unterminated String at byte 1181: "+o.accessToken}}).then(e=>{if(!e.ok)throw e;return e});return a.catch(e=>{console.error(`Failed to logout chatrix session. deviceId: ${o.deviceId}`)}),a}})(); in /home/bszucbfe/public_html/wp-content/plugins/clearfy/components/minify-and-combine/includes/classes/ext/php/jsmin.php:215 Stack trace: #0 /home/bszucbfe/public_html/wp-content/plugins/clearfy/components/minify-and-combine/includes/classes/ext/php/jsmin.php(157): WMAC\JSMin->action(2) #1 /home/bszucbfe/public_html/wp-content/plugins/clearfy/components/minify-and-combine/includes/classes/ext/php/jsmin.php(96): WMAC\JSMin->min() #2 /home/bszucbfe/public_html/wp-content/plugins/clearfy/components/minify-and-combine/includes/classes/class-main.php(375): WMAC\JSMin::minify('(function(){"us...') #3 /home/bszucbfe/public_html/wp-includes/class-wp-hook.php(324): WMAC_PluginMain->jsSnippetcacher('(function(){"us...', '/home/bszucbfe/...') #4 /home/bszucbfe/public_h in /home/bszucbfe/public_html/wp-content/plugins/clearfy/components/minify-and-combine/includes/classes/ext/php/jsmin.php on line 215