Skip navigation
1 2 3 Previous Next

Raspberry Pi Projects

246 posts

The Raspberry Pi 3 has ability to rapid fire pulses out of its GPIO. It's surprising how fast! In other words, it can handle a lot of tasks.


If the only thing the Pi is expected to do is spin a stepper or servo motor really fast, this is good news. Theoretically, the Pi can send pulses to the motor driver faster than most any drive could accept them. The problems start when the Pi is expected to control and monitor numerous devices, all while maintaining exact timing. There just isn’t time to do it all exactly when you want it done.


The Solution

The solution to the problem is to offload some tasks to another device. That is exactly what we did here with a Raspberry Pi 3 and two Arduino UNO’s (Figure 1 & 2). The Pi and the UNOs are connected via an i2c bus. The Pi functions as the bus master and the UNOs function as slave nodes. With an arrangement like this, each slave node is told what to do with a uniquely addressed packet of data. They handle control of the motors long after the Pi has sent them their instructions, leaving it free to do something else. If the Pi was handling everything itself, it would need to use clever algorithms and more advanced coding methods like timer interrupts to simultaneously control the two motors.


A logic level converter allows the 5-volt UNOs to safely communicate with the 3.3-volt Raspberry Pi 3. Also, notice the two pull-up resistors on the SCL and SCK lines of the i2c bus. There are several articles on the internet that investigate how the value of these resistors effect the rise time an i2c signal. 10KΩ is the value we had at hand and over the short distances involved and the relatively slow speed of 400Kbps, it worked perfectly. You may want to research this topic for your own projects.


schematic 1.JPG  

Figure 1: The wiring diagram.



Figure 2: Raspberry Pi 3 connected to Arduino UNOs via an I2c bus. Note the red logic level converter board on the breadboard. It is required for bidirectional communications between the 5v UNO and the 3.3v Raspberry Pi.



The code explained a bit.

(Code is attached to this post, link at the bottom)


A short length of Python code runs on the Raspberry Pi. This code relies on the smbus library to automates the transmission of data out onto the i2c bus. The function bus.write_i2c_block_data(address, cmd byte, array) takes three arguments. The address argument is the address of the slave node you want to transmit to. The cmd byte is a special reserved byte that always gets sent first. The array argument is where you put the main bulk of the data you want to send, up to 32 bytes. It will be tx’d immediately after the cmd byte is sent.


Each UNO slave uses the wire.h library for handling of the i2c interface. You will see a lot of print commands sending data to the serial-monitor. These can be removed without consequence. They are used for keeping an eye on what the code is doing.


Every few seconds the python code addresses each slave node in turn and gives it instructions. The first bit of the cmd byte to indicate the direction of motor rotation (Figure 3). The remaining bit are unused although, they can be used to communicate anything you want. The 4 bytes in each of the arrays communicate the number of steps for the motor to take and the time to wait between them.


unspecified bits

direction bit

bit #


















Figure 3: The first bit of the cmd byte indicates the whether the UNO should spin the motor clockwise or counter-clockwise. The other bits aren’t used for anything and are ignored by the code.


Data is stored in a byte array because the i2c bus transmits data a byte at a time. An unsigned byte can only store values from 0 – 255. To get around this bottleneck, we treat two concurrent array elements like they are the high and low byte of a 16-bit integer value (Figure 4). These bytes are sent out and then recombined into an integer variable at the slave node using this clever bit of code from the C51 compiler site. It allows the access and manipulation of the high and low bytes of an integer variable with a couple of macros. You can see the macro definitions and how it appears in the Arduino sketch in Figure 5. They perform this trick by creating pointers to the bytes within an integer value.


There are other ways to do this but this is a very quick way of accomplishing the task.


byte array.jpg

Figure 4: Integer values are split up into a byte array.



macros 1.JPG

Figure 5: These macros from the C51 site allow us to manipulate the high and low bytes within an integer variable.




You aren’t obligated at all to use any of the hardware or the libraries presented here. You don’t even have to use i2c, another serial protocol can be used. This is a concept that can be applied across systems and platforms. Also, our example uses Arduino UNOs, but there is no reason that a smaller board like an Adafruit Trinket or an Arduino Mini couldn’t be used in its place. A robot with an UNO at each motor might look a little silly.


For truly exact timing, a real-time clock could be added to the i2c bus. The master and slave nodes can then read the exact time and use that data to precisely time events.


The protocol we devised for this example of using the cmd byte in conjunction with 4 more bytes from an array to communicate step count, time between steps and direction of rotation can be modified to meet your requirements. Each of your slave nodes could be doing far more than spinning a motor and as such, may require 20 or more bytes to effectively communicate instructions. Whatever form that protocol takes is up to you. Do not feel obligated to do exactly as we did. This article is only meant to demonstrate a technique as simply as possible and to give the reader a solid starting point.


