May was an interesting and fun month. I finished a project to build a big 3 x 3 TV wall display to be used at a call centre for the 2014 elections. The requirement was to have 9 screens all operating independently that can have individual images sent to each screen or a single image zoomed across all 9 screens.
This screens are operated from a work station in the call centre that has an interface that allows the operator to navigate to, and select a particular map and send it to one of the screens or zoom across all 9.
The control interface provides more data at a geographic level using mouse overs and allows the operator to switch between ward and municipal level details.
The available map types that can be displayed are:
The interface allows for selecting and zooming into a particular province as well as the standard pan and zoom functions.
The original plan was to have each Pi render its portion of the web page using a browser. However the D3 code was too heavy for the Pi’s CPU to handle and the final implementation was done using a bit of linux hackery.
Each Pi boots up into graphical mode and launches Iceweasel and connects to is particular page on a central server. There is a script that converts the page (SVGs and D3 manipulations) into a PNG image using wkhtmltopdf. While this was reasonably quick, each image was cached with memcached to prevent re-rendering images that had already been made.
The page displayed on the Pi is remotely updated from the server using the Remote Control Plugin, and this is all controlled using a browser window on the controller PC.
The pics below show the Pi army in all its glory. 9 RPi’s connected to 9 TVs with HDMI, all connected to the central server over CAT-5 and they are all powered using 2 x USB hubs.
I must to give credit to Richard (pictured at the top next to the Pi wall) for figuring out the server process to make this work. Always a pleasure to work with someone as capable as he is.
Ultimately, by using cheaper components, OSS and a bit of hackery, this project could be done fairly quickly and at reasonable price.