I've been working on a project called Modulo. It's a system of small but powerful electronic components that are easy to use and assemble. Modulo isn't done yet, but I'm ready to share my progress. If it sounds interesting to you I'd love to hear your feedback!

The Problem

Messy Breadboard

Building electronics is hard! There are a TON of things to worry about and coordinate: Datasheets. Fragile breadboard circuits. Soldering and enclosure construction. I could go on and on (and you can read about that here.).

While I admit these can be fun to troubleshoot, more often they just get in the way when trying to get something done. These challenges were a hurdle for me when working on my own projects, and that's what motivated me to create Modulo.

The Goals

I wanted to find a way to make the whole process easier.
Something that—

  • Would make it easy to connect lots of different devices to a computer or microcontroller

  • Would support passing complex data to devices (like sending an image to a display). Not just single values (like getting the value of a potentiometer).

  • Doesn't require worrying about supply voltage levels, bus types and protocols, address conflicts, etc.

  • Would produce a result that feels physically compact and solid and isn't a tangle of wires or cables.

  • Works with different computers and microcontrollers, but isn't tied to one single system (like Arduino shields and Pi hats).

Progress So Far

Fits in the palm of your hand!
Modulo Module
Modulo in use

Modulo consists of a base that holds and connects small modular devices. Currently, the base supports up to 4 devices, but the bases can be daisy chained to increase capacity. It's impossible to connect devices incorrectly and the base holds everything firmly in place. The result feels solid and strong in your hand. The base is about the size of a Raspberry Pi or Arduino Uno--just a bit larger than a credit card.

Communication and API

When building electronics, the physical connections are only half the battle. Communicating and controlling them is often an even greater chore.

I wanted to make that easier too. So, I added a tiny microcontroller to each device that handles the minutiae and communicates only the important information to the controller.

I already have a library for Arduino that makes communicating with the modules easy. And I've written a Python API that makes communicating with the device simple on Mac, Windows, and Linux (including Raspberry Pi).  Early testing with friends tells me that python support is a much-loved feature that helps you make quick progress.

The Devices

The modular design of the base means it's a natural foundation for extension by other little devices. Here are a few other devices I've created:

The Controller

When using it as an Arduino, you can reprogram the controller to do whatever you want. It also breaks out some I/O pins in case you need to interface with something that's not on a module. The I/O pins are also compatible with servo motors. When used with python, the controller handles communication between your Python program (running on a computer) and the other Modulo devices.

The Display

This is a tiny black and white OLED display. It's easy to write text to it and draw shapes. (This is my favorite device. But don't tell the other modules I said that!)

The Knob

This is a combination rotary encoder, push button, and RGB LED. When I first built this one, I wasn't sure if it would prove useful. But it's turned out to be handy for basic input as well as displaying a status using color.

The Motor Driver

This little workhorse can drive up to 1.5A, at up to 60V DC, into any of 4 outputs. Great for driving 4 solenoids, 2 DC motors, or a stepper motor.

The Clock

Most microcontroller boards and single board computers don't include a real time clock, so they can't remember what time it is after losing power. This device has a clock and coin cell battery so projects like an alarm clock or data logger always know the time.

The Thermocouple Interface

This lets you read the temperature from a thermocouple. (Okay, fine—I admit this exists just because I'm doing a project involving a BBQ. But you might use it for measuring the temperature of an oven, kiln, or other high temperature environment).

What's Next?

I'm working on a few new devices (I'll tell you more about that another day!) and a few friends already have some prototype hardware in their hands and are playing around with it to provide feedback. I hope to be able to get this in more people's hands soon, and am working on figuring out how to do that.

What Do You Think?

Are you interested in knowing more about Modulo? Want to help me improve it? Feel free to contact us today.