Finally, our example uses two slave nodes but there is no reason why more couldn’t be added. A lot more in fact. 127 nodes at the minimum and with some adjustment to the addressing scheme, there is no reason you couldn’t put 1000 devices on the bus. Not that you’d need that many. If you do, post a comment. We all are going to want to know what the heck you are up to.



Explanation of video:

What you see here are the two UNO i2c nodes controlling their respective motors after they have received instructions on how to do so from the Master node. Those instructions where sent, received and decoded before the motors even started to move. If the raspberry Pi was left to control these motors, it would be occupied with that task for the duration of each motor movement. By offloading the job of controlling the motors, the Pi has more resources to dedicated to something else, like running a GUI.



Have a story tip? Message me at: cabe(at)element14(dot)com

Project Iron Pi Zero Mark II


  • Raspberry Pi Zero v1.3 or Zero W
  • Raspberry Pi 8MP NoIR Camera v2
  • Adafruit Power Boost 1000C with Adafruit Approved Lipo Battery
  • Mini USB Microphone
  • UV, IR, and RGB LED
  • Laser















     First activation of Iron Pi Zero Mark I with RPi Zero v1.3.










FB_IMG_1499001159969.jpg2 (1).JPG


  Thanks for checking out my project. Stay tuned for updates.



This post will cover the basics of how I use a 3D printed camera mount to take photos of the moon using a Raspberry Pi cam. My telescope has a 1.5 inch eyepiece but you can download the 3D printable file and adjust the size to fit your needs. I am using a Raspberry Pi 3 running Raspbian, using a regular Pi cam. Then using an android phone app I can take pictures and view them on my phone seconds later.1492258660637.jpg

I plan to take this setup to some remote locations. I chose to use a GoPro flex arm attachment and SmartiPi case for now so I can quickly attach and remove the Raspberry pi from the telescope. I picked up the flex arm for around $12 on amazon, and the SmartiPi case was about $25 from MCM electronics with a GoPro mount built in. These work for now, maybe bring some zip ties to keep the Raspberry Pi attached, remember the telescope with be slewing up and down, and the Pi may try to fall off!!



I use my phone as a wifi hotspot to create a network to connect the phone to the Pi in remote locations. I've already setup Raspbian on the Pi and pre-configured the network connection, so It connects to the phone hotspot automatically. I've had best result using the android phone app RaspiCam Remote It has a video mode that allows me to see what the telescope sees so I can line up the shot. Try using apps like VNCviewer for remote desktop access, You can then run python scripts to take custom photos. Or use the app RaspManager with it's built in photo system we can take pictures, and download them to the phone quickly,but no preview to line up your shot. Below are photos of the moon taken from the 8MP Pi cam!! Very happy with the results now to take this setup into the mountains for some clearer sky's.


For more pictures and even a video visit It' Thanks for reading!

We recently went on holiday and I took my laptop & VGA cable with me. It was my intention to hook it up to the TV and play some media on it to keep the kids happy on rainy days (pretty essential in the UK!). It turned out the TV had the VGA port covered up by the mounting bracket, so we ended up putting the laptop on a chair and watching videos from there; it did the job, but there was a perfectly good TV I could have used.


At home we have a Fire TV Stick that runs Kodi, but the problem with Fire TV is that it has to have an internet connection, otherwise it refuses to run any apps. I'd rather not have to tether it to my phone all the time.


Next time I'll be more prepared; I've put together a compact and flexible setup consisting of a Raspberry Pi 2 running OpenElec (and Kodi) together with a set of cables allowing me to hook it up to pretty much any TV. The Pi runs Kodi really well; the OpenElec distribution boots really quickly & has good Wifi and BlueTooth support.


Cable-wise, I've got a 1m standard HDMI cable, which will be used in most situations.. with a 2m HDMI extension lead if I can't get the Pi near enough to the TV (some accommodation doesn't have power sockets where you'd expect them). I've also got a RCA lead, with a SCART adaptor as well.. so that helps if we get stuck with an older TV, which is a plus point for using a Pi 2 with composite out.


For media storage I've gone with a USB3 Flash Drive with a capacity of 64Gb, which gives us more to play with than the microSD card, and it's super-fast for copying media from a PC. As soon as you plug in the flash drive, Kodi will show it in the menus.


At first I chose a compact/travel USB-based keyboard instead of Bluetooth in case OpenElec 'forgot' the keyboard and I'd have nothing to navigate the menus to re-pair it. But then I bought a numeric keypad from eBay for £2. The keypad isn’t instantly recognised by Kodi, but an easy way to get it up and running is to use the Keymap Add-on. Attach a normal USB keyboard and the keypad at the same time, start the add-on, and use the keyboard to activate the remap process. From there, it’s dead simple to map the keypad to the different Kodi functions.


So that's it.. nothing groundbreaking or overly difficult to put together. The whole system is small enough to fit in a small travel bag & gives us a lot of flexibility when dealing with different hotels/accommodation. You may just find the TV accepts the USB flash drive and can play back whatever is on it.. but at least you'll have all the gear you need if it doesn't




Kit list;


1 x 2m HDMI extension cable

1 x 1m HDMI cable

1 x Raspberry Pi 2

1 x 8Gb MicroSD card

1 x Compact USB travel keyboard

1 x RCA to SCART adapter

1 x 3.5mm plug to RCA lead

1 x 64Gb USB3 Flash Drive

1 x USB power supply + cable

Originally posted on: Pi Zero Case One-Minute Mod – Frederick Vandenbosch


A 1-minute mod for the official Raspberry Pi Zero case, inspired by the ZeroView.



  • Raspberry Pi Zero (W) with official case
  • Raspberry Pi Camera module
  • Hobby knife
  • Two suction cups



Follow me:


Hello! I'm currently designing a project based off of the Nintendo Switch and modern gaming tablets, It's called PiTab (Pie-Tab) and it uses the Raspberry Pi 3 Model B. It has two slots for controllers on the sides, and a screen in the middle. It also has a 3.5mm headphone jack, an HDMI out, and a rechargeable battery.

Why have a rechargeable battery? It's made to be taken with you on the go, not just at home! There's two ways to play; connect it to the dock, or play as a handheld.

You can also play with any bluetooth/USB gamepad supported by RetroPie.


I probably won't make the "PiCon" controllers on the sides of the console, as I'm not good at that kind of stuff...





Concept Art:


Console PiCons.png

Console Front.png

I'm looking at building an AoIP link using a pair of suitable Rpi's with Wolfson / Cirrus audio boards.


Audio In/Out would be analog. The Ethernet link would be extended using Ubiquity wireless long range access point devices set up as a wireless bridge.


I'm getting a wee bit lost trying to determine the most suitable combination of Rpi board, audio board, and OpenOB version. I also have a strong preference for a board combination that is drop-in compatible with an existing & readily available case such as the Camdenboss Wolfson board case (from what I can gather, this seems to be designed for the older Rpi boards which are no longer available?).


My intention is to set this up as a more or less embedded system that I can plug in, turn on, and send / receive audio.


I'd appreciate some help figuring this out. I'm not really concerned about having the latest & greatest, but rather the combination that is most likely to just work, with as little troubleshooting & fiddling around as possible.


# I work as an audio / light tech, and also as wireless installer for a small ISP using Ubiquity equipment. Although I prefer to use Ubuntu based Linux OS's such as Mint for my daily computing, I'll be the first to admit that I'm not much of terminal / code guy - my configuration requirements for work are VERY basic. I can get a bit of help from our chief technician, although his available time is limited. I can however follow sufficiently clear instructions

In the previous parts of this series we've setup a shared network folder and some network nodes. Now we can actually get on with installing and using Blender.



To install blender the following is needed.


sudo apt-get install blender


Running Blender

As Blender is a graphical program, it made sense to attach a screen to my controller node and launch the application. It takes a while to launch but eventually it returned the default scene of a cube and a light. Even on the Pi3, it's pretty slow to use from the graphical interface so I'd not want to have to use this for creating the scenes on the Pi. The menus are unresponsive and even just navigating the file structure is a challenge.


I downloaded some sample files and rendered the first one. A couple of minutes later it appeared.


Command line

It is also possible to run Blender from the command line to render either single frames or animated sequences. You'll need to use the UI to design the models and animation first and you can set the output parameters here but some of the output details can be changed at the command line.


The command line returns a strange error which I've not worked out yet.

AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"


I repeated the rendering from the command line with the following.


blender -b /mnt/network/Samples/AtvBuggy/buggy2.1.blend -o /mnt/network/Samples/AtvBuggy/buggyrender -f 1


The parameters are:

-b scene to load in background

-o output file

-f number of frame to render


On the Pi3 that generated the file in 01:00.38.

the Pi2 takes a little longer 01:15.89.



I picked a model helicopter animation to test out the rendering on the cluster. I created a simple shell script to render different frames on each of the nodes.

ssh cluster1 blender -b /mnt/network/Samples/Demo_274/scene-Helicopter-27.blend -o /mnt/network/Samples/Demo_274/Helicopter##### -s 1 -e 25 -a &
ssh cluster2 blender -b /mnt/network/Samples/Demo_274/scene-Helicopter-27.blend -o /mnt/network/Samples/Demo_274/Helicopter##### -s 26 -e 50 -a &
ssh cluster3 blender -b /mnt/network/Samples/Demo_274/scene-Helicopter-27.blend -o /mnt/network/Samples/Demo_274/Helicopter##### -s 51 -e 75 -a &
#Render rest locally
blender -b /mnt/network/Samples/Demo_274/scene-Helicopter-27.blend -o /mnt/network/Samples/Demo_274/Helicopter##### -s 75 -e 100 -a


Then ran the script with


./ > render.log


This was perhaps a little optimistic as it was hard to tell what was going on and at least one of the nodes failed to find the network drive.


I had to remount the drives using to following command. It should be possible to schedule this at boot but I have yet to configure that.


sudo mount -a


I then created a ssh session to each of the nodes and started rendering. The first few frames appeared after about 30 minutes, the helicopter turned out to be a photo-realistic Meccano one!


3 of the nodes were producing one frame every 30 minutes the last was estimating 10 hours per frame. When I check that node was a B+ so the extra power of the Pi3 really makes a difference here. So, best that the other 3 nodes take some of the work-load from this node.


After a few frames, I realised that this was not actually animated so all my nodes had produced the same image! My blender skills are fairly limited so rather than animating this I tracked down some demo examples with animation at .

I decided to use hothothot.blend from the 220 zip file. Results below.


Producing a video

Once you have a series of frames you need to turn these into a video. Blender does have a built-in video editor for this but an alternative is the command line tool FFMPEG.

This can be installed by following Jeff Thompson's instructions to build FFMPEG, note that this could take a few hours.


Creating the video took a few seconds with the following command:


ffmpeg -r 60 -f image2 -s 320x240 -i Render%05d.png -vcodec libx264 -crf 25  -pix_fmt yuv420p Render.mp4





So in summary, the blade does a good job of providing a platform and power to the blades. As has been seen, the setup of the network can be challenging, perhaps I should have stuck to DHCP! The sharing of the disk in comparison was straight forward. The suggested use case of a Blender render farm is quite achievable although you'd want to use the Pi3 rather than earlier models. I think if you had a big project you want to look into how the allocate of frames to nodes could be automated, there are some commercial solutions available but it should also be possible to code something.




Installing FFMPEG for Raspberry Pi – Jeff Thompson

Using ffmpeg to convert a set of images into a video

Checking Your Raspberry Pi Board Version

As shabaz mentioned in the previous comments a lot of the setup for a Pi Cluster applies to other scenarios. Something I stumbled upon this week was building a hadoop cluster with raspberry pi which is another thing you could do with the Bitscope blades.


In this part of the project, I'm looking at the setting up of the nodes.



I took a slightly different approach to enabling SSH on the nodes by creating a file called ssh on each of the boot partition of the SD cards.



Each node was renamed and given an unique IP, 201,202 and 203.


So that the nodes can communicate to the main network the controller has been configured to act as a gateway, see Niall McCarroll - Building a Raspberry Pi mini cluster - part 1


I followed the previous steps to give the boards static IP addresses, however, it does not work. The boards kept ending up with a DHCP assigned IP address and if I turned off DHCP then I ended up with no address at all.


Eventually, this turned out to be out of date information and rather than change the IP address in the interface file, it has to be given in the DHCP config file  /etc/dhcpcd.conf


interface eth0
static ip_address=
static routers=
static domain_name_servers=


I also found that the domain name servers were not being picked up correctly. The following command shows what you have configured.


 resolvconf -l


It should give the list of addresses mention above. I found it did not work correctly until I changed the /etc/network/interfaces back to it's default.

iface eth0 inet manual


Network share

The steps to mount the share are the same as for the controller, starting with the backup of the fstab file, creating a password file and adding the mount point.


I also needed to install smbclient using

sudo apt-get install smbclient


Automating the configuration

Once SSH and the network are configured we can automate the install of the other software. The first step to this is to follow the steps in Rachael's article below to add keys to connect to SSH. We can then use shell commands to run the same thing on each of the nodes. You can't use this for interactive tools such as editors but it's good for command line such as mkdir and cp.


HOSTS="cluster1 cluster2 cluster3"
for HOSTNAME in $HOSTS; do
    echo executing command on $HOSTNAME
    ssh `whoami`@$HOSTNAME $@


In the next and final part of this series I'll look at running Blender from the command line so that all the nodes can be processing files.




Setting a static ip in Raspbian

Building a Raspberry Pi mini cluster - part 1

