It’s xmas time. Geeky xmas time! So I programmed my Pixel-Coffee-Table to show an advent wreath. The candles (orange pixels) are automatically lighting up as the 1st, 2nd, 3rd and 4th Sundays of advent are arising. I also programmed these candle-pixels to flicker by randomly changing the brightness.
I was inspired for this project by the following post I saw on the web: How To Control Adafruit LED Pixels with Raspberry Pi
It explains how you can connect a bunch of WS2801 LEDs to a Raspberry Pi and control it via a web page running on the same small computer. I changed the form factor from pixelstrip-only to a 10×10 matrix of LEDs and added a wooden coffee table and a depolished glass plate around.
It has the same software as in the project mentioned above: Some node.js magic running the web interface and controlling the pixel strip. Big thumbs up tho Andrew Munsell for publishing his sources on Github!
I have a lot of other ideas concerning how to develop the table further:
- responsive web interface so that it is also nicely usable on mobile devices
- adding games like Connect 4 or Ludo
- visualize audio that is heard around
- visualize data coming from Twitter
- visualize weather
- and so on
But at least the hardware is up and running – the rest is software :)
As I use my table next to my sofa I also mounted a normal power outlet to being able to give my laptop some juice and also added two 5V USB power outlets to charge my mobile devices.
So my coffee table will provide the light fx at my next party – and my guests can charge their phone when they run out of battery as they are just taking pictures of my table :-D
[Update 2014-12-02] first idea to use my table: advent wreath
My home automator – nicknamed “Botman” – has some nice features:
- Indoor data: shows the current room temperature, humidity and barometric pressure on the display (1st row)
- Outdoor weather: regularly requests current weather conditions from a weather API and displays them on the display (2nd row) and moves the servo arm to what we normally call the “weather icon”
- Public transportation info: current departure times of public transport options around my flat are pulled from the web allowing me to better schedule when I have to leave my flat.
- Archive indoor conditions: temperature, humidity and barometric pressure are regularly sent to a Google Spreadsheet to archive and visualize the data over time.
- Android App: allows me to check the current data and lets me switch my remote controlled outlets on and off.
- Arduino Ethernet acting as a web server but also as web client when it pulls data from APIs.
- I2C Display (lcm1602)
- Laser cut dashboard (thanks to metalab.at)
- Servo arm showing current weather forecast
- Wooden self built enclosure
- Temperature, barometric pressure, humidity sensor (BMP085, DHT11)
- 433MHz wireless sender for remotely controlled outlets
As you might know the Arduino does not have a lot of memory. So parsing current JSON APIs might be a big pain in the *** or would simply not be possible – e.g. due to unsupported https connections. That is why I have installed a separate Google App Engine instance which does all the hard work and only returns the small data chunks I really need on the Arduino.
Of course security is always a big issue when it comes to home automation. All the data is transported on an unencrypted standard http connection. At the moment I can cope with this imperfect approach.
- This is the first project I moved to the Arduino browser based IDE codebender. It really helps me to save plenty of time as I do not have the hassles of setting up the Arduino IDE with all the proper libraries. Perfect for people who tend to experiment a lot or switch their dev. machine too often :)
- make a better hand for the pointer of the weather icon
- prepared to control door opener of house
- prepared to add Ir diode to control any device with an Ir remote
this was my first IoT project in 2012 to use an arduino ethernet with a servo to control the volume of my old fancy b&o beomaster 3000 amplifier.
- Arduino Ethernet
To control the servo remotely I built a small Android app and also Chrome browser extension.