BhackPiWall

From Bhack
Revision as of 18:25, 27 September 2015 by Zwollenar (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

PiWall project

PiWall2node.png

The Bhack PiWall project is a 5 by 5 videowall build with Raspberry Pi.

It is based on piwall which uses a patched version of omxplayer.

We intend to add some features so please share your thoughts idea's, enhancements, comments and requests trough bhackzwolle@slack or our public IRC channel.


This videowall will be build for and is sponsored by ICT kringloop Zwolle

Goals and tasks

A growing list of goals and tasks

Goals:

  • Proof, display video on a 4x4 grid and basic controller
  • Controlller Webinterface for grid configuration
  • Node basic grid info information (OSD)
  • Frame and Vesa mounts

Tasks:

  • Gather idea's about displaying vector images on the grid
  • Figure out how to encode and stream a windows desktop to omxplayer
  • Figure out how to blank and write the console tty (from python)
  • Design and print VESA mount protoype

Proof, displaying video on a 4x4 grid

The first challenge is to build a working example with a 4x4 grid using desktop software and 4 raspberry pi's with http://elinux.org/Omxplayer.

Challenge almost complete and the first results are promising. Lets see how this scales.

Designing controller and node

Controller and node two way communication about grid data, start&stop and per node OSD messages.

Design choice PubSub (mqtt) and zeroconf will be used tot establish controller node communication

When a node starts it will query the controller for it's id and OSD message. If not available it will set a default OSD and then enter wait and retry.

The controller will build a list of available nodes and ask the user to order them in correspondence to their physical layout. Changed id's will be send to the nodes.

A per node OSD can be set on the controller.

TIP: This way even node spanning ascii art is possible ?

Usecases:

  • Startup controller
  • Startup Node
  • Calibrate grid

Controller functions:

  • Select movie
  • Play movie
  • Stop movie
  • Scan nodes

Node functions:

  • Set node id
  • Set node OSD message
  • Get node info

Controller

Technologies:

  • Python
  • Flask
  • Zeroconf
  • Angular / REST
  • ffmpeg/avconv

Node

Technologies

  • omxplayer
  • node.py (Python mqtt omxplayer wrapper)

Frame and Vesa mounts

Design choice: All displays need to be mounted on a frame together with the raspberry pi's and ethernet switch(es).

Design choice: A wireless AP will be added for streaming, uploading and control

TIP: Maybe "steigerbuis" can be used to build a super solid frame and foundation.

TIP: VESA mounts for displays and mounts for other components can be 3D printed.