Updating security for remotely connecting to my servers via SSH

Setup of the controller node



The latest raspbian disables SSH by default so I turned that on and changed the hostname and password.


External disk

As mentioned about this is a USB disk, so it was simply a case of plugging it in and it being detected. I had a problem detecting the old IDE disk so I swapped in a SATA disk I had spare.


I'm not much of a command line guru so I installed gparted a graphical disk utility that I'd used before for repairing problem disks. I formatted the disk with ext4 (as it won't be accessed outside the cluster) and gave it a suitable name. On reboot it was mounted automatically.


I did have to resort to a command prompt to make a new directory and grant permissions to all


sudo mkdir /mnt/external/images/
sudo chmod 777 /mnt/external/images


Sharing software

Samba Server

The software for sharing files on a LAN is called Samba. The setup is quite detailed so I followed the steps in Peter Legierski's blog post below. In summary the steps are, install, set password, configure samba and configure the firewall (iptables).


There are a few differences I needed:


  • the line "security = user" did not exist so had to be added
  • the path in the smb.conf file was changed to  /mnt/external/images
  • restarting the service requires service smbd restart not samba as in Pete's notes
  • iptables did not need configuring it defaults to all access


Samba Client

I checked that I could connect from my windows desktop.


I also configured the Pi to automatically mount the network share. The first step is to make a backup of the configuration.


sudo cp /etc/fstab /etc/fstab.bak


Add a mount point

sudo mkdir /mnt/network


Then edit the configuration file to contain the details of what to mount

sudo nano /etc/fstab


I added the following to connect my share to my mount point and to use an external file for credentials

//cluster0/shares /mnt/network cifs credentials=/etc/samba/user,noexec 0 0 


Next create a file with the user account

sudo nano /etc/samba/user

Containing the username (pi) and password from when you setup the Samba share



And finally test it works with

sudo mount -a


I created a file in my folder and checked it could be read over the network with

ls /mnt/network


The ethernet router I was using was configured to give out the same IP addresses as my wifi so I went with Niall McCarroll's suggestion of using static IP addresses. However, I found his suggestion of using /etc/network/interfaces does not work. You need to edit /etc/dhcpcd.conf


interface eth0
static ip_address=
static domain_name_servers=
metric 400


For my controller node, I needed to change the metric of the LAN connection so that it was higher than the default for the Wifi. Otherwise attempts to reach the internet were routed to the internal router. I also needed to add the DNS entry so that commands such as apt-get still work.


My /etc/hosts file was   cluster0   cluster1   cluster2   cluster3


Finally I tested the configuration with a reboot and



What's next

The network and disk has taken me a bit longer than anticipated so there will be another part where I setup the nodes. This will likely follow the guidance of Niall McCarroll. I'll also need to get the nodes rendering from the shared drive.



GParted -- A free application for graphically managing disk device partitions

Mount an external hard disk on the Raspberry Pi

Building a Raspberry Pi mini cluster - part 1

Raspberry Pi [Part 2]: External drives, Samba and SFTP | - blog by Peter Legierski

Cannot restart samba, samba.service is masked - Ask Ubuntu

Samba Guide

Samba Client Guide

PiHut - connecting to network storage at boot

Internal and External IP Addresses

Morning all!


I'm working on a little Pi Project, and I'd like to get your input on logistics or and ideas you might have to make it easier/better.


Basically, I'd like to have a device that can run Retropie with dedicated gaming buttons, and also run an Andrid like tablet operating system.


The idea is that I have a custom Tablet case with a touchscreen, and inside there will be 2 Raspberry Pi units, one of them running RetroPie, and one running Android or an alternative. I'd like it to have one Power button, with a toggle switch to choose between the two systems.


The RetroPie system will be hooked up to some buttons/joysticks for gaming, and the Android tablet will be hooked up to a home button. Ideally there would be a shared Battery for both units in the middle behind the screen, or 2 separate ones if that's easier to set up. I'd like to have a USB port for both units for file transfer, and for multiplayer on the Retropie, and ideally an HDMI out for use with a monitor.


I've made a little mockup to demonstrate what I mean, or roughly what I'd like it to look like, if you can see any problems or potential issues with the design, features, or the concept as a whole, let me know! I'm interested to see what you guys think!






Following a discussion from DABs review of the Bitscope Blade Uno, I thought it was worth quickly mentioning the different sockets and pins you get on the bays of the blade.



Socket for Pi

This is a standard 2mm x 40 way socket for mounting the Raspberry Pi, it will fit all of the 40pin Pi including the zero.

Aux Power

This a 3 pin header with Gnd, +5v and Gnd. The power is aways on when there is power to the blade.


Power control

This is a 2x2 header with a jumper connecting +5v with the Pi sockets for 5v power. You can remove the jumper to disable the socket or attach a switch or relay. The other 2 pins are GND and GP21. This means that you could wire up a shutdown button to all of the Pi to be controlled either from a master controller e.g. the Pi in Bay one or an external switch. It might have been nice if Bitscope had provided a bit more information about what you might do with this connector as per the examples you see for some of the Pi UPSs.


Hub Connector

This is a cut-down version of the GPIO header on the pi, it is a right angle male connector on the bottom of the board. There are 26pins broken out including serial, I2C and some GPIO. So you could potentially wire these up to a custom board or across to a Pi accessory board. It does not include the Eprom pins needed for true HATs to work correctly.



Here's a video I put together to explain how to ssh into retropie from another computer running ubuntu. This allows you to transfer games, or whatever files you want to any folders on your Raspberry pi 3. I kept the video short and to the pont, let me know what you think. How can I make it better? Thanks for checking it out!


Retro Computer Pi

Posted by toukomputer Jan 3, 2017



My name is Xavi Lazaro and I live in Barcelona - Spain. As a fan of 80's computers I always dreamed to be in that garage era where one could build his own micro computer using some sort of kit and letting your imagination flow...


... So this was the idea, to build having fun an old looking computer as seen 30 years ago!

But, history says that you need a partner to end computer business with success so what better than my daughter Iris.


Hi I am Iris! Why did I take part in the making of the TOUKOMPUTER? I remember when I was like seven or eight, when my dad started showing me the world of retro computers. At first it seemed a little boring: why focus on old machines when you have brand new PCs and gaming consoles with a way more possibilities? But as I grew up, I started to think in the ''how'', more than in the ''what'' of Spectrums, Commodores, Amstrads... How could people make games in the 80's without any programmation platforms? Coding drew my attention. So I though it would be great to build one of that computers with my dad, learning new things about tech and about designing a machine!




The first thing was to imagine and draw an old computer design:


Retro Computer - Xavi Iris Lazaro (1).jpg


After some thinking design this ended up using Corel Draw,


IDEAS Retro Computer PI TKO.jpg


we chose this one as the final design:


Corel Design Retro Computer PI TKO.jpg





The goal was to have a retro style computer that featured all the connections needed to be a standalone machine, also with a Cartridge Port as seen in multiple 8 bit computers. This will be of great help to change between "ROMS" in this case SD OS Cards.

It had to have enough power to run some retro stuff like emulators and 8 bits old systems. So, the use of a Raspberry Pi 3 as a core was the better option..  We have in mind to have one OS card booting in some version of BASIC as the old ones, and we found  a project called FUZE for raspberry with a BASIC emulator, so what more do we need?

It was important to be able to use this system with old VGA monitors and also with new HDMI Screens.

The machine had to be compact and portable (from room to room at least...) but always with an old flavour.



A good work isn't it??? So....Let's begin!




Then it was time to acquire some materials, but with an idea of not spend so much and to recycle as much as possible.


  • A Raspberry Pi 3:  bought in Amazon/Element14
  • Plywood wood, wood glue, fretsaws blades, wood screws: bought in a Hardware Store
  • Ugreen®  HDMI extension cord male to female High Speed, Raspberry PI 3 compatible:  bought in Amazon
  • Aukru - Heat Sinks for Raspberry Pi (aluminium, 3 units), color silver:  bought in Amazon
  • MicroSD to SD adaptador extensor flexible/SD rs-mmc/SDHC/MMC:  bought in Amazon
  • VicTsing Cable HDMI to VGA Adaptor 1080P with Audio and DC/5Vin:  bought in Amazon
  • 4x Kingston SDC10G2/16GB - microSD card 16GB (class 10 UHS-I 45MB/s) with SD adapter:  bought in Amazon
  • AC/DC 2A Adaptor - Recycled Material
  • AC Outlet-connector -  Recycled Material
  • Red Led - Recycled Material
  • ON/OFF Switch - Recycled Material
  • Audio Jack female:  bought in an electronic Store
  • Audio Jack male and cable - Recycled Material
  • USB HUB - Recycled Material
  • USB cable extensor- Recycled Material
  • Old PS/2 Keyboard - Recycled Material
  • PS/2 USB converter - Recycled Material






Here we have attached a lot of pictures (maybe too much...) with the object to visualize the building process:


There is no much explanation, the first thing is to build the sides with a desired measure and then use them as reference for the rest of the parts.


There is a little of information for every step:



Sawing sides of 10 mm plywood:

Retro Computer - Xavi Iris Lazaro (2).jpg


Filing sides:

Retro Computer - Xavi Iris Lazaro (3).jpg


This keyboard is to large !!!, let's take an old keyboard and... wait!!!! oh... poor keyboard...!

Retro Computer - Xavi Iris Lazaro (4).jpg



Now it is small and cute and it will fit in the box! Who wants numeric keys????

Retro Computer - Xavi Iris Lazaro (5).JPG


The membrane is respected in order to have a working keyboard...


Retro Computer - Xavi Iris Lazaro (6).JPG


Placing and drawing the keyboard frame:


Retro Computer - Xavi Iris Lazaro (7).JPG


Sawing the keyboard frame, Iris is sawing straighter than a saw machine!:


Retro Computer - Xavi Iris Lazaro (8).JPG


Retro Computer - Xavi Iris Lazaro (9).JPG


Retro Computer - Xavi Iris Lazaro (10).JPG

Retro Computer - Xavi Iris Lazaro (11).JPG


Having measures again... or it could be too late...


Retro Computer - Xavi Iris Lazaro (12).JPG


Putting together the keyboard's base and sides:


Retro Computer - Xavi Iris Lazaro (13).JPG



Filing the differences:


Retro Computer - Xavi Iris Lazaro (14).JPG



Now it's perfect!


Retro Computer - Xavi Iris Lazaro (15).JPG



Let's go for the other parts of the box: front, rear and top! The wood is 5mm plywood.


Retro Computer - Xavi Iris Lazaro (16).JPG


All parts showed are sawed and filled:


Retro Computer - Xavi Iris Lazaro (17).JPG


All parts mounted provisionally to have and idea....


Retro Computer - Xavi Iris Lazaro (18).JPG


Details of the space inside for fitting the components:


Retro Computer - Xavi Iris Lazaro (19).JPG

Retro Computer - Xavi Iris Lazaro (20).JPG

Retro Computer - Xavi Iris Lazaro (21).JPG



Now is time to test the Keyboard and the VGA converter. Please note that this converter needs a 5V DC input to work properly with a Raspberry.


Retro Computer - Xavi Iris Lazaro (22).JPG

:Testing the Keyboard without numeric keypad.  We have put a slice of plastic between membrane and contacts of unused numeric keys to avoid unwanted touch:


Retro Computer - Xavi Iris Lazaro (23).JPG



It is time to make the holes for screws, leds and connectors. The back and the base are mounted using screws, this way it will be easy to access inside:


Retro Computer - Xavi Iris Lazaro (24).JPG


The cartridge hole, led and the rest of connectors are ready.

The process is done using a small drill and a lot of filing. We have drilled too some holes for ventilation:


Retro Computer - Xavi Iris Lazaro (25).JPG



Here the box is glued and prepared with two coats of primer or undercoat paint:


Retro Computer - Xavi Iris Lazaro (26).JPG



Now is time to choose Color....Wait...What!? Electric Blue!!!???

Yes dad this is what I want!


Retro Computer - Xavi Iris Lazaro (27).jpg


Retro Computer - Xavi Iris Lazaro (28).jpg



This computer shines!


Retro Computer - Xavi Iris Lazaro (29).JPG



Preparing decals using decal paper and Corel Draw as edition software.

The name of this computer will be... TKO... Please Iris, could you explain why....?


Sure! I have an OC (original character) called Touko, who loves retro computers. She was the main protagonist of a short manga I had in mind. After reaching a deadpoint in the story, I left the idea in a drawer in my mind, which remained closed for two years or so. When my dad told me about the retro computer and that we had to think a name for it, my bulb lighted: Touko (that old oc) + computer = TOUKOMPUTER (TKO)! A (is it really? XP) original name with sense! And I could also make Touko the mascot: tunning the case, making wallpapers, put her in the logo, etc.! (which I never did... sorry)

So that's all the story! Simple, isn't it?


Decals Retro Computer PI TKO.jpg




Retro Computer - Xavi Iris Lazaro (30).JPG


Logos for the Retro Computer Pi TKO:

Logos Retro Computer PI TKO.jpg


All decals are in place with two coats of matte acrylic varnish to protect them:


Retro Computer - Xavi Iris Lazaro (31).JPG



It is time to mount connectors.

Proposed connectors and AC adaptor placement:

Connectors Retro COmputer PI.jpg

Retro Computer - Xavi Iris Lazaro (32).JPG

Some pieces of wood make a support for the large connectors.


There are installed two monitor adaptors, one for VGA and one for HDMI. Unfortunately It will be necessary to open the computer and connect one or the other to the Raspberry Monitor Output in order to choose between them:


Retro Computer - Xavi Iris Lazaro (33).JPG



Here we are extending the keyboard caps lock led, this will go directly to the front of the computer box:

Retro Computer - Xavi Iris Lazaro (34).JPG



The Keyboard is glued to the wood and ready to rock!


Retro Computer - Xavi Iris Lazaro (35).JPG


Here we have some external help...

Retro Computer - Xavi Iris Lazaro (36).JPG



Using two recycled washers we are holding the Raspberry to the computer box connector board:


Retro Computer - Xavi Iris Lazaro (37).JPG



Now is time to bring power, here the AC Adaptor is glued to the board, then the 5VDC Output is connected to the on/off switch and finally to the Raspberry DC Input.

AC arriving to the AC outlet is connected to the AC/DC adaptor using a couple of Faston Terminals:


Retro Computer - Xavi Iris Lazaro (38).JPG


Here we see also a Power LED, it goes directly to the Raspbeyy PI 5VDC pin and ground respectively, using a 300 Ohm resistor


Also there is a double check in the AC ADAPTOR  to assure that  +5VDC is properly connected to the Raspberry DC Input:


Power Led.jpg



Retro Computer - Xavi Iris Lazaro (39).JPG



For a properly operation we are Installing Heat Sinks to the Raspberry, 3 in total:


Retro Computer - Xavi Iris Lazaro (40).JPG


And with all connected the TKO is a little messy inside.... Observe the SD/MicroSD Adaptor Flat cable: the trick for the frontal cartridge port:


Retro Computer - Xavi Iris Lazaro (41).JPG



Ladies and Gentlemen... Let us introduce you the Retro Computer Pi TKO!


Retro Computer - Xavi Iris Lazaro (42).JPG



Computer size compared to a 19 inch monitor and to a Mac Mini...


Retro Computer - Xavi Iris Lazaro (43).JPG


Some more pictures in detail:


Retro Computer - Xavi Iris Lazaro (44).JPG



The Cartridge Port is a really good Idea, We have a lot of rooms ready... for OS images ; )

