Greetings to everyone, and welcome back.
Here's something fun: the Pi1000, the newly created Raspberry Pi 400 DIY Alterative, a portable keyboard-computer that combines a Raspberry Pi setup with a keyboard.
Here, we are utilizing the new PCIE M.2 Shield coupled with the NVME SSD and Raspberry Pi 5 4Gb Version.
Our version, like the Raspberry Pi 400, has a whole Raspberry Pi setup packed inside a keyboard.
It takes about 5–6 seconds for this setup to boot to the desktop, which is incredibly quick thanks to the new Raspberry Pi 5 paired with the NVME SSD.
Here, we are using a Gen 3x4 SSD that supports PCIE Express 3.1 and can provide read/write speeds up to 1600 to 1100 MB/s.
We have added a custom Volume Knob controller, which was also created from scratch using a Seeed's XIAO SAMD21 Microcontroller and uses the HID protocol to control the system volume, in addition to the new Raspberry Pi 5 setup.
After preparing the model in Fusion360, we used our Ender 3 printer to 3D print each component. This article is about the brief build guide for this project, so let's get started with the build.
Materials RequiredThese were the materials required in this build:
- Raspberry Pi 5 4GB (with cooler attached)
- Raspberry Pi Official M.2 hat
- Custom PCBs
- 3D-printed parts
- Potentiometer
- XIAO SAMD21 Microcontroller
- NVME SSD GEN3x4
- M2 Screws
- M3 PCB Standoffs.
First, we use our Fusion360 engineering software to create a model of our keyboard. We do this by meticulously measuring the keyboard's size, placement of the keys, and other details.
Keyboard modeling was essential since it helped us create the frame that surrounds the keyboard.
Three keyboard holder components have been added to the rear of the keyboard; they are used to secure the keyboard membrane in place. The holders are tightened onto the screw bosses that are already present on the keyboard.
The frame section and the holder section made up the majority of the main model.
The frame is further separated into the left and right frame sections.
Two logo components and four M2 screws are used to join the frame together.
One of the two holders is used to secure the Pi in place, and the other holds the volume control circuit.
In addition, we incorporated a model of an accent section that was borrowed straight from the Dragon Ball series' Capsule Corp logo to give this keyboard model a faintly sci-fi feel. After the model was finished, it was exported into mesh files for 3D printing, using a single 0.6mm nozzle, 20% infill, and 0.2mm layer height.
We utilize clear PLA for the frame, orange PLA for the keyboard holder, and grey PLA for the pi holder.
XIAO HID Volume KnobFirst, we created the schematic, which included a potentiometer and an XIAO SAMD21 microcontroller attached. Here, we are using a CON3 JST connector that is linked to GND, D0, and VCC. We will be using this connector to add a potentiometer to our XIAO.
Additionally, CON2, which is connected to XIAO's VCC and GND, is added.
There is no need for batteries or a power circuit because we will be directly connecting the XIAO and Raspberry Pi through the USB port to provide power.
We utilize the CAD file's measurements for the layout, which include the location of the XIAO and the mounting holes.
In addition, we added some attractive graphics to the PCB's top and bottom sides.
Seeed Studio FusionThis project was made possible because of support from Seeed Studio Fusion.
We finished the PCB design, produced the Gerber data, uploaded the file to their quote page, and placed an order for the PCB with black silkscreen and white solder mask.
PCBs were received within a week, and the quality was super good considering the price, which was also pretty low.
Seeed Fusionoffers one-stop prototyping for PCB manufacture and PCB assembly, and as a result, they produce superior-quality PCBs and fast-turnkey PCBA within 7 working days.
Seeed Studio Fusion PCB Assembly Servicetakes care of the entire fabrication process, from PCB manufacturingto parts sourcing, assembly, and testing services, so you can be sure that they are getting a quality product.
After gauging market interest and verifying a working prototype, Seeed Propagate Service can help you bring the product to market with professional guidance and a strong network of connections.
PCB AssemblyThe assembling process was not too difficult because this PCB is a through-hole board without any SMD components.
- First, we installed two CON7 header pin sockets in their place, and after that, we added the CON3 UC203 connector to the PCB.
- Next, we use a soldering iron to solder the CON7 and CON3 pads.
- Next, we align the XIAO with the two CON7 header pins and connect the potentiometer's wire harness to the CON3.
Here's the sketch that we used in this project to control the PC's volume, and it utilizes the HID protocol using an XIAO microcontroller. This was because of the microchip's SAMD21G18 inside the XIAO SAMD21.
#include <HID-Project.h> //include HID_Project library
#include <HID-Settings.h>
#define REVERSED false
int val = 0;
int previousval = 0;
int val2 = 0;
void setup() {
Consumer.begin(); //initialize computer connection
delay(1000); //wait for computer to connect
for(int a = 0; a < 52; a++) {
Consumer.write(MEDIA_VOLUME_DOWN); //set the volume to 0
delay(2);
}
}
void loop() {
val = analogRead(D0); //read potentiometer value
val = map(val, 0, 1023, 0, 101); //map it to 102 steps
if(REVERSED) {
val = 101 - val;
}
if(abs(val - previousval) > 1) { //check if potentiometer value has changed
previousval = val;
val /= 2; //divide it by 2 to get 51 steps
while(val2 < val) {
Consumer.write(MEDIA_VOLUME_UP); //turn volume up to appropiate level
val2++;
delay(2);
}
while(val2 > val) {
Consumer.write(MEDIA_VOLUME_DOWN); //turn volume down to appropiate level
val2--;
delay(2);
}
}
delay(301);
}
Frame AssemblyPrior to beginning the assembly process, we connected the two frames together and joined them from the input side using the Pi1000 logo.
Four M2 screws are used to fasten the Pi1000 logo to the frame.
We added an additional logo piece from the other side and used M2 screws to fasten the frame together.
Here, the Two Logo has two purposes: one, it joins the two frame sections to form a single, large frame; second, it just looks good.
Keyboard BreakdownWe bought a small membrane keyboard for our project. It was the most affordable we could find, and the size was also adequate.
Some keyboards contain membranes, in which the keys are pressure pads rather than discrete moving parts.
These pressure pads are added to a flexible PCB, which contains tracks that link to the driver board of this keyboard.
There's a "black dot epoxy-like portion" that incorporates a tiny wafer—also known as a circuit on board, or COB—on the main driver PCB.
- We removed the keyboard's top cover, which contains the plastic keys, the middle motherboard layer, which is made up of three flexible PCBs, and the bottom cover.
- We only used the membrane-flexible PCB and the top cover in this build.
The Flex PCB Holder is first placed on the back of the keyboard to start the keyboard assembly process.
Here, three holders that step down the membrane PCB layer and hold it in place when the key is pressed have been modeled and 3D printed.
M2 screws are used to secure all three holders.
With the addition of the Flex PCB holder, the keyboard may now function without the use of its back cover, which was designed to hold the membrane in place. The new configuration is more streamlined than the one with the back cover.
Frame-Keyboard Assembly- The keyboard is positioned in its proper location after it's set into the inside of the frame.
- We use hot glue to attach the keyboard to the frame body so that it cannot move. Hot glue is used around the keyboard's perimeter to securely attach it to the frame.
In this project, we are utilizing the 4GB version of the Raspberry Pi 5, which has a new Broadcom BCM2712 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU with LPDDR4X-4267 SDRAM available in 1GB to 8GB models.
It also features a VideoCore VII GPU, which is great if we are watching 4K videos or emulating anything on the Pi5. It can also run 4K videos on two monitors.
The exciting part is here: the new Raspberry Pi 5 has a PCIe 2.0 x1 interface, so we can finally use custom adapters to connect devices to the Pi, such as SSDs or even GPUs.
https://www.raspberrypi.com/products/raspberry-pi-5/
Raspberry Pi 5: Adding Cooler- We first remove the thermal paste cover from the cooler and then place it in the correct order over the Raspberry Pi processor.
- By putting the plastic snap locks on the cooler, it gets mounted with the mounting holes provided on the Pi, and the cooler is secured to the Pi properly.
- After that, we linked the JST connector on the cooler to the JST connector on the Pi5, and the setup is now ready for the addition of the M.2 Hat shield.
We got an official Raspberry Pi M.2 Hat in addition to the Raspberry Pi 5, and it supports M Key SSDs in the 2230 and 2242 form factors. But since we already had a full-sized 2280 SSD, we created an adapter that mounts to the existing hat and extends it so that the 2280 SSD can be attached.
We added an Ant Esports 690 Neo Pro M.2 NVMe PCIe 3.0 x4 SSD, which is a Gen 3 SSD and can provide read and write speeds of 1600 to 1100 MB/s.
Raspberry Pi OS was installed on the NVME by following the wonderful getting started guide by Jeff Geerling, which you can checkout at the below link.
https://www.jeffgeerling.com/blog/2023/nvme-ssd-boot-raspberry-pi-5
The simplest method is to use an SSD adaptor to connect the SSD to the PC so that we can use a Raspberry Pi imager to burn the operating system directly onto the SSD. Alternatively, we may use the SD card to store the operating system first and then clone it onto the SSD.
In our case, we use the clone method as we first need to enable the external PCIe port on the Raspberry Pi 5, which can be done by editing the config.txt file and adding the below lines at the bottom of the config file.
# Add to bottom of /boot/firmware/config.txt
dtparam=pciex1
# Note: You could also just add the following (it is an alias to the above line)
# dtparam=nvme
# Optionally, you can control the PCIe lane speed using this parameter
# dtparam=pciex1_gen=3
To clone the SD Card into the SSD, we first check if the Raspberry Pi is reading the SSD, which can be done by running lsblk
Next, we run rpi-clone, which is a shell script for cloning a Raspberry Pi booted source disk developed by Jeff Geerling.
# Install rpi-clone.
git clone https://github.com/geerlingguy/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
# Clone to the NVMe drive (usually nvme0n1, but check with `lsblk`).
sudo rpi-clone nvme0n1
Pi Holder- The Pi is now ready for the Pi Holder Assembly, which is assembled by first placing the Pi on top of the 3D-printed holder and then fastening it there using four M3 bolts paired to four M3 PCB standoffs.
- The M.2 Shield is then positioned over the Raspberry Pi and fastened with four M3 bolts.
- Finally, we connected the PCIE Flex cable to the PCIE connector on the Raspberry Pi and then to the PCIE connector on the M.2 hat.
- After putting the Pi Holder Assembly above the mounting screws and adding it inside the Keyboard-Frame Assembly, we tightened the Keyboard Frame with the Pi Holder using four M2 screws.
- Next, plug the keyboard's USB into the Raspberry Pi's USB 2.0 port.
- After positioning the volume PCB over the PCB holder, we secure them to each other with four m2 screws.
- The potentiometer is then attached to the frame body by placing it into the hole on the left side of the frame.
- The PCB holder is then positioned in its proper location and fastened with four M2 screws.
- We now use a type C data cable to connect the Raspberry Pi and XIAO microcontroller. Here, the USB is plugged into the USB 2.0 port of the Raspberry Pi.
- The USB side cover is positioned on the left side of the frame for the last assembly step, and it is tightened in place with an M3 nut and bolt.
- Subsequently, we attached the Capsule Corp badge part to the front side of the frame, close to the Pi's HDMI ports, by first gluing the Capsule Corp part to the frame.
This is the end result of our straightforward build: a functional Raspberry Pi PC encased inside a keyboard that runs Raspberry Pi OS. Our setup is faster than the current Raspberry Pi 400 Keyboard PC because it includes a Raspberry Pi 5.
Here, we created the frame from scratch using a keyboard that we bought from the market. We then added the necessary modifications to the keyboard and integrated it into our model. Here, the Raspberry Pi 5 is directly connected to the keyboard, which also has a customized volume control PCB that makes use of an XIAO Samd21 microcontroller.
Our Raspberry Pi now runs much faster than it did with a standard SD card, thanks to the addition of an NVME SSD.
Benchmarks: Geekbench 6 ScoreInstalling and running geekbench6 was the initial step in this process, so we could see a general overview of our Pi5 NVME setup.
We use Pi apps to install Geekbench, which is an app store with apps optimized and configured for Pi
You can install Pi apps from this script.
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash
Geekbench 6 was installed and then ran in terminal.
We obtained some interesting data after running it for a while, which consisted of a single-core score of 824 and a multi-core score of 1836. The score was alright, as this is a low-powered SBC.
https://browser.geekbench.com/v6/cpu/7029009
While our Pi's ARMv8 processor only has one core and four threads, the Intel i9-13900KS receives a single-core score of 3106 and a multi-core score of 21816. This is because the i9 is a 24-core, 32-threaded CPU.
The Radxa ROCK 5A, an ARMv8-based SBC with 1 core and 8 threads, has a single-core score of 878 and a multi-core score of 3082 when comparing chips with the same specifications. This is somewhat better than the Pi5 in single core and quite a bit better in multi-core.
Games : MinecraftAside from the Geekbench score, we installed and ran the Minecraft Bedrock edition on the Pi 5 at a consistent 60–65 frames per second.
Considering we were running the game on a single-board Linux computer, it was operating incredibly smoothly and pretty well.
The Minecraft experience was excellent due to the game's overall quickness and fluid framerate.
Emulation : PSPWe used the PI apps to install the PPSSPP emulator after playing Minecraft. We then launched Tekken 6 in the emulator and played it nonstop for an hour due to how smoothly it worked. We connected our Xbox controller to the Pi so that we could use the PPSSPP emulator to play games. Although there was a problem attaching the controller via Bluetooth, we were able to use it by using a USB cable instead.
Tekken 6 performed quite well on the PI.
Conclusion and version 2Ultimately, we launch Chrome, play a 4K YouTube video, and verify that the CPU utilization is less than 20%. The VideoCore VII GPU on the Raspberry Pi 5 is more advanced and offers better 3D graphics performance. We can clearly see the performance of the Raspberry Pi 5, which is running anything we throw at it, as an improvement over the VideoCore VI GPU in the Pi 4.
In comparison to the Raspberry Pi 4 and previous models, the Raspberry Pi 5 offers a major advancement in terms of performance, connectivity, and features, making it a more capable and versatile platform for a wide range of applications.
The outcome of our project is a functional Pi5-based PC encased inside a keyboard; all it needs is power and display output to function.
A couple of the project's CONs will be tackled in the next iteration, such as the thick frame that resulted from design-related mechanical problems.
Version 2 will have a thinner form because we are making the keyboard from scratch, minimizing space.
If you are interested in Pi-related projects, do checkout my previous work-
https://www.hackster.io/Arnov_Sharma_makes/cyber-py-zero-three-9e93ae
https://www.hackster.io/Arnov_Sharma_makes/the-pvm-panda-69cdfa
https://www.hackster.io/Arnov_Sharma_makes/gameboy-xl-bb64d3
Leave a comment if you need any help regarding this project. This is it for today, folks.
Thanks to Seeed Studio Fusion for supporting this project.
You guys can check them out if you need great PCB and stencil service for less cost and great quality.
And I'll be back with a new project pretty soon!
Comments