Chapter 2
Requirements
Before diving into the book’s projects, we need to consider the materials and best practice methodologies we will employ when building the solutions.
A key tenet I practice in this book is for the various projects to be as easy and inexpensive to build as possible. While it may be fun to construct an elaborate Rube Goldberg contraption that costs hundreds of dollars to open a can of soup, it’s far more practical to spend a dollar on a can opener that you can buy from the store. I have tried my best to maximize the value of money and time with each project. As such, few of them should cost more than sixty dollars in parts or take more than an hour to construct.
It’s also good to practice reuse whenever possible. This is far easier for software than for hardware, but it can be done. That is why an inexpensive microcontroller board like the Arduino is at the center of several of these projects.[13] In an effort to save money on the hardware investment, it may be worthwhile to try out one or two projects concurrently and decide which ones make the most positive impact before buying a half dozen Arduino boards. After you have built the projects that you’re most interested in, then build upon them, improve them, and remix them. When you have an especially cool creation, contribute your discoveries to the Programming Your Home book forum.
Most software development projects typically do not require much more than a computer and the choice of language and frameworks the programming logic executes within. But with the addition of hardware sensors, motors, and purpose-built radios and controllers, the design and construction workflow is a little more complex. Essentially, you are building two major components with each project: the physical collection of hardware and the software that will measure, interpret, and act on the data that the hardware collects. Let’s take a look at what comprises these two key development aspects.