This is the favorite hackathon project that I’ve ever worked on. Modware contains a fairly complicated vertical stack that required a lot of handshaking between our components and also presented tons of technical challenges. To top it off, it involved a lot of hardware as well software to be worked on to make our original idea actually come to life.

If you are interested, you can visit the Devpost page of Modware here.

Our Original Idea

The idea for Modware was to create a hardware prototyping platform for software developers that didn’t know much about how hardware works. Everyone on my hackathon team enjoyed working with hardware so we wanted to create something that allowed anyone with software skills to also work with hardware.

Here is a YouTube video from PennApps of our demo which goes over most of the high level aspects of our project. Audio only comes out of one ear unfortunately.

The central idea is basically to have a “bread board” as a base board that a user can attach modules to. These modules could be LEDs, switches, knobs, etc. These modules attached via magnetic pins, that were wired to provide power and communication to the modules from the base board. Once plugged in, the user can use our desktop app to create an API link that a software developer can call from their web application to interact with the hardware components on the base board.

top_view This is how the entire thing looked from above. Top left is an LED, top right is a knob, and bottom is a slider

Technical Challenges

The main challenge for this project, at least for what I was working on, was actually a mechanical challenge. We wanted to use magnetic pins to connect modules to the base board so that a user can place the modules anywhere. Unfortunately, magnets slowly lose their magnetism when you heat them up so we had to solder wires to them very quickly and cool them off. The magnets also needed to be oriented really precisely because if there wasn’t a tight connection between two magnets, a current wouldn’t flow through the wires very easily.

Another challenge was the fact that all of the individual components of this project were wireless which presented two distinct problems: the modules couldn’t tell where they were, and there was a lot of lag between actions.

Let’s start with the first problem. Since we were using magnets to allow for the modules to be placed on the base board anywhere. However, in our UI we wanted to place the modules visually in the correct place. In order to work around this, we had the module do a voltage check at its current location and put in a 9 stage voltage divider into the base board with some resistors we found laying around. This way, the module can figure out which voltage it is sitting at and then wirelessly communicate its position back to the base board, which then communicates that information to the desktop application for the user.

ui The UI that the user interacted with. Here an LED is linked with a knob

The other problem was the lag. Unfortunately for the final demo the lag was still not that great. However, we messed around a lot with exactly how little information we could send around in order to accomplish our goals. First of all, a lot of our information was wrapped in JSON files since that’s how most standard APIs communicated. Instead of using JSON files, we ended up serializing our data and using precise bit width measurements to reconstruct the data on the receiving end. We also serialized parameter flags to allow for more dynamic data transfers. By really paring down on how much total data we flying around in our system, we cut the lag significantly.

Working Through the Night

We had a huge hackathon project ahead of us. To maximize our total up time, we basically had a strict rotation for sleeping. Since PennApps is a 36 hour long hackathon, it’s impossible to stay awake that entire duration and be remotely productive. We also know that having only one person stay awake didn’t work since they’d feel extremely unmotivated.

I actually ended up getting a solid amount of sleep during this hackathon. By rotating our sleep timings, my team was pretty much constantly making some sort of progress during the entire 36 hour period. And best of all I didn’t feel like death the following Monday.

wiring Some of the wiring we had to do for the base board

Prizes

This was one of my favorite projects and I think one of the best hackathon projects that I have ever worked on. Everyone else seemed to think so as well. The judges during all of the judging rounds asked a lot of interesting questions. As usual, we had an entire presentation planned out and had anticipated a lot of the common questions. Since this system wasn’t just a pretty frontend with a messed up backend, we could answer and discuss plenty of the gory technical details.

In the end we came out of this hackathon with: 2nd Place, Hacker’s Choice Award, Best Hardware Hack, and Best IoT Hack.