VOISS - Enclosures

Written by Rich Morin.

Contents: (hide) (show)

Path:  AreasContentOverviews

Precis:  thoughts on tall, modular enclosures for VOISS systems

Note: As of early 2020, the VOISS project and F123Light were discontinued. For details, see VOISS - Status.

This page presents some thoughts on tall, modular enclosures for VOISS systems.


The design of the VOISS Classic is strongly motivated by the desire to use commodity (i.e., economical and readily available) components that can be assembled and maintained by a blind user. So, for example, it uses a very basic enclosure, just tall enough to hold a Raspberry Pi (RasPi) 3B+. This type of enclosure is fine for VOISS’s default use case, but it has no way to accommodate Hardware Attached on Top boards (HATs) and related components (e.g., sockets, switches).

My initial motivation was to find a convenient way to enclose some form of Power HAT, in order to free VOISS users from unexpected power outages. However, there are a large number of other HATs that an adventurous user might wish to add. For example, there are HATs that contain a variety of interesting sensors (e.g., accelerometer, compass, GPS receiver, gyroscope). And, of course, some users will want their RasPi to wear multiple HATs.

Each HAT will have some number of hardware interfaces, with various locations and shapes. No single case design can accommodate all of these variations, let alone the inevitable combinations. Clearly, this limitation is relevant to both sighted and blind users: Anyone who adds hardware to a portable system is likely to want a way to enclose the result. So, in the spirit of inclusive design, we’ll try to serve the needs of blind users first, but bear in mind that others may like our results, as well.


Many of our criteria are commonplace, with the proviso that they must apply to blind users. The enclosure should be:

However, we also want to add a few extra criteria. To accommodate our desire to handle additional hardware, we want the enclosure to be easy and flexible to extend. To encourage uptake and innovation, we want the design to be open, freely redistributable, etc. These give rise to some secondary criteria, such as modularity, open standards and tooling, etc.


I have a small assortment of RasPi enclosures and I have also examined a variety of designs on vendors’ web pages. The most promising of these enclosures, for my purposes, seems to be the ModMyPi Case, sold by the Pi Hut for $8. The ModMyPi is light, robust, and nicely modular. Its design seems very careful and well-considered, taking into account the capabilities and constraints of injection molding.

The case consists of a rounded rectangular base and lid, with holes for all of the normal interfaces. Sets of mounting screws and corresponding tubes (one at each corner) serve to hold the enclosure together and provide a great deal of rigidity. The mounting tubes in the lid are closed at the top and slightly smaller in diameter than the ones in the base and spacers. However, it is easy to drill these out, allowing the use of thin (e.g., 4-40) bolts or pieces of threaded stock. Long, thin bolts can be hard to find, but here are some possibilities:

Default Spacers

The ModMyPi’s default mechanism for expansion is the 10mm Spacer ($5 for 2). The spacer design has a number of interesting features:

Using the 10 mm spacers, the case can be extended by anyone with the necessary dexterity and hand tools (e.g., drills, files, screwdrivers). Just get the requisite number of spacers and screws, then make holes for all of the interfaces of interest.

Note: When one or more spacers is added, the length of the mounting screws must be increased. The Pi Hut sells sets of screws in appropriate-length sets. So, if you are adding two 10-cm spacers, you’ll want to get screws that are 20 cm longer than the default. Experimenters won’t know what combination of HATs they may be using, so they should probably buy sets in a few lengths. Convenience aside, Pi Hut’s shipping costs are substantial, so ordering a few extras makes sense…

Issues and Answers

One issue, which others have noted on the product web page, is that the spacers are only available in a fixed height. So, their vertical spacing may not match that needed for a HAT. One possible workaround is to use somewhat longer standoffs to mount the HAT (just enough to let its interfaces clear the spacer’s bottom ridge). That said, I’d like to see the Pi Hut offer some other spacer heights (e.g., 15 and 20 mm).

Another issue is that using drills and files may be anything from an inconvenience to an impassible barrier, depending on the user’s situation. Scalability is also an issue: hand-editing a single spacer might not be much of a challenge, but creating dozens of spacers that way could get tiresome, at best. So, some friends and I are considering how to fabricate semi-custom spacers, based on open source specification files.

Design Goals

Clearly, our spacers should be compatible with the ModMyPi. However, that doesn’t mean that they can or should be identical to the ones produced by the Pi Hut. Here are some of the differences that I currently expect.

The bumps and ridges are intended to provide both tactile and visual cues, helping the user to position holes along the length of a side. Of course, if the spacer already has the needed holes, these can be ignored or even omitted.

Design Process

3D printing can be used to replicate, albeit coarsely, most of the results available from injection molding. So, using any desired materials and tooling, we can prototype and eveluate spacer designs. The resulting items don’t need to be “production quality”, as long as they can be evaluated for compatibility and robustness.

Once we have an acceptable design, we can convert it into a parameterized template file. The Golden Path for this seems to be OpenSCAD, a popular, text-based design tool. Once we can replicate the prototype design using OpenSCAD, we can figure out ways to parameterize the height of the spacer, define additional holes and notches, etc.

Note: OpenSCAD has the ability to define modules and functions. So, for example, the spacer height could be defined by a hard-coded s_height() function. Adding holes and notches might be added via a post-processing function. Stay tuned…


If the user has access to a 3D printer, s/he might be able to produce the spacers on it. Alternatively, there are various service bureaus that do 3D printing. And, if cost isn’t a strong consideration, use of a composite material such as Markforged Onyx could increase the robustness markedly (e.g., be 40% stiffer).

To be continued …