This project has nothing to do with the official Spectrum Next Kickstarter or the Spectrum Next team. I wanted a Spectrum Next laptop... So I made one!
Having created a laptop style case for my ZX Spectrum Next dev board previously, I wanted to re-visit the idea of a Spectrum laptop and address some of the issues faced in the previous version.
Some of the issues with the original laptop design were:
With these issues in mind I decided to start afresh, choosing hinges from a more recent scrap laptop I had laying around and a larger HD screen that would not only support HDMI but also VGA. On top of the improved screen compatibility I wanted to be able to use one of the fantastic keyboards from a Spectrum Next in the laptop.
With all these changes in mind, the new laptop was designed from scratch, using only a few parts of the previous design (Joystick/USB/Power jack cut-outs). The new laptop must have the following:
I wanted to re-use the screen from an old non-working laptop. The screen itself is a 14" WXGA LED screen and when tested with a Spectrum Next it gave a great display over HDMI and also VGA at 50hz.
In addition to the screen I needed a VGA/HDMI/LCD controller board, there are plenty of these available from the likes of Ebay etc. The size of these boards isn't great for this particular project but by removing the large unused sockets (DVI, Headphone etc) I can at least reduce the height requirement inside the laptop.
What better keyboard to use with the laptop than a genuine Spectrum Next keyboard? Whilst it's not as thin as most modern laptop keyboards it is sufficiently thin enough for this build and I prefer the Next keyboard to most laptop keyboards. The keyboard will be "on loan" from my 2nd Spectrum Next and I'm hoping to pick up a spare keyboard in the future specifically for the laptop in order to return this keyboard back to the Spectrum Next that it came from.
Having some spare mini-boards from the handheld project I opted to use one of these for the build. It's small size lends itself well to a laptop and leaves me plenty of room inside the case for wiring and other things.
The previous version of the laptop was built around the Spectrum Next dev board which, given its size is not best suited to a laptop design. On top of this they are hard to find and also quite expensive.
The mini PCB, like the Spectrum Next PCB, has the ability to interface with the Raspberry PI and WiFi module so these are also included in the laptop along with a USB splitter board for future USB devices when they become available in the Firmware in the future.
With the screen size already determined and I want to use the Spectrum Next keyboard, the design was built around these in the form a standard looking laptop. It is not as slimline as modern laptops but that's mostly to do with me needing to use off-the-shelf components (LCD driver board, keyboard etc) and trying to fit that in.
Due to the size of the parts, initial prints were completed on my Creality CR-10S Pro, these were made to ensure the positioning of the ports and hinges were correct. Once verified the STL files were sent off to Shapeways to be professionally printed. Once received I sanded down the parts and painted them black.
After lots of sanding and painting it is time to assemble the final laptop:
Some things still need to be completed on the laptop:
Some additions to the laptop to give it some of the things you would expect from a laptop. Until now the laptop has needed to be plugged in to use, however today I have added a 12V UPS and 10,000 mAh battery which gives me about 6 hours of ZX Spectrum playtime while away from a plug socket.
When originally built the LCD backlight could not be modified and was always on at 100%. What I wanted to do was make it controllable via the laptop keyboard. To do this I picked up an Arduino Nano.
I've used these several years ago when building an LCD touchscreen Sinclair C5. With the Arduino I can control the LCD backlight by configuring one of the output pins to send a PWM signal to the screen. By routing some of the keyboard membrane lines to the Arduino input pins I can look for certain keyboard presses, namely Symbol Shift and the Left/Right Cursor keys.
Holding Symbol Shift + Left I can reduce the backlight brightness, Symbol Shift + Right will increase it. This could be done using the Raspberry Pi, however this would mean modifying the default PI software which I do not want to do. I want to use the standard Next distribution with the laptop and have the Arduino handle laptop specific functionality.
I did try to make a quick video showing this however the camera auto-adjusting the brightness to compensate made it hard to show.