Written by: Anna Verkhovskaya
Preface: Huge thank you to Charles Holtforster, Ravi Rahman, Will Clark, Sanjeevani Lakshivarahan, Advait Maybhate, Kristine Clarin, Winny Yang, and Anton Chow for their input on this article! It was a group effort.
This is a list of tips and tricks that I’ve learned over my years as a hardware hacker. I’ve been to hackathons all across North America and Europe, succeeding at some (notably, finalist at TreeHacks and 2nd place overall at MakeMIT¹), and failing spectacularly at countless others. I hope this list will help you succeed with your own hardware adventures — because that’s what a hardware project is… an adventure!
Note: This is not an intro article for beginner hardware hackers — if that describes you, I suggest also reading through some of the tutorials at https://learn.adafruit.com/guides/beginner and https://www.sparkfun.com/tutorials/.
The single most important point: hot glue.
My fellow hardware fanatic friends think I’m a heathen, but the secret to a successful hackathon hardware project is as follows: hot glue. Hot gluing your wires to the breadboard will keep them from slipping out in the middle of a demo.
Avoid soldering, prepare materials ahead of time.
Try to avoid soldering during an event, as it’s time consuming, and it’s often difficult to get access to a soldering iron. Ideally, pre-solder header pins onto all of your parts, then use wires, breadboards (and hot glue!) to attach everything. Alternatively, use plug-in components, such as the Arduino 101 and I2C sensors, or attach things using terminal blocks.
Hackathon wifi can be unstable.
You don’t want to rely on hackathon wifi for big downloads, so download any drivers or similar software before the event. If you’re planning to use a Raspberry Pi, make sure you have the operating system installed and tested ahead of time.
If possible, bring your own hardware and equipment.
If you rely on a hackathon’s hardware desk for everything, Murphy’s law will come into play and they’ll often be missing some critical component.
- Corollary 1: This year, due to COVID-19, hackathons aren’t running a hardware desk anyways, so this is a moot point.
- Corollary 2: The Hack the North team is working on RoboNest, a system that lets hackers pre-order hardware. Once that’s live and rolled out to other hackathons, out-of-stock components at hardware desks will hopefully start being less of an issue.
Hardware projects need a surprising amount of software skill.
The best hardware projects are typically 1/3 hardware and 2/3 software — choose your team accordingly. Often, a very simple sensor and/or motor system with a clever software use-case is what ends up winning (example A: annav.ca/3draw, example B: annav.ca/pinata).
Plan your project as a series of unique stages.
Because there is a hard time limit, it’s best to work on a project in stages, where each stage leads to a somewhat demo-able project. For example, get your motors running before trying to make your system wireless. This way, you can abandon later stages when you find yourself running out of time.
Debug problems step by step.
Hardware runs on magical blue smoke. You know this is true because when you destroy a piece of hardware, the magical blue smoke escapes ;). In general, when something isn’t working, try the following:
Step 1: Check for heat (or worst case scenario, smoke or burn marks). If something is heating up, you know it’s wired wrong. If it caught fire, it will need to be replaced.
Step 2: Check for poor connections. In most cases, this is the issue. Sometimes this is a loose wire, but it can also be a terminal block that is biting into a wire’s plastic shielding, or a USB cable that only has the ground and 5V lines, and no data lines — this is surprisingly common. If you just can’t seem to connect to your microcontroller from your laptop, it’s probably due to a bad USB cable. Also note that microUSB ports on Arduinos can be surprisingly fragile, so be careful with them.
Step 3: Go step by step, and verify that every component is behaving as expected. Is your laptop sending serial commands? Are these serial commands getting received by the Arduino? After getting a command, does the Arduino send out the correct motor control signals? Is the motor wired correctly to the motor driver? Any failing step in the chain will create a motor that doesn’t spin. Don’t forget about built in LED outputs! Most microcontrollers have these, and they’re great for debugging in a pinch.
Aim to learn something new every hackathon.
Try out some new technology every time you go to a hackathon — whether it’s motors, bluetooth, whatever. This will lead to more failed projects at the start, but over time you’ll learn and become capable of more and more impressive projects.
Best of luck! While hardware projects are tricky, and often… encounter difficulties*, there’s nothing quite like the feeling of successfully demoing something you literally built.
 Anecdote: At MakeMIT 2019, more than half of the finalist projects failed on stage… it was awesome.