It has been a long time since I tried building anything. Like, in the real world. When I was a kid that was nearly all I did for fun. Legos, Erector sets, and whatever was on/under dad’s workbench. Most of it was powered by imagination rather than actually doing anything useful, but it was always fun.
As a kid, I had naturally thought that I would become an engineer in one of the more traditional disciplines like mechanical or electrical, but then I discovered an interest in computing. Suddenly building things became much more abstract, putting together ideas with code. It is no less challenging but everything is theoretical.
So what seems like a lifetime later, I was delighted to have an idea for a small personal project that extended into the analog world. I have long loved lighting. As a kid I could stare at our family Christmas tree endlessly in the evening, observing the effects of light and shadow on the branches and needles of the tree. Static light was interesting, but not dynamic. And blinking lights were attention-grabbing, but monotonous. What I thought was cool was light triggered by something.
Years ago Elise got a bag full of old glass telephone line insulators from her grandfather who had collected them over the years. I have always loved the look of these antiquated objects of beautiful blue-green glass. They have for years lined the ledge that runs the length of one of our stairways. They are pretty and interesting enough on their own, but what if they lit up? And what if they lit up in sequence as someone started walking up or down the stairs?
So I had an idea for a small project in the real world and in the spirit of so many flights of fancy of youth, it was not really practical, but at least it would do something.
Lighting has become much easier with the advent of effective, cheap LEDs. It is also so much safer for a person like me who really have no idea what he is doing to be playing with 5V or less rather than 220. It would be easy enough to wire up a few LEDs and connect them to a couple of AA batteries, but that would be boring.
I figured that since all I wanted to do was light them sequentially based on some kind of trigger I could probably do it all with discrete components, but using an Arduino seemed simpler and more flexible should I want to change things. Getting a sequence of LEDs lit on a breadboard was trivial.
But how to trigger? Today you can buy lasers and motion sensors as complete modules that readily plug into an Arduino or Raspberry Pi. But since I was tickling a fancy of my youth, I wanted a simpler solution. Growing up, IR beam interruption was the solution when something needed to be triggered in the real world long before lasers or motion sensors were affordable, much less practically packaged. And there is a great little library already available for generating IR pulses and detecting them for the Arduino created by Ken Sheriff. A little more fiddling and I had everything laid out on a breadboard: my row of LEDs, two emitter/sensor pairs (one for the top step and one of the bottom step), and two status indicators. And it worked! If I interrupted one pair, the status LED would light as the LEDs lit in sequence. If I interrupted the other pair, the other indicator would light and the LEDs would be lit in the opposite sequence. Almost done!
Then I had to solder. I had completely forgotten how complicated things become when you try to bring your ideas into the analog / physical / real world. Here are some lessons learned.
Measure twice, cut once
It was immediately clear that I would need to carefully measure the layout of my lights so that the wiring would be the proper length. I wrote everything down and even made a diagram so that I would not forget anything.
It was only when I had everything wired up and working when I thought that the distances between the lights seemed a little small. Yeah, they were. Either I had written the length down incorrectly or just screwed up. Either way, I lost hours cutting and splicing in more wire.
Check your numbers. Always.
Wires add up
I needed to drive five LEDs independently so that was six wires including a common ground. Even seemingly small gauge wires will add up quickly as you need to add components and connections. It can soon be difficult to tuck away a half-centimeter bundle of wires.
In the end, I used some old cable tunnel to manage the thick bundle of wires that I ended up with.
If you don’t have a handle on the scale of your components, physically try it out before you take it for granted in your plans.
You can’t download parts
On a software project, if you forget to include a library or realize that you need some kind of helper function, you can always add a new npm dependency or import a new library in your header file.
If you are actually building a physical thing and it turns out that you forgot something or realize that you need a different or new component after you have started building, you are stuck until you get that new component.
I had ordered one extra of everything so in case I broke something, I would have a spare on hand. However I forgot to carefully count how many pin headers I would need thinking that I had „a bunch“ on hand and that would be enough. It is frustrating to have your project stuck while waiting for a shipment from your electronics supplier of a component that costs a fraction of a cent.
Plan for things to take longer than you think. Your BOM is not complete until after you have your project working because you only know then that you haven’t forgotten anything.
Mounting is a thing
Depending on how you want to use what you are building, it is rarely enough to just get it working on the workbench. It has to be placed where it will be needed and usually mounted in/on something.
I had thought that the emitters and sensors could be tucked under the lip of the steps. However in the real world there was not much room under the steps so they had to jut out conspicuously. Also, I hadn‘t counted on the amount of ambient light. In the end, the emitters were not strong enough to produce a steady beam across the steps even though it worked fine on the workbench. Even if the beam had been intense enough I also learned that keeping the emitter and collector aligned properly was much finickier than I had anticipated. Considering we go up and down the steps countless times every day, the likelihood that they are kicked and jostled out off alignment was almost guaranteed. In the end, I relented and just bought two small IR motion sensors. These could be tucked neatly into the corner of the steps with suitable mounting brackets and have their sensitivities adjusted as required.
Count on mounting/installing your project to take nearly as long as putting it together. Not only can it be physically challenging to integrate it into its environment, but the environment itself can introduce unforeseen variables, breaking your project.
In the end, I got everything working. Even if it took MUCH longer than I ever thought to bring this little project across the finish line, I am delighted by the results. Every time I go up the stairs.