• Stars
    star
    193
  • Rank 201,081 (Top 4 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created almost 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Noisebridge Flaschen Taschen display

Noisebridge Flaschen Taschen Project

Software and Raspberry Pi interface hardware for FlaschenTaschen.

FlaschenTaschen is inspired by projects such as the Muro de botellas or MateLight. A bunch of Noisebridgers have seen Mate Light in action at 32c3 and got excited :) So our Noisebridge interpretation of it has a German influenced name.

Unfortunately, in the US, bottle reuse is not at all a thing, so there are no standardized crates with bottles you can buy. So we use milk crates (which is a thing) and put common, clear 12oz (355ml) bottles in (Mate, Corona,..) inside. Wrapped in aluminum foil, they make nice pixels.

How about watching a movie ?

The set-up is 9 crates wide and 7 crates high for a total of 63 crates (see wiring here) with 25 'pixels' each (this is what fits in our MakerFaire booth). 45x35 pixels or 1575 pixels total. All operated by a Raspberry Pi that provides a network API to update the display.

This is how it looks from the back:

Sending content to FlaschenTaschen

The client directory contains some useful utilities such as send-text, send-image or send-video that you might be interested in.

Also, the current development VLC natively supports the FlaschenTaschen protocol if you want to send a video.

Tutorial: start local server and create new clients

To develop visuals for the FlaschenTaschen display once it is ready, here you can already play around writing software that updates the networked display.

1. Check out the project

$ git clone --recursive https://github.com/hzeller/flaschen-taschen.git
$ cd flaschen-taschen

2. Compile and run local server showing content in a Terminal

If you are not around Noisebridge to directly send images to the FlaschenTaschen installation, then you can start your own FlaschenTaschen server that displays the pixels as colored spaces in a terminal. Note, you need a fairly recent terminal that can display 24 Bit color (Konsole can do that for a while, more recent Gnome terminals as well. Also, newer xterms can do that as well. If you are on a Mac, an iTerm2 version 3.x will work).

In one terminal, go to the server/ directory, compile the terminal-based display and run it. Make sure to have it large enough to show all pixels:

$ cd server
$ make FT_BACKEND=terminal
$ ./ft-server   #  this will now show a black 'screen'

(looks too big on screen ? Try adding the option --hd-terminal)

If you want to dig into details and understand the various server implementations, check out the server README.

3. Get started with the API

FlaschenTasachen provides a network protocol, but there are also client APIs available - the api subdirectory is the best to inspect here.

To get started with programming, go to the examples-api-use/ directory, compile the programs and run it.

$ cd examples-api-use
$ make simple-animation
$ ./simple-animation localhost # <- network address of display.

Now go back to your terminal the ft-server is running and you'll see the space-invaders animation!

Easiest to get started with the programming is to read the simple-example.cc code, then move on to simple-animation.cc.

If you want to implement the simple network protocol in another language check out the protocol description or look at the C++ implementation.

For some immediate fun, send a PPM image to your server. Since the server already understands that format natively, you can unleash the usual netpbm toolbox for image manipulation:

bash$ jpegtopnm myimage.jpg | stdbuf -o64k pnmscale -xysize 45 35 > /dev/udp/localhost/1337

For a tool that decodes images (including animated gifs), go to the client/ sub-directory compile send-image (make send-image, see Send-Image section in client/ for needed dependencies), then run ./send-image -h localhost some-image.png which reads images and sends them to the FlaschenTaschen display.

Related Software

There are various projects that create demos for F~T. Collecting links here. Check out these repositories:

 # Here, ft.noise is the hostname of the flaschen taschen display:
 $ vlc --vout flaschen --flaschen-display=ft.noise \
       --flaschen-width=45 --flaschen-height=35 \
       <video-filename-or-YouTube-URL>

Connecting LED strips to the Pi

LED strips are controlled by a Raspberry Pi, connected via a custom level shifter for up to 16 strips (of which we only need 9 for our installation right now).

More Repositories

1

rpi-rgb-led-matrix

Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
C++
3,229
star
2

timg

A terminal image and video viewer.
C++
1,889
star
3

gmrender-resurrect

Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer. Fork of GMediaRenderer to add some features to make it usable.
C
841
star
4

txtempus

A DCF77, WWVB, JJY and MSF clock LF-band signal transmitter using the Raspberry Pi
C++
416
star
5

ldgraphy

Simple Laser Direct Lithography / Laser Direct Imaging for PCB manufacturing
PostScript
272
star
6

rpi-gpio-dma-demo

Performance writing to GPIO with CPU and DMA on the Raspberry Pi
C
196
star
7

rpi-matrix-pixelpusher

PixelPusher protocol for LED matrix.
C++
160
star
8

beagleg

G-code interpreter and stepmotor controller for crazy fast coordinated moves of up to 8 steppers. Uses the Programmable Realtime Unit (PRU) of the Beaglebone.
C++
114
star
9

augenmass

Measure relative sizes on background image.
JavaScript
93
star
10

upnp-display

Display state of UPnP/DNLA renderer in the network with a 16x2 LCD display (or 24x2, 40x2 ..) connected to the Raspberry Pi. Unicode support (UTF-8).
C++
69
star
11

