The Crumbling Nerd Barrier of Physical Prototyping
When I tell people that I build physical prototypes (a.k.a things with knobs, displays, and wires, which demonstrate how physical user interfaces of products that are going to get built will work) they usually smile, often sadly, and say: „Yes, but that’s easy for you since you are such a nerd.“
That’s of course a grand misconception. Of me (probably) and the general situation as a whole. People still believe that extensive programming and electrical engineering skills are needed, but that is no longer true. The nerd barrier has been torn down in quite a few places.
In this post, I’ll point to a few things that made physical prototyping available to laymen, such as me.
The Arduino
The first thing on the list is the Arduino. It offered an easy way to program microcontrollers and to access sensors and other electrical components.
(The picture does not show Arduinos but my favorite microprocessor, the ESP8266, basically a WiFi-enabled Arduino.)
The Arduino consortium also shared its designs as open source. A wide range of Arduino clones were created, tailored to fit different purposes. Thus the Arduino became the de facto microcontroller framework for prototyping.
The consortium chose C and C++ as the programming languages for the Arduino (as I mentioned before, not the greatest choice in my opinion) but people have created lots of libraries for the Arduino platform and shared them online.
The Breadboard
The next great invention on my list is the breadboard. It allows you to build electronic circuits without being able to solder. Which was a blessing for me when I started tinkering with electronics.
All you need are a few wires and the electronic components you want to use. And since you don’t solder your components into place it’s easy to alter and iterate your design.
Plus, software like Fritzing can create a circuit diagram out of your breadboard setup and can even turn your circuit into a PCB. (Yes, yes, then we are back to soldering…)
The Raspberry Pi
The third big invention is the Raspberry Pi, a real (micro-) computer. It offers more flexibility and more computing power than the Arduino. It can be programmed in a variety of languages and you can attach hardware just as easily as on the Arduino. You can use it as a web server, as a hotspot, as a media player, as an Alexa, etc. Plus, a lot of these things have already been done with the Pi. Instructions are usually only a google search away.
This power comes, of course, at the price of increased complexity. You must dare to familiarize yourself with a tiny bit of Linux and the command line. But I think the effort is well worth it.
Node-RED
And the last thing I’d like to add to the list is Node-RED, a visual or flow-based programming language. Node-RED makes it easy to build the software side of physical prototypes. Since you only need to connect nodes to create a flow it takes away a lot of complexity associated with „regular“ programming.
The concept of visual programming is not new, take for example LEGO Mindstorms, vvvv, or Scratch.
But several aspects make Node-RED special: It was made for using (The web) and the so-called Internet of Things APIs. It focuses on sending information from A to B, and it reduces the complexity of things like authentication or connecting to services. It is pre-installed on the Raspberry Pi. It is based on Node.js, which is server-side Javascript and quite OK to learn. And, last but not least, it has a built-in web server that you can use.
The great thing about Node-Red is that it offers the right level of abstraction. When building a prototype, the amount of nodes needed is not overwhelming, and I usually only have written a few lines of javascript.
My first project with Node-RED was to port a server that was initially written in Node.js. The server went from 600 lines of javascript down to 10 Node-RED nodes. The new server had the same functionality but the whole program fit on a single page. Bliss.
Take away
I guess my point is, that if you want to get into physical prototyping you can do that without any prior programming or soldering knowledge. The technologies mentioned above make it easy for you to get started.
Plus, you can find any information on hardware components and answers to software questions online. Google and sites like Stackoverflow and GitHub will provide you with the droids information you are looking for.
So give it a spin.
You might be surprised how easy it is.
And let me know how it went.
Update (06/20): I finally took the time to describe how I put these puzzle pieces together and how built my own IoT prototyping platform.