I’ve mentioned the term “physical computing stack” in a few Off-The-Shelf Hacker articles over the last couple of years. Intuitively, you’d probably include microcontrollers, some code and a few sensors or output devices in a description. But what does it mean, though? Since I haven’t really offered a definition, this week’s column is an appropriate time to try to remedy that situation.
Start with a Known Stack
Most people in tech are familiar with the notion of a software stack. A stack is a collection of programs that are used together to perform a function. A great example is LAMP, whose components traditionally include Linux, the Apache web server, the MySQL database and the PHP programming language (Hence the acronym). The LAMP stack has been around for a long time and is used to build integrated, easy-to-maintain websites. Linux runs the server machine, Apache serves the web pages, MySQL handles the database back-end for the content on the pages and PHP is used to post the application to a browser.
Besides a software stack, there are also other types in the technology sector. How about a marketing technology stack or a protocol stack. There’s even a website that summarizes the various stacks used by different major-name companies use.
Another example is a developer stack. These are layers of software tools used to build applications. Old school programmers will recognize the combination of the Linux command line, the vi editor, the C compiler and make as a developer stack. You’d use the vi editor from the Linux command line to write your C program code. The C compiler reads the C source code and then builds the machine code that will run the application. make helps automate building all the bits and pieces into a working program, when the project gets bigger than a few dozen lines or has a bunch of source files and libraries. Again, it’s a stack that’s a bit abstract and exists as code.
The physical computing stack reaches out beyond the code and becomes a tangible project or product that you can touch, see, feel and perhaps even pick up with your hands.
Obvious Physical Computing Components
Break an Arduino or Raspberry Pi project down into it’s component parts and you’ll have a list that likely includes the following.
- Sensors or Input Devices
- Actuators or Output Devices
You might have a Python program that runs under Linux on a Raspberry Pi and uses a digital thermometer to sense the ambient room temperature. When the room becomes too warm, the Pi lights up a red LED on your desk. At the same time, the Pi will send a command to the air conditioning controller, over WiFi to cool the room down a bit. Your little red LED might be hooked up to an ESP8266 based indicator module whose firmware receives the high temperature indication from the Raspberry Pi.
But there’s more.
Jumping from the abstract world of code into dealing with physical parts is a challenge for a lot of people. Software developers, programmers and so on typically aren’t familiar with mechanical and electrical engineering topics. These things just haven’t been their focus. It’s not a cut or meant to slight these experts awesome accomplishments.
Similarly, beginning physical computing practitioners usually focus on the breadboard, microcontroller and perhaps some code for the firmware, because that’s the basics. After a while, they realize that engineering functions are important and have to be addressed to be able to create and actually build useful, practical, literally hands-on projects.
Check this little list:
- User Interfaces
- Pneumatics and Large Electric Motors
For example, to raise a robotic skull out of its carrying case might require a microcontroller moving an arm with an electric motor. A couple of limit switches make sure the motor doesn’t push the arm too far one way or the other. The arm might need the mechanical advantage of a power screw because the smallish motor has to fit into the carrying case space. We’d have to use a 3-amp wall wart because the arm motor draws quite a bit of current. Add to this a cool application on a smart phone (with an equally cool user interface) that works over the cellular network and you start to get a feeling for the complexity of the physical computing stack.
Take a look at the Ripsaw. It’s a small (9000 lbs.), extreme performance, off-road, remotely-operated development vehicle that uses a turbocharged Diesel engine, dual tracks, micro-controllers, radio control and a bad attitude to tear up military proving grounds. Talk about your physical computing stack.
There’s more still.
Seemingly Unrelated Parts
Designing our physical computing stack projects using microcontrollers, mechanisms, electronics, radios and air pistons is getting complicated. We also have to be able to fabricate parts and make the finished product look great. These are things to consider in this modern day, high-tech stack.
Here’s a list you probably wouldn’t think about right away that figure prominently into the physical computing stack. They matter and are what take the budding physical computing stack commando beyond the breadboard and lighting an LED stage.
- Manufacturing Processes
You’ll need a soldering iron and solder to connect the electronic components together. It would be nice to have some interesting and appropriate labeling on the outside of our robotic skull carry case. The skull might also use a steampunk-themed paint job to attract attention. Certainly, a robotic skull should be able to be programmed from a mobile app on your smart phone. So there’s that.
A while back a conference organizer wanted to know if I could produce a workshop for building steampunk conference badges. The cost layer of the stack for the project proved to be too high. My low-volume, high labor-cost custom fabrication processes were such that I simply couldn’t offer the project at an acceptable rate per badge.
I haven’t added up the parts, programming and fabrication pricing for the robotic skull project yet. Yikes!
It’s the Best Day Ever
Building physical computing stack projects can be dauntingly complex. I’ve only briefly touched the high points today. Actually jumping in and doing projects are time consuming, technically challenging and expensive. Nobody has figured out how to scale this stuff, just yet.
That’s why it takes tons of imagination, drive and motivation to get into the field.
The good news is that there’s a lot of satisfaction with taking a pile of parts, a blank sheet of paper and making an interesting computer-controlled gizmo that does something useful. There’s certainly room for trail-blazers, eccentrics and crazy, unreasonable inventors.
Or somebody who simply wants a fun personal hobby… for now.