The surge in at-home manufacturing over the past five to ten years has been extreme, with everyone and their mother attempting to miniaturize and simplify industrial manufacturing machines for home use. MakerBot famously spurred on the wave of consumer-grade 3D printers, resulting in hundreds of Kickstarter projects populating the early-adopter market. Anyone that wants a 3D printer can purchase a solid, reliable machine for only a couple hundred bucks nowadays. Other companies such as Inventables, Glowforge, and Wazer are finding ways to produce CNCs, laser cutters, and water jets respectively at a more economical and accessible price.
A similar trend in accessibility is notable with hobbiest electronics as well. Companies such as Adafruit and Sparkfun are “modulizing” electronic functions. Instead of having to create an entire circuit from scratch to develop a proof of concept, $19.95 and next-day shipping will get you a module that takes care of the hard stuff. Just wire into your microcontroller with I2C, use the provided library, and you’re off to the races.
And that’s just the hardware side of things! The nigh unlimited number of open-source software projects saves prototypers years of software development. OpenCV is one of my favorite examples of this. There exists a fully-featured machine vision framework that anyone with a moderate understanding of programming can dive into and give their widget intelligent sight.
In some ways, I believe this is arguably a step in the wrong direction. It promotes a shallower understanding of the technology being used in pursuit of simplicity and ease of use. The more plug and play it is, the less you understand what’s going on under the hood. But if your job is to test quickly, identify what is feasible, and make it look and feel gorgeous, you don’t want to get into the nitty-gritty. You just want to make a proof of concept. A production level of specialized knowledge in every relevant engineering topic is not reasonable to expect from one single person.
Handling and understanding the nitty-gritty is the job of a developer that specializes in one engineering practice. A quick hack job of a minimum viable product is passable for testing, but for a production unit, true engineering practices must be implemented. Designing a custom PCB, creating parts designed for injection molding — these things all require specialized knowledge in each of their fields. This is not to say that prototyping techniques don’t help developers. Many products in production utilize open-source libraries, or borrow circuit design from an Adafruit module. But ultimately, it’s the developers that need to know what’s going on under the hood, not the prototypers.
Throughout my time building proof of concept units, a few prototyping tools have stood out to me as being critical to my success:
1. 3D Printing / Excellent CAD Software
This one’s a no-brainer. And the real hero of this pair is CAD. Having solid 3D design software that you’re comfortable using and won’t get in the way of your design process is crucial. When you’re trying to build quickly, the last thing you want is a lack of good software design being your bottleneck. The job of these tools is to hinder the creative process in as few ways as possible.
I recommend Autodesk Fusion 360, for a multitude of reasons. It runs on PC and Mac, and stores designs in the cloud so collaboration is all in real time and trivially easy across platforms. The user interface is clean and understandable, especially for beginners, but also has many complex features for advanced users. The built-in rendering isn’t the best, but really convenient for getting a quick, pretty image of a part. Fusion also has built-in toolpath generation, and temperature and stress simulations, which I haven’t personally used, but have heard are fantastic features. Updates are released regularly with many new features, almost always sourced from interactions with users in the Autodesk forums. It’s a quick moving, fully-functional CAD suite that’s free for students.
Of course the other half of this marriage is the printer itself. Most on the market today will give exceptional results if tuned properly, but printers from Lulzbot and Prusa Research are sure-fire wins. I’ve had a Lulzbot Taz 5for a year and a half now, and I have only good things to say about it.
2. Module-Based Electronics
The central nervous system of your widget, silicon is getting increasingly more accessible due to the aforementioned modulization movement. Standardized communication protocols such as I2C, SPI, USB, and Serial in conjunction with libraries provided by the manufacturer help make modules easier to interface with each other, especially with an Arduino-style microcontroller at the core.
These modules can do just about anything you could expect from your widget. They act as the interface to the outside world, gathering data or displaying it. They act as Human Machine Interfaces (HMIs) and allow different kinds of interaction with the user.
This could arguably be another similar language, but I think Python really nails the essence of prototyping. The first argument for this is Python’s syntax. In many situations, Python can read very close to plain english. This lowers the bar for entry in terms of comprehension by a significant degree. When even a beginner can look at some code and immediately understand what it does, you’re removing barriers to creativity and getting out of the way of the prototyping process. Plus, being cross-platform doesn’t hurt.
The truly significant reason why I believe Python is critical to prototyping is the absurdly large number of libraries available to help you accomplish almost anything you could imagine with the language. The excellent documentation that goes along with most of these repositories makes them simple to implement, and keeps you moving. The vibrant community constantly developing tools for anyone to implement with Python make it an incredible tool for any prototyper to utilize.
4. Wait, why not ___?
CNCs? Laser cutters? Hell, sewing machines? The reason I picked what I picked is because all of those tools move an aspect of prototyping from “prohibitive” to “accessible.” I can still sew with a needle and thread. It might take me longer than it would with a sewing machine, but it’s still doable. Same goes for a CNC and laser cutter. They are tools that just make an already accessible task a bit easier. But if I didn’t have a 3D printer, the only way I could make the part I needed was to get it injection molded, or custom-machined, which is prohibitively expensive. Module-based electronics are similar, but with time as opposed to money. Understanding enough about electronics to design the functionality of all the required modules and combine them would take a prohibitively long amount of time, especially in a prototyping setting. Not the difference between 20 minutes of using a CNC versus an hour with a jigsaw, but the difference between an afternoon of connecting modules versus years and years of studying and learning about the fundamentals of electrical engineering. And in the same vein, python (and its all-encompassing array of libraries) reduces the development time of software from a prohibitive amount of time, to an accessible one. These three are game-changers, not time-savers.