Starting
a new project can be daunting--especially when the project uses
unfamiliar tools. Such was my experience when I reached out to Dan
Hendricks, CEO of the maker hub Open Source Maker Labs, about letting me
in on a new project, just for the experience. Enthusiastically, Dan
welcomed me into the lab and encouraged me to take part in an internet
of things demonstration for the upcoming North County Mini Maker Faire.
He handed me a small packet of background information on Wireless Sensor
Networks (WSN) and Internet of Things (IoT) and sent me on my way to
pore over it.
WSN and IoT are topics so buzzy and so new that, previous to this experience, I have only heard them in passing at job fairs and snippets on my favorite YouTube videos. What I learned from that packet of information was that Wireless Sensor Networks were groups of strategically placed sensors, called nodes. These nodes can measure temperature, sound, pulse, motion, light, or any other quality of living worth measuring (in a person, a room, a town, the globe, or outer space) and talk to each other wirelessly--bluetooth, wi-fi, radio come to mind--and are monitored by a central node.
There
are many WSN already in place in daily life. For example, many
households already have sets of electronic locks in different doors
throughout their homes that they can monitor wirelessly, and control
wirelessly on their phones. Additionally, cities in the US are moving to
equip solar powered streetlights with heat, sound, and light sensors to
aid in firefighting, peacekeeping, and night safety efforts while
remaining relatively low cost. This network of sensors will send its
data wirelessly, using wireless internet--that’s where the Internet of
Things comes in. More and more tools in our daily lives are becoming
internet capable for our ease, and that idea--that we can have the world
at our fingertips through the internet--is the internet of things.
Fueled by my newfound understanding of WSN and IoT, I got right to work.
Our
project goal was to set up at least three Raspberry Pi boards with
temperature, humidity, and light sensors and place them strategically in
different locations where the measurements would be of interest. We
used the wireless internet capability of the Pis to access the sensed
data remotely in a user friendly dashboard interface. The project
sounded simple enough to me but despite the literature that Dan was so
gracious in gifting me, I had a pretty tough time finding my game plan
for approaching our project. Firstly, I had no first hand experience
with Pis before, all of my interactions were proxied by friends of mine.
Secondly, I didn’t know how to handle the data from the sensors in a
way that resulted with a crisp user interface. Thirdly, our deadline was
4 days away and the idea of not having something to display in time
terrified me!
Unsurprisingly,
the first challenge I had with this project, the unfamiliarity, took
the most effort to overcome. Theo, my project partner, and I spent a
large portion of the first three 10 hour days learning how to install
node-RED (the visual programming software we used) properly onto our
Raspberry Pis. We learned that the versions of the software we were
installing (via unix command-line, mind you) were quite outdated and
there were nuanced unix command combinations and steps that were very
specific to the packages and dependencies we needed to install. For
example, portions of the software would not work unless they were
installed in the proper directories and subdirectories.
The unfamiliarity took another inevitable form in that open source programs, packages, and libraries are changing on a daily basis. Internet contributing programmers frequently update their work, their repositories, and the addresses where they keep their repositories. Code that was useful a week ago might not behave properly today because the required libraries may be newly corrupt, or extinct, or outdated--as was the case with many snippets of code that we tried and failed to get to work. As a result of our efforts to iterate and reiterate steps in installation and programming, we became more familiar of what not to do in our project and consequently learned how to tackle problems related to the project.
I
overcame the second challenge as a result of overcoming the first
challenge. I found most answers while digging deep in the plentiful
knowledge offered by the internet. Theo actually came up with a phrase
he kept handy whenever I asked something neither of us could answer: he
would say the answer was “just a Google search away!” And even then,
once we found answers to methodical issues, we encountered many an
operational limit. Once, one board was processing commands very slowly,
and when we tried to close pages labeled as “unresponsive” to speed up
the process, we got a pop-up saying our unresponsive page was
unresponsive!
In
the end, we set up three wireless sensors: one placed near the
industrial door that is exposed to outdoor conditions, the second one
placed inside the office, and the third by the frequently warm
laser-cutter. We did manage to use the IBM Watson Internet of Things
cloud through Bluemix to visualize the sensors real-time.
Operational
and methodical hurdles aside, I would attribute our timely completion
of our project to our unrelenting efforts: 8-10 hour workdays, pair
programming, frequent communication, and switching tasks when we hit a
wall on a particular task for too long. Additionally, we had loads of
troubleshooting, sanity check, motivation, tools, materials, and
comestible help from Dan, his wife Mary Alice, his son Bryan, and other
members at the Lab. In addition to opening the Lab space for us and
supplying us with equipment, Dan was exceptionally helpful in helping us
see the big picture and offering his wealth of industry experience.
Mary Alice encouraged us frequently and made sure we weren’t hungry.
Bryan was a godsend in helping us discard our failing plans of attack
and finding new sensible ones. It’s help from the community that helps
us do awesome projects like these. All in all, this was a positive and
valuable experience to me and I hope you check out my tutorial in
replicating our work. Visit https://github.com/Joyalegre/OSML-IoT-WNS to take it on yourself!
Shameless Plug: My next project with the OSML is a series of High Altitude Balloon launches with unique payloads and data acquisition setups. This project is part of an initiative to raise funds for College Scholarships for kids who participate in maker projects. For more information, go to the OSML Indiegogo campaign. If you would like to contribute engagement in more projects like these, please consider donating to the cause.