OS ROMS REtro Computer PI TKO.jpg


Photo of the OS Cards:


Retro Computer Pi TKO Cards.jpg




An easy way to change between operating systems (similar to a Nintendo 3DS!):

Retro Computer Pi TKO Cartridge Port.JPG




Look at the connectors at the back side:

At the moment, there is no need for Ethernet port being WIFI the only network connection:


Retro Computer - Xavi Iris Lazaro (46).JPG


Retro Computer - Xavi Iris Lazaro (47).JPG



Look at the speaker out and additional USB Port ( using a USB cable enlargement). An easy way to connect USB devices.


Retro Computer - Xavi Iris Lazaro (45).JPG



The machine is ready to work!


Retro Computer - Xavi Iris Lazaro (48).JPG


Retro Computer - Xavi Iris Lazaro (49).JPG


Using a 27'' HDMI Screen:




Using and old TFT 17'' Monitor:





BASIC in ROM... no... in SD CARD....

Our first program...



So this is all. My daughter and I have enjoyed a lot in the process and we have learn some things, too. It is time to enjoy the system!

Thank you very much for reading!




Xavi Lázaro & Iris Lázaro

Barcelona - Spain 2017

As mentioned it the previous post, I'm building a small render farm for Blender using the Bitscope Blade. I decided to mount all the components on a sheet of wood so that I could pack the whole thing away when I was not using it.




Back in March I put together a kit that turned an ATX power supply into a Benchtop Powersupply  I had another of the same 1U ATX supplies that would work well for this project. I chopped up some extension cables so that I could simply plug the supply into the blade and router. I wired up the "PS-ON" to GND as there's a separate on/off switch that can be used on the back of the supply. I also wired up 2x12v connectors for my router and the cluster. I was slightly thrown as the router was 5.5/2.1mm and the Bitscope Blade was 5.5/2.5mm. The disk was an old IDE one so needed a chunky 4 pin connector, the PSU already supplied that. The spare connectors I just bundled in parallel so they would not get in the way. A couple of 3D printed clamps hold the PSU to the backing board.


External Disk

I had started with a cased disk caddy but realised I also had a simpler one which would allow a bare drive to be used. This should result in the smaller setup. The disk was mounted via some suitably printed brackets.


Each of the pi plugged into a handmade short Ethernet cable and connected to a router. As mentioned in the previous post, one of the challenges of a cluster is managing the software on each node. I'll likely wire the cluster up to my main network for the setup then disconnect it once the software is installed.


The setup is ready for use now so next up is some configuration.


I've put the 3D models into GitHub and will add any scripts and code as they get created.



Makezine - Turn a computer power supply into a bench power supply

Filter Blog

By date: By tag: