A perfect cradle for your personal cloud

Quite a few months ago, I started an ambitious project. My goal was to create a case for Raspberry Pis to combine them into a cluster and run Kubernetes.

Constrains were the following:

  • The case should host three Raspberry Pis.
  • It should be possible to hot-swap any of them.
  • It should be quiet under normal load.

Here is the result:

Case

Since I liked the idea of cutting cases from acrylic glass, I decided to design my case so that it can be cut entirely from inexpensive 3mm and 4mm acrylic sheets anyone can find in a DIY shop. Of course, you need to have access to a 30-40W laser cutter to cut them, and I was lucky enough to find it in Marineholmen Makerspace.

I also wanted to have my Raspberry Pis hot-swappable, so I needed to find a way to install and remove any one of them without disturbing other ones. The solution was to design a frame and add grooves to the case so that Raspberry Pis mounted on such frames could be pushed into the case and retracted when needed. Here is a 3D model of a Raspberry Pi with a PoE module and two parts of the frame:

The case box itself is assembled from the following parts:

  1. Left, right, top, and bottom panels.
  2. Top and bottom panels with grooves for the Raspberry Pi frames.
  3. A back panel with a fan grill.
  4. A front panel with openings for USB and Ethernet ports.

The back panel with a fan grill can be removed without the need to disassemble the whole enclosure. This solution provides better access to the fan controller.

Power

It’s hard to overestimate the importance of a good power supply for Raspberry Pi. After trying different solutions, I settled upon the Power over Ethernet (PoE) module RT5400-5V. This module provides 4A of stabilized 5V, costs around $7, and absolutely silent. I just had to add several electrolytic capacitors and design a PCB for connecting it to Raspberry Pi’s IO and PoE pins. 

The PoE module does not obstruct airflow over the central part of the board. Instead, it extends over the top part of a Raspberry Pi, and since the RT5400 module is installed perpendicularly to the PoE PCB, it does not occupy much space.

Apart from supplying power, the PoE PCBs have an additional connector to provide 5V and access to the I2C bus for powering and controlling a chassis fan. When you slide a Raspberry Pi into the case, this connector is inserted into a socket on a special rail PCB, and the rail PCB itself is connected to the fan controller on the left side of the enclosure.

Cooling

I decided to use as big a fan as I could fit into my case. The bigger the fan, the slower it needs to rotate to extract the same amount of air and, the slower it rotates, the less noise it produces. I picked Noctua NF-A8 PWM fan. It is an 80x80x25mm very quiet fan with PWM support. 

Since I was planning to power every Raspberry Pi individually using PoE, I had to design a power supply schema that could power the fan regardless of the combination of Raspberry Pis installed in the case; it should be enough to have at least one. I decided to use low-drop Schottky diodes combined in an OR-ing circuit. Such a circuit provides power to the load when any source is available without the risk of reverse current flow.

Although it is possible to find 80x80mm 5V fans with PWM support (e.g., NF-A8 5V PWM), I decided to use a 12V version since it is more widely available. I picked MIC2288YD5 to do 5V to 12V conversion; here is the schematics:

To unleash the full potential of my PWM fan, I needed to find a way to control it from my RPIs and, ultimately, from a service running in my Kubernetes cluster. I decided to use EMC2101 from Microchip/SMSC. This IC is a fan controller which allows you to control a 4-pin fan and monitor its speed via the I2C bus supported by Raspberry Pis. It is important to note that EMC2101 comes in two variants, EMC2101 and EMC2101-R, but only EMC2101-R allows you to configure it to start with a 100% duty cycle using a 5.6K pull-up resistor attached to 5V and TACH. The final 3D model of the fan controller:

 

Documentation

  1. Frame panels (drawings, templates for laser cutting)
  2. Case panels (drawings, templates for laser cutting)
  3. PoE assembly (schematics and PCB (EagleCAD), BOM)
  4. Power and I2C rail (schematics and PCB (EagleCAD), BOM)
  5. Fan controller (schematics and PCB (EagleCAD), BOM)

Complete documentation and bills of material can be found on Github.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *