I realized a dream today.
When I was a kid, maybe 8 years old, I would go to the flea market with my parents a couple of times a year. I had a small allowance at the time and would walk around looking for cool things. One time I saw a broken VCR for sale for $5. It was so cool! I asked my mom if I could buy it to take it apart, and soon I was the happy owner of a broken VCR.
When I got home I couldn’t wait to go at it. I sat in the garage with a couple screwdrivers and did my best to dis-assemble the whole thing. I wanted to know how it worked, and what was inside the box.
When I got the lid off, there was this huge green board. It had big knobby things on it, wires plugging in to different sections. A big power cord wire soldered into one side, with some big knobby things next to it… and some motors that I removed and connected to 9V batteries and loved how they whizzed. I tried to figure out how the buttons worked, and what they talked to on the board, but it was very confusing.
I was inspired by that broken VCR. I dreamed about building things like that. Cool green boards with things on them that did things.
My dream was to be an inventor.
That dream stuck with me, hanging around in the background while I went through middle school and high school. I was accepted into the electrical engineering program at Cornell University and ended up with a Masters in Electrical Engineering with a focus on digital signal processing and communication theory.
During this education, I learned about all the parts I saw on the VCR Board, among other things. One of my good friends, Don, actually presented a class project on how VCRs worked, and I finally understood what the functions of the parts on the board were. In other classes I learned about the components, a little about circuit design, both digital and analog. I also learned how to use those circuits by writing low level assembly code and using demo boards from chip manufacturers.
Learning how to code took me in a whole new direction for the next 15-20 years. Until 5 years ago, we installed a little free library near our house.
We were inspired by the communal and creative nature of the Little Free Libraries (LFL). We had started to see them driving through towns, each one different, some big, some small, some extravagantly decorated, some simple Shaker boxes.
When we received ours, Tasha, my wife, who is an artist and decorative painter, worked with our son Olson to paint the LFL and make it look like a Boston brownstone, complete with green tinged copper roofing and brick walls. I contributed some solar panels and a motion activated interior lighting system with off the shelf components to add my touch.
Here’s a video of the LFL with motion activated lighting in action:
At the time I was also reading about mini computers like the Raspberry Pi and Onion Omega2. The potential in these little computers captivated me and started an itch in my brain, a little bit of madness that I wanted to explore. Unlike the circuit boards I learned to code assembly on in college, these are full fledged computers, running Linux, complete with WiFi connectivity, gigabytes of storage, and connections for expansion boards, but only about the size of a credit card.
I’ve been looking for a project to explore using them, and started thinking about ways to incorporate them into our LFL.
Some things I’ve been frustrated about with the motion sensing light system assembled from off the shelf parts were:
- Sometimes the battery would run out
- It’s hard to control the duration the light stays on for
- It lights up during the day when its not needed
- I can’t log in to it 🙁
So I drew out a new design using a Raspberry PI as the heart, a higher power solar panel, and an off the shelf cell phone power bank for the battery. It included sensors to measure power from the solar panels and power used by the system, so the computer could keep track of the battery charge. I started looking at connecting everything and realized there is a lot to figure out, like:
- What sensors to use to measure power coming in from the solar panels and out to the system
- How to convert solar panel voltage to the power bank input power level
- How to switch the lights on and off
- How to tell if it was daytime or nighttime
This was going to take longer than I expected.
What I needed to make, what would make this a super cool project, was if I made a custom circuit board, like that one in the VCR, that did all the things I wanted. To do that I needed to design the system, pick the components, connect them together, and send the design to a factory to make the board.
The problem was… I don’t know how to do that.
I learned what all the parts were in college, and a little about connecting them together, but mostly I learned how to use assembled boards. I never built my own.
So I decided to ask for help. I hired an electrical engineer who designs and builds boards as a business to teach me how. I showed him my crude drawings, and my list of goals for the board, and he was off.
We collaborated on some options, I asked a bunch of questions about how things connected, why certain parts, etc… It brought so many memories back from my days in college, and an amazing feeling of using things I’d learned but never had a chance to apply. Within a week, we had the board designed and an order placed with a board prototyping company.
And I realized, I invented something. Something like that VCR that kicked this whole thing off 36 years ago. That $5 piece of junk kicked off a dream that finally came true.
Now I’m waiting for the boards to show up at my house.
Here’s what they should look like:
When they show my plan is to first test out the board. I’ll connect it to the power bank and the solar panels. Hopefully the power light will turn on… then, I’ll connect it to the Raspberry Pi.
Once I can verify communication between the board and the Pi, I can start writing all the code to run the system:
- Some code to react to sensing motion
- Code that controls when the lights turn on and for how long
- Code to measure power coming in from the solar panels and going out to the system
- Code to connect the LFL to a web server I set up to log all the measurements the sensors were reporting
Then I’ll move the prototype out to our LFL and wire everything up there. Then I’ll be able to log into the PI from my office and make little tweaks, check the battery power level, and continue to enhance the behavior of the system.
And I feel like it’s just the start. I want to keep exploring this space… some ideas:
- Add weather sensors and connect our LFL to Wunderground as a weather station
- Add a door switch to measure when the LFL is used… maybe compare this to traffic in front of the LFL and see if there are patterns
- Add a camera inside the LFL to take pictures of the books and
- Use edge detection to count the books
- Use optical character recognition to identify the books
- Add a speaker to play music / play pranks on innocent passer-bys
- Other stuff!!!
I’m also planning to keep track of all the progress, the design files and share them in a series of tutorial posts. I’m going to call the tutorial site Little Free Pibrary, and offer tutorials and kits and component lists that people can order, or use to guide them in assembling their own. It might be a market size of one, but I think it will be neat.