gcode-cli

Simple command line tool to send gcode to serial 3D printer/CNC machine.
C++
39
star
12

spixels

Spixels - 16-SPI LED Raspberry Pi adapter with library (SPI - Pixels).
C++
39
star
13

rpt2pnp

Solder paste dispensing and Pick'n Placing
C++
34
star
14

stuff-org

Organize electronic components. Or other stuff.
Go
33
star
15

postscript-hacks

A collection of some useful PostScript programs.
PostScript
31
star
16

folve

Folve - seamlessly FIR convolving audio file fuse filesystem with gapless support.
C++
30
star
17

trs80-100-schematic

A transcript of the TRS80 Model 100 schematic
Nix
28
star
18

rpt2paste

Convert KiCAD rpt files to G-Code to dispense solder paste
C++
24
star
19

bumps

BeagleBone Universal Multi Pololu Steppers
KiCad Layout
21
star
20

blisplay

A tactile display for the blind.
OpenSCAD
19
star
21

pixelpusher-server

A simple library that allows to receive pixels via the PixelPusher protocol.
C++
17
star
22

otp-image

Optical One-Time Pad XOR encoding of images
C++
17
star
23

digi-spherometer

A digital spherometer, reading data from digital dial indicator and converting it to radius, displaying on OLED display.
C++
14
star
24

RedPitaya-Case

A case for the Red Pitaya scope/function generator
OpenSCAD
12
star
25

joystick-gcode-jog

Jogging a machine such as a 3D printer or CNC machine with a gampad. Mostly proof of concept.
C
12
star
26

gds2vec

A simple program to convert gdsII files to vector output formats. Currently used to create laser-cut models of standard cells.
C++
12
star
27

openscad-things

Things made with OpenSCAD. Mostly experimental right now.
OpenSCAD
9
star
28

quadrigotion

TMC2660 Four stepper motor drivers on a stick.
Python
9
star
29

tmc2660-breakout

Little breakout board to play with the TMC2660 stepper driver
Python
9
star
30

precise-pitch

Instrument tuner app. Mostly my playground to learn Android development.
Java
8
star
31

symbiflow-simple-sample

Using Symbiflow arch defs to get BASYS3 board entertained with logic
Makefile
8
star
32

bant

Bazel/Build Analysis and Navigation Tool
C++
8
star
33

bare-lsp

A language server protocol implementation
C++
6
star
34

jcxxgen

A schema compiler generating c++ structs with boilerplate to be serialized easily with nlohmann/json
C++
6
star
35

spixels-pixelpusher

A PixelPusher implementation using the Spixels hardware to control LED strips.
C++
6
star
36

bdfont.data

Generate C-structs from BDF fonts to be compiled into embedded programs.
C++
5
star
37

sound-cam

Simulation of using Microphones to pick up sound locations.
C++
5
star
38

pi-registerplex

GPIO multiplexer for Raspberry Pi
Python
3
star
39

makerspace-tag

Simple app keeping track of makerspace users and their capabilities
Go
3
star
40

ziplain

A plain, no-frills ZIP file writer.
C++
3
star
41

hot-snipper

A Hot-Knife cutting machine
OpenSCAD
3
star
42

simple-fasm

A simple parser for the FPGA Assembly format
C++
3
star
43

DerKnopf

Simple IR remote control of a volume knob
KiCad Layout
3
star
44

eda-tools

Small useful tools I use while doing stuff with electronics.
3
star
45

pitch-hero

C++
2
star
46

simple-spherometer

A simple analog spherometer made from simple hardware-store materials, laser cut acrylic and 3D printed parts.
PostScript
2
star
47

air-filter-box

Quad AirFilter using standard box-fan and standard aircon/furnace filters
OpenSCAD
2
star
48

microorb

A USB controlled 2.5W RGB LED
C++
2
star
49

FlaschenTaschen-PixelPusher-bridge

Receives FlaschenTaschen protocol and sends to a PixelPusher installation.
C++
2
star
50

rp2040-nix-template

Minimal rp2040 c++ template
Makefile
2
star
51

gaggia-pid

PID controller, useful for e.g. coffee machines.
C++
1
star
52

golang-pgp-test

Experiments with the golang OpenPGP implementation.
Go
1
star
53

cogsworth-viz

Visualization of data generated from Project-COGSWORTH
C
1
star
54

sneeze-guard

Sneeze-guard on working tables for reduced Viral spread.
G-code
1
star
55

flaschen-taschen-avr

Quick hack to make first FlaschenTaschen crates work.
C++
1
star
56

bidi-tee

A bidrectional `tee` program that passes through stdin/stdout/stderr and copies them colored coded to a file
C++
1
star
57

ear-saver

A laser-cuttable ear-saver for face masks.
OpenSCAD
1
star
58

threadless-server

select() event API experiment with c++11 closures.
C++
1
star
59

gstreamer-gapless-test

Sample source code to demonstrate a gstreamer issue.
C
1
star
60

din-rail-clip-mount

3D printed Din-Rail mount for PCB and other components
OpenSCAD
1
star
61

glowxels

Glow-in-the-dark canvas
C++
1
star