It's been a tough, stressful, but certainly fun three months competing in this challenge. As if the challenge itself wasn't challenging enough, I also moved house halfway the challenge. Though the move was more time consuming than originally anticipated, I managed to complete most of the objectives I had set originally.
This is my final post for element14's Pi IoT Design Challenge, summarising and demonstrating my project builds.
Following features were implemented, making several rooms smarter:
- configuration management
- contact (doors or windows)
- key presence
- [Pi IoT] Alarm Clock #03: Puppet
- [Pi IoT] Alarm Clock #04: Installing OpenHAB With Puppet
- [Pi IoT] Alarm Clock #05: EnOcean Pi and Sensors
- [Pi IoT] Alarm Clock #08: IoT Tower Light
- [Pi IoT] Alarm Clock #09: Philips Hue
Unfortunately I couldn't crack the code of my domotics installation yet, but help seems to be on the way.
To accommodate all of the above mentioned features, five different devices were created:
- a smart alarm clock
- a touch enabled control unit
- a smart key holder
- two IP cameras
- a energy monitor
The energy monitoring device makes use of an open source add-on board for the Raspberry Pi, called emonPi. Using clamps, it is able to measure the current passing through a conductor and convert it in power consumption. I combined the emonPi with a Raspberry Pi Zero and two currents clamps: one to measure the power consumption of the shed, the other for the lab. This can of course be applied to any room, as long as the clamp is attached to the proper conductor.
Want to know more about emonPi?:
Two IP cameras were installed for live monitoring: one in the lab, and one in the shed. Both make use of the Raspberry Pi Zero v1.3 with camera port. The video stream is converted to MPJEP and embedded in OpenHAB in the matching view.
A mini build which was not originally foreseen, but which I thought would fit nicely in this challenge. The concept is simple: four connectors are foreseen to which keys can be attached. When a key is attached, a GPIO pin changes status, reporting the change to the control unit.
A future improvement could be to either use a different connector per key, or make use of different resistors and an ADC to know which key is inserted where.
The full project is described in a dedicated blog post:
The idea of the smart, voice-controlled alarm clock started in 2014. The result was a functional prototype, but too slow and bulky to be really useful. This challenge was the perfect opportunity to revisit this project, and I'm quite happy with the way it turned out!
Here's a side-by-side comparison:
The original Raspberry Pi 1 B with Wolfson audio card has been replaced by the new Raspberry Pi 3 B with USB microphone and I2S audio module. The difference in performance is incredible. The result is a near real-time, voice controlled device capable of verifying sensor status, fetching internet data such as weather information or even playing music.
Most of the work was done for this device, and simply reused by the others. The posts cover voice control, setting up OpenHAB, controlling displays, and much more:
- [Pi IoT] Alarm Clock #11: Clock Display
- [Pi IoT] Alarm Clock #12: Voice Control
- [Pi IoT] Alarm Clock #13: Text to Speech
- [Pi IoT] Alarm Clock #14: Front Panel
- [Pi IoT] Alarm Clock #15: Finished Enclosure
- [Pi IoT] Alarm Clock #16: Wiring
- [Pi IoT] Alarm Clock #17: I2S Audio
The Control Unit has the same guts as the alarm clock: I2S audio, USB microphone, speaker, Raspberry Pi 3, etc ... It does however add a keypad and touch screen, allowing control via touch on top of voice. The keypad switches between different webpages on the touch screen, which is locked in kiosk mode.
The touch screen can be used to trigger actions, visualise historic data (power consumption, temperature), consult the weather, etc ...
You can find the relevant posts below:
- [Pi IoT] Alarm Clock #18: Second Unit
- [Pi IoT] Alarm Clock #19: Kiosk
- [Pi IoT] Alarm Clock #20: Finished Enclosure II
Various demonstrations were already made over the course of the challenge. But as this is a summary post, I've created a video showcasing the entirety of the project. Hope you like it!
Because this project wouldn't have been possible without the plethora of online content and tutorials allowing me to combine and modify functionality to give it my own twist, I am publishing all the code created as part of this challenge in a dedicated GitHub repository. You can find it here: https://github.com/fvdbosch/PiIoT
The repository contains the Python scripts, Puppet modules and diagrams, all categorised in a way I thought would make sense. I will make sure the repository is updated as soon as possible!
I'd like to thank element14, Duratool, EnOcean and Raspberry Pi Foundation for organising and sponsoring another great challenge. It's been a wild ride, thank you! I would also like to thank element14Dave, fellow challengers and members for their input and feedback over the course of the challenge. Finally, a big thank you to my wife and kids for allowing me to participate and even help me do the demonstrations!
Time for some rest now, and who knows, perhaps we'll meet again in a future challenge.
Navigate to the previous post using the arrow.