This project provides a super generic and flexible api for drawing to a pixel wall. The project is split up into 3 main areas:
These files interpret data, convert to raw pixel data and then call send-data
which is responsible for sending data to the appropriate output:
gif-url(url)
- take a gif url, convert to resized pixel datavideo-url(url)
- take a video url, convert to resized pixel data
These files intepret take frame data and output them to devices:
console-output(frame)
- write coloured pixels to terminalpi-output(frame)
- write pixels to our LED wall
Allow custom clients to intepret their own custom data, converting them to inputs:
twitter-client
- subscribes to twitter stream and displays text on the wall matching #rioslack-client
- handles messages and passes through as video or gif inputswebsocket-client
- accepts canvas pixel data and sends directly tosend-data
web-client
- restful api (docs coming soon), request are forwarded onto appropriate input or client
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
This will take care of updating your RPi distribution and adding the necessary repositories for Node.js.
sudo apt-get install nodejs
Installs node.js
sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++
sudo apt-get install git
Clone rio
git clone https://github.com/SolidStateGroup/rio
Install
cd rio && npm run install-server
npm run server
rio-server is configured to output to console only initially. If you have already hooked up a physical wall of LED's to your Raspberry Pi you will need to reconfigure rio-server to output to it.
The first step is making sure that communication to your LED wall does in fact work. We have provided two standalone scripts for this purpose found in rio-server/firmware/rpi
called singlestrandtest.py
and strandtest.py
. The configuration for each script is at the top and will need to be changed to suit your LED wall. In particular the LED count(s) and GPIO pin(s). Each can be run with python i.e. python singlestrandtest.py
.
Once that works you can then reconfigure rio-server. Edit rio-server/config/index.js
. Change the matrix
width
and height
to match your LED wall. Enable sendToPi
.
You will also need to edit the configuration in rio-server/firmware/rpi/lowlevel-server.py
(in the same way as strandtest.py
).
At this point you should be able to run rio-server and the rio logo will be displayed on your LED wall!
If you wish to utilise streaming video to your device you will need to install FFMPEG, this URL covers the instructions we used when building our wall https://owenashurst.com/?p=242..