Today I would like to facility automation here at the shopstead. I have a long, and ever growing, list of projects that involve sensing, monitoring and interacting with my environment. If you have a similar list I hope you will stick around here in the forums and share some of them. I’m fascinated by the idea of using technology, not to escape from the world, but to better understand, and become even more connected with the processes of the natural world around me.
Today, there are a myriad of home automation gadgets and various competing systems vying for market share. However, I’m going to take a big step back from all of those and develop my own system. Not because I want some kind of unique proprietary system… No, precisely the opposite. I want a simple system we can all understand, participate in, and use as a foundation for supporting our own unique builds.
Confession time. I’ve never been okay with black boxes and the teacher who said, “Just use this formula and it will work.” I want to know what’s inside the black box, how it works, what happens if I change something, do I understand it well enough to recreated it from scratch, why is it that way. I want to peer a bit behind the curtain so I can really understand and tinker with things.
Having written that, I think it’s an excellent summary of what I want to explore with this BLOG. If you’re that inventor, maker, tinkerer, citizen scientist type that likes, or maybe I should say, needs to know how things work so you can explore your own ideas and variations, I hope you’ll join in the conversation!
Now, back to fleshing out our automation system. Since we’re starting with very little in the way of a preconceived structure, it might be good to establish some basic tenets. When it comes to talking about this sort of thing I’m a big fan of analogies.
For this particular exercise, I like two analogies to frame the conversation. This is where the moon base comes in. First, I’d like to envision our proposed system as being used for the command and control of a moon base, a spacecraft, or if you prefer something a bit more down to earth, a remote outpost or self contained vessel like a ship or submarine. Second, and this may sound a bit strange, I also like to think of it as a living organism.
Now, feel free to tweak these images to match your own situation but in my case I’m envisioning our shopstead here as a remote research outpost in the desert region of our planet,
or alternatively when it suits the point at hand, I think of it as the inner workings of a living beast that has adapted to thriving in harmony with it’s environment here in the high desert.
With those images in mind, let’s dive in and establish 4 simple tenets.
(1) Strive for Autonomous Operation: As a remote outpost or lone desert dwelling beast we want to be relatively autonomous. There are, of course, required interactions with the outside world but we want to maximize our independence. Having some remote cloud based system doing our heaving lifting and controlling our communications is out. If possible, get our data from first sources. The national news may call for sunshine in our area but if our beast is dripping wet let’s assume it’s raining. After all, we don’t want our proud beast to be some pet trapped in the fat folds of a drooling, Jabba the Hutt like multinational corporation!
(2) Use Open, Standards Based Systems: First, if our remote outpost, ship or moon base needs repair or improvement we want access to readily available parts, a good understanding of how they work and plenty of folks with the skills and knowledge to work on these systems. Second, if a bright artist, engineer or scientist wants to add a new sensor, actuator or code they are free to have at it, even if there is zero market or interest for their creation from the outside. Consider the G-Code standard underlying the many of the world’s CNC machines from mills and lathes to robots, routers and 3D printers. Having a defined standard allows everyone to build on, and play off of, one another. Older machines are happily churning our parts running G-Code that was generated from the latest 3D modeling and CAM programs like Fusion 360.
(3) Minimize Duplicated Complexity and Resources: Don’t add silly things like an extra eye on the end of our beast’s toe to look for rocks. An eye that requires it’s own little heart to power it and a tiny mouth to shout out to a specialized ear that listens only to that tiny mouth. Okay, that sounds ridiculous but it’s why these analogies are helpful. It’s sounds ridiculous but to me it sounds a lot like buying an aftermarket sensor, powered by it’s own battery, with WiFi to shout a proprietary language that requires yet another specialized ear, ahem, I mean app on our phone to listen for it. By keeping in mind the whole system, we can avoid this duplication of complexity and resources. If our beast has eyes and a heart let’s use them for all sorts of things! For example if we have one light sensor in the system, when that sensor lets us know it’s dark we can close the chicken coop, turn on the outdoor path lights, water the plants,… whatever we need to do when it gets dark. By the same token if we have one accurate clock in the system we can grab the time from it to display in multiple rooms, trigger timed events, track satellites… and the list goes on.
(4) Program at the System Level: This is a bit of elaboration on the idea of minimizing duplicated complexity and resources when it comes to our beast’s brain. If we map this brain analogy to our digital system, we might argue that modern computer brains, microprocessors, WiFi chips, etc. are cheap, powerful, and low energy so why not put big fat brains in every limb of our beast or every corner of our facility. Simply, because I want to train one smart beast, not keep up with a giant herd of brilliant cats! I’m going with evolutionary biology on this one. Lots of simple nerves, connected through a central nervous system to one brain works for me. If I dream up a new sensor, actuator or application I don’t want build a new brain every time. I just want to add a few new nerves and then use the existing brain to see how many interesting things I can accomplish with these new senses or the twitch of these new muscles.
That was some good fun with mental imagery but I don’t want to close out this BLOG without getting into some of the hands on details to give you a preview of next week and future BLOG entries.
First, when it comes to being autonomous. Here’s the elephant in the room. Modern cloud based systems with A.I. back ends for prediction, voice recognition, image recognition, translation and so on, are the logical extension of our proposed system. They take it to an even grander level by putting the brain in the cloud and we, our cars and homes become the smart sensors. I suppose we could just hang on to that beast, sit back, and see where it takes us. Where’s the fun and learning in that. Besides, it sounds a little scary. For now, I want my little facility to remain part of the Rebel Fleet. Shop dog Roxy and I are not quite ready to join the Federation yet.
Second, regarding the use of open standards based systems, we will be using microcontroller boards that are compatible with the Arduino environment, Raspberry Pi’s running Linux and we will be linking them up with simple robust power sources, standard serial buses like RS485, and running simple tried and true standard protocols like Modbus and MQTT.
Third, we will try to keep duplication and complexity to a minimum, by pushing them upstream. With one just one power source and one Raspberry Pi as a brain, we will be able to go off and interconnect all sorts of sensors, displays, actuators, and interfaces to create a unique facility control, art installation, or any other interesting beast of our choosing.
Fourth, with the programming done at the system level, it gets really fun. Remember the buttons are just inputs, buzzers are just buzzers, and displays are just displays. The smarts, the logic of our whole facility lives at the top. Using tools like NodeRED, if we find that the button ringing the doorbell and the display showing the temperature gets boring, with a quick change out of the program that same button can be used for playing tetris on the display across the room and the doorbell can ring when we achieve a new level!
In the next BLOG we will tackle getting started with the Arduino and some simple electronics. You will probably have dreamed up 10 new projects by then!