Flaschen Taschen: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
(removed some spammy edits)
(Correct Chaos Computer Congress to Chaos Communication Congress)
(47 intermediate revisions by 10 users not shown)
Line 2: Line 2:


===What's the project?===
===What's the project?===
We are building a display at Noisebridge inspired by projects such as [http://www.zuloark.com/muro-de-botellas/ Muro de botellas] or [http://matelight.rocks/ Mate Light].
Our goal is to have this completed for [http://makerfaire.com/bay-area/ Maker Faire 2016] to be shown as part of our booth. Then the display will be permanently installed within Noisebridge.


This idea was triggered by the [http://www.c-base.org/ c-base] [https://github.com/jaseg/matelight matelight display] shown at the 32c3 and the 2015 Chaos Communication Camp. Our code that drives many LED strips from a Raspberry Pi is on [https://github.com/hzeller/flaschen-taschen Flaschen-Taschen github].
The Award Winning FlaschenTaschen is a 10’ by 9’ (3m x 2.75m) video display made out of clear glass bottles, milk crates, RGB LED strings (with a total of 1575 LEDs), and a controller board. Each bottle is capped with a single addressable RGB LED. The bottoms of the bottles act as lenses for the emitted light. The project has a German name as homage to c-base’s [http://matelight.rocks/ Mate-Light] project. After seeing Mate-Light at Chaos Communication Congress, we were inspired to build a similar project at Noisebridge to present at the 2016 Maker Faire.


FlaschenTaschen is planned to be 9' 9" wide 7' 7" tall (about 3m x 2.3m) and host 1575 lights. See the drawings at the bottom of this page for the current design information.
Another inspirational build is the [http://www.zuloark.com/muro-de-botellas/ Muro de botellas] project.


We'd like your help with this. Very soon we will be scheduling build nights, build/drink ups, and drink ups. So please keep in touch.
Our goal was to have it completed for [http://makerfaire.com/bay-area/ Maker Faire 2016] to be shown as part of our booth and we were two weeks ahead of schedule. After the MakerFaire, the display will be permanently installed within Noisebridge and possibly made available for events.


In this [http://blog.noisebridge.net/post/139304835544/i-walked-into-noisebridge-yesterday-and-was blog post] you see some work-in-progress video.
Our code and hardware that drives up to 16 LED strips from a Raspberry Pi is on [https://github.com/hzeller/flaschen-taschen Flaschen-Taschen github]. We only need 9 strips in this project, one for each crate column. The update rate of the full FlaschenTaschen display is up to 160fps!


Also here is a photo from Mid February.
[[File:ft-pi-breakout.jpg|200px|The breakout board, driving up to 16 SPI LED strips.]]


[[File:FlaschenTaschenProgressPhoto20160213.jpg|1024px]]
Here is the first view of the completed project


===Drink Ups===
[[File:FlaschenTaschen-2016-05-06.jpg|600px|Plasma on FlaschenTaschen]]
This project requires a lot of bottles, so we'll want to setup a bunch of "Shut Up, Drink Up, Hack Up" events at Noisebridge.<br>


===Requirement for Bottles===
Showing the Plasma written By [[User:Carl|Carl]] - Find the code for this demo here https://github.com/cgorringe/ft-demos
Check out this [https://docs.google.com/spreadsheets/d/1zdod43IjRIaBHS1P-Tu2uoYlBOLzDRJtwIGOXMmya3A/edit#gid=0 amazing matrix of beverages and sellers]!
* We need a good amount of Coronita bottles.
* Corona
* Club Mate
''Please rinse bottles after drinking them''


<gallery>
[[File:ft-back-of-the-crates.jpg|200px|Back of the crates]]
File:Coronita.jpg|7 oz Coronita and 12 oz Corona
File:Matebottles.png|11.2 oz Mate bottle on the left
</gallery>


===Where to buy in bulk===
Backstage view.
''List out where we could buy some of these in bulk for the drink ups''


Costco should have Corona for <= $1 a bottle.
=== Network protocol and Utilities to send content ===


=== Server ===
The network protocol is quite simple: essentially send a PPM picture (P6) in a UDP packet to ft.noise:1337.
There is a server running on ft.noise that supports three protocols:


* [https://github.com/hzeller/flaschen-taschen/blob/master/doc/protocols.md#standard-flaschen-taschen-protocol FlaschenTaschen framebuffer protocol]: receives UDP packet with a PPM image on port 1337
For instance, try the following all in the comfort of you shell (in bash, to be precise, that conveniently provides the /dev/udp pseudo-path):
* Runs http://openpixelcontrol.org/ server on standard port 7890
* Provides [http://www.heroicrobotics.com/products/pixelpusher pixel pusher] compatible control. Can be easily be controlled using [https://processing.org/ processing] (use the in-app browser to get the third-party lib for PixelPusher and play with the examples).


The native protocol is particularly simple: for instance, try the following all in the comfort of you shell (in bash, to be precise, that conveniently provides the /dev/udp pseudo-path):
  bash$ jpegtopnm myimage.jpg | stdbuf -o64k pnmscale -xysize 45 35 > /dev/udp/ft.noise/1337


  bash$ jpegtopnm myimage.jpg | pnmscale -xysize 20 20 > /dev/udp/ft.noise/1337
Flaschen Taschen accepts a footer that defines an offset in x,y space as well as a layer z index. To write images which cover the default demo visualization, you can send a higher -index by appending this footer after your sends. We still need to make sure to send everything in one packet, so on the shell this is a bit awkward as we first have to store the full content temporarily in a file. For instance, to position the image at (x=0 y=0, z=5):


There are utilities in the repository to send arbitrary images (including animated gifs) or even videos. It is also extremely simple to write your own client in any language that supports networking (See [https://github.com/hzeller/flaschen-taschen/blob/master/doc/protocols.md#protocols protocols section] in documentation).
  bash$ ( jpegtopnm myimage.jpg | pnmscale -xysize 45 35; echo "0 0 5" ) > /tmp/tmp-out ; cat /tmp/tmp-out > /dev/udp/ft.noise/1337


See all the details here https://github.com/hzeller/flaschen-taschen
There are [https://github.com/hzeller/flaschen-taschen/tree/master/client#flaschen-taschen-clients utilities in the repository] to send and scroll arbitrary images (including animated gifs), videos or text, so the above, sending an image to layer 5, would be as simple as:
 
  bash:flaschen-taschen/client$ ./send-image -l5 myimage.jpg
 
There is a C++ and Python client library that you can use right away to send images to FlaschenTaschen including a couple of examples.
It is simple to write your own client in any language that supports networking (See [https://github.com/hzeller/flaschen-taschen/blob/master/doc/protocols.md#protocols protocols section] in documentation).
 
'''See all the details here:''' https://github.com/hzeller/flaschen-taschen
 
===FlaschenToy===
 
One of the examples in the  [https://github.com/hzeller/flaschen-taschen Flaschen Taschen github] is FlaschenToy.
 
This is a Flask app that sends the contents of a WebGL canvas to the Flaschen Taschen. The web page takes [http://nehe.gamedev.net/article/glsl_an_introduction/25007/ GLSL]  code from a text area input, and displays it on the Flaschen Taschen using the the [https://www.shadertoy.com/howto ShaderToy] conventions.
 
It is currently hosted on [https://noisebridge.noise noisebridge] you can try it at: http://noisebridge.noise/FlaschenToy 
 
I've not added it to the to the startup scripts, so if that site is dead you can restart on by running ''sudo run.sh'' in ~/github/flaschen-taschen/examples-api-use/flask (you'll need to be logged in as noisebridge and have the admin password)
 
Try pasting some of the shaders from the ShaderToy page: https://www.shadertoy.com/browse into the text area
 
Most examples will just work. E.g. this meta ball example:
https://www.shadertoy.com/view/Mss3WN
 
The code is currently in my fork of the project (will get merged into main page in the future):
https://github.com/griffin2000/flaschen-taschen
 
=== List of Devices at Noisebridge running the FlaschenTaschen Protocol ===
 
* [[ft.noise | FlaschenTaschen]] - Host: [[network#LAN - 10.20.0.0/22 | ft.noise]]
* [[ftkleine.noise | Kleine FlaschenTaschen]] - Host: [[network#LAN - 10.20.0.0/22 | ftkleine.noise]]
* Library bookshelves - Host: [[network#LAN - 10.20.0.0/22| bookcase.noise]]
* [[Noise_Square_Table|Noise Square table]] - Host: [[network#LAN - 10.20.0.0/22 | square.noise]]


===Current Mechanical Design Documentation===
===Current Mechanical Design Documentation===
Line 56: Line 73:
This .PDF file is the current drawing set. Please take a look.
This .PDF file is the current drawing set. Please take a look.


https://noisebridge.net/images/9/96/Noisebridge_FlaschenTaschen_2016-0131_36x24.pdf
https://noisebridge.net/images/8/8c/2016_0518_FlaschenTaschen_Sheet1-0_AsBuilt_Noisebridge.pdf
 
[[File:2016 0518 FlaschenTaschen Sheet1-0 AsBuilt Noisebridge.jpg|1024px]]
 
===Rough Take-down Procedure===
 
Flaschen Taschen takedown and setup notes: (does not include electronics)
2016-06-13  draft by [[user:jarrod|Jarrod]]
 
! Take pictures of how things are setup for reference!
 
! Take care to collect all the parts as you disassemble, there are many parts and some are small, but important!
 
*1_Remove all power cables from rear. Make note of how they are run to the power supplies
 
*2_Disconnect all data connections, remember there are typically two per crate. Take a photo of how they are routed to the breakout board on the raspberry pi.
NOTE: The crates have an orientation. Remember this. Take a photo
 
*3_Remove the 2” green tie down strap. This is tricky there are two metal latches in line with the handles that need to be pulled in tandem to release the ratchet. While pulling on the latches it may be necessary to add tension to the tie down to get it to release, since we do not tighten it very much during install.
 
*4_The wooden vertical supports are connected to four of the top crates by a wood screw
Remove these screws. The supports are kind of floppy and are really only meant to be supportive in a direction parallel to the face of the display
During setup any forward or backward lean of the display can be adjusted slightly by screwing these supports back on to the top crates at a distance that pushes them forward or pulls them backward
 
*5_Once the cables and supports are disconnected the RELEASABLE cable ties can be removed from the crates. Please do not cut the ties, as you will need them to set the display back up
 
*6_Stack the crates in stacks of 4. This is a good height to move with a hand truck. Make sure that the power jacks and date cables are not hanging over the edges of each crate before another crate is placed on top of it, so as to not damage the wires and connectors.
 
NOTE: The bottom row of crates do not have bottles with LEDs, so as to provide a space for the hardware and lift the display of the floor for improved visibility.
 
NOTE: The two end crates have 2x4 supports in them. The others have plywood. The assembly is not symmetrical, but each crate has at least one support. Together they are almost exactly as long as the base. These also get zip tied together, but they are harder to tie.
 
*7_Stack up the base crates. These are also good for holding all the hardware, zip ties, bolts (in a bag), and cables for transport.
 
*8_Remove the vertical supports from the base by unscrewing them. (iirc: this is done with a 7/16” wrench/socket.) Have someone hold the vertical supports while unscrewing. Keep all parts and set aside. NOTE how those washers are used. It is important that bolts not be able to rip through the wood.
 
*9_Flip the base over. There are three bolts in the center that hold it together. Remove these.
 
Congratulations, You have now turned the FlaschenTaschen into parts for shipping.
 
The setup procedure is essentially the reverse of this. Just remember:
 
*A_Bring tools. Wrenches for the bolts, a screwdriver for the tops of the vertical supports, and a ladder.
 
*B_The crates have an orientation. At the forward edge (display side) of each crate there is Velcro. The hook side should be on the top and the loop side should be on the bottom. This is typical for all crates except the base which only have the hook side Velcro on the top.


[[File:FlaschenTaschen_2016-0131_Cropped.jpg|1024px]]
*C_Do not tighten the tie down very much. Its purpose is merely to squeeze the crates together so they can’t move individually. The zip ties do most of the work


*D_Try to align the forward faces of the crates as best as possible, but realize that it will never come out perfect. If a column is going out of vertical the crates above can be installed a little fore or aft of the face of the display to make up for it.


===Production Schedule===
*E_People have already sent images of genitalia to be displayed on the screen, so get over it.


Due Date Event /    Required Goals
===What's the project?===


2016-04-17 48  Show Ready crates complete
[[File:Award_Winning_FlaschenTaschen.jpg|640px]]


2016-04-22 Software and Electronics night!


2016-04-23 Crate build: Catch up day.
=== hacking ===


2016-04-24 54  Show Ready crates complete
teh blinky RGB LED's are driven by a [[WS2801]] chip, that uses a clock (green) and data (white) line, that are operated similarly to APA102's, but are not identical in practice.


2016-05-01 60  Show Ready crates complete
custom code's by teh'x taht served as table ornamite for Mitch's interview of C.M. past 10th anniversary at NB.


2016-05-08 FlaschenTaschen - Substantial Completion - All Show Ready crates completed, mounted, and stacked. Minor tweaks to construction allowed. Software/Hardware development continues if needed. Create list of final Tasks
µPython running on a ESP8266 driving random overflow noise on a milk crate of 5x5 RGB's.


2016-05-08 66  Show Ready crates complete
<pre>
# 2 CM w/<3


2016-05-15 FlaschenTaschen Final Completion
import time
from machine import Pin
from apa102 import APA102


2016-05-18 Pack FlaschenTaschen for Maker Faire
clock = Pin(14, Pin.OUT) # set GPIO14 to output to drive the clock
data = Pin(13, Pin.OUT) # set GPIO13 to output to drive the data


2016-05-19 MakerFaire Setup Day - Transport to San Mateo
apa = APA102(clock, data, 25)


2016-05-19 Pre Maker Faire 5MoF?
def randomByte():
        return int.from_bytes(uos.urandom(1), 'little')


2016-05-20 MAKER FAIRE!!!
def randomPixel():
        return [randomByte(), randomByte(), randomByte(), 31]


2016-05-22 Maker Faire Takedown and Transport home to NB
def loop():
        while True:
                for j in range(25):
                        apa[j] = randomPixel()
                        apa.write()
                        time.sleep_ms(round(randomByte()/10))


2016-05-28      Begin Install of FlaschenTaschen crates at Noisebridge.
loop()
</pre>

Revision as of 03:57, 15 November 2018

Noisebridge Logo FlaschenTaschen.jpg

What's the project?

The Award Winning FlaschenTaschen is a 10’ by 9’ (3m x 2.75m) video display made out of clear glass bottles, milk crates, RGB LED strings (with a total of 1575 LEDs), and a controller board. Each bottle is capped with a single addressable RGB LED. The bottoms of the bottles act as lenses for the emitted light. The project has a German name as homage to c-base’s Mate-Light project. After seeing Mate-Light at Chaos Communication Congress, we were inspired to build a similar project at Noisebridge to present at the 2016 Maker Faire.

Another inspirational build is the Muro de botellas project.

Our goal was to have it completed for Maker Faire 2016 to be shown as part of our booth and we were two weeks ahead of schedule. After the MakerFaire, the display will be permanently installed within Noisebridge and possibly made available for events.

Our code and hardware that drives up to 16 LED strips from a Raspberry Pi is on Flaschen-Taschen github. We only need 9 strips in this project, one for each crate column. The update rate of the full FlaschenTaschen display is up to 160fps!

The breakout board, driving up to 16 SPI LED strips.

Here is the first view of the completed project

Plasma on FlaschenTaschen

Showing the Plasma written By Carl - Find the code for this demo here https://github.com/cgorringe/ft-demos

Back of the crates

Backstage view.

Network protocol and Utilities to send content

The network protocol is quite simple: essentially send a PPM picture (P6) in a UDP packet to ft.noise:1337.

For instance, try the following all in the comfort of you shell (in bash, to be precise, that conveniently provides the /dev/udp pseudo-path):

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

Flaschen Taschen accepts a footer that defines an offset in x,y space as well as a layer z index. To write images which cover the default demo visualization, you can send a higher -index by appending this footer after your sends. We still need to make sure to send everything in one packet, so on the shell this is a bit awkward as we first have to store the full content temporarily in a file. For instance, to position the image at (x=0 y=0, z=5):

 bash$ ( jpegtopnm myimage.jpg | pnmscale -xysize 45 35; echo "0 0 5" ) > /tmp/tmp-out ; cat /tmp/tmp-out > /dev/udp/ft.noise/1337

There are utilities in the repository to send and scroll arbitrary images (including animated gifs), videos or text, so the above, sending an image to layer 5, would be as simple as:

 bash:flaschen-taschen/client$ ./send-image -l5 myimage.jpg

There is a C++ and Python client library that you can use right away to send images to FlaschenTaschen including a couple of examples. It is simple to write your own client in any language that supports networking (See protocols section in documentation).

See all the details here: https://github.com/hzeller/flaschen-taschen

FlaschenToy

One of the examples in the Flaschen Taschen github is FlaschenToy.

This is a Flask app that sends the contents of a WebGL canvas to the Flaschen Taschen. The web page takes GLSL code from a text area input, and displays it on the Flaschen Taschen using the the ShaderToy conventions.

It is currently hosted on noisebridge you can try it at: http://noisebridge.noise/FlaschenToy

I've not added it to the to the startup scripts, so if that site is dead you can restart on by running sudo run.sh in ~/github/flaschen-taschen/examples-api-use/flask (you'll need to be logged in as noisebridge and have the admin password)

Try pasting some of the shaders from the ShaderToy page: https://www.shadertoy.com/browse into the text area

Most examples will just work. E.g. this meta ball example: https://www.shadertoy.com/view/Mss3WN

The code is currently in my fork of the project (will get merged into main page in the future): https://github.com/griffin2000/flaschen-taschen

List of Devices at Noisebridge running the FlaschenTaschen Protocol

Current Mechanical Design Documentation

This .PDF file is the current drawing set. Please take a look.

https://noisebridge.net/images/8/8c/2016_0518_FlaschenTaschen_Sheet1-0_AsBuilt_Noisebridge.pdf

2016 0518 FlaschenTaschen Sheet1-0 AsBuilt Noisebridge.jpg

Rough Take-down Procedure

Flaschen Taschen takedown and setup notes: (does not include electronics) 2016-06-13 draft by Jarrod

! Take pictures of how things are setup for reference!

! Take care to collect all the parts as you disassemble, there are many parts and some are small, but important!

  • 1_Remove all power cables from rear. Make note of how they are run to the power supplies
  • 2_Disconnect all data connections, remember there are typically two per crate. Take a photo of how they are routed to the breakout board on the raspberry pi.

NOTE: The crates have an orientation. Remember this. Take a photo

  • 3_Remove the 2” green tie down strap. This is tricky there are two metal latches in line with the handles that need to be pulled in tandem to release the ratchet. While pulling on the latches it may be necessary to add tension to the tie down to get it to release, since we do not tighten it very much during install.
  • 4_The wooden vertical supports are connected to four of the top crates by a wood screw

Remove these screws. The supports are kind of floppy and are really only meant to be supportive in a direction parallel to the face of the display During setup any forward or backward lean of the display can be adjusted slightly by screwing these supports back on to the top crates at a distance that pushes them forward or pulls them backward

  • 5_Once the cables and supports are disconnected the RELEASABLE cable ties can be removed from the crates. Please do not cut the ties, as you will need them to set the display back up
  • 6_Stack the crates in stacks of 4. This is a good height to move with a hand truck. Make sure that the power jacks and date cables are not hanging over the edges of each crate before another crate is placed on top of it, so as to not damage the wires and connectors.

NOTE: The bottom row of crates do not have bottles with LEDs, so as to provide a space for the hardware and lift the display of the floor for improved visibility.

NOTE: The two end crates have 2x4 supports in them. The others have plywood. The assembly is not symmetrical, but each crate has at least one support. Together they are almost exactly as long as the base. These also get zip tied together, but they are harder to tie.

  • 7_Stack up the base crates. These are also good for holding all the hardware, zip ties, bolts (in a bag), and cables for transport.
  • 8_Remove the vertical supports from the base by unscrewing them. (iirc: this is done with a 7/16” wrench/socket.) Have someone hold the vertical supports while unscrewing. Keep all parts and set aside. NOTE how those washers are used. It is important that bolts not be able to rip through the wood.
  • 9_Flip the base over. There are three bolts in the center that hold it together. Remove these.

Congratulations, You have now turned the FlaschenTaschen into parts for shipping.

The setup procedure is essentially the reverse of this. Just remember:

  • A_Bring tools. Wrenches for the bolts, a screwdriver for the tops of the vertical supports, and a ladder.
  • B_The crates have an orientation. At the forward edge (display side) of each crate there is Velcro. The hook side should be on the top and the loop side should be on the bottom. This is typical for all crates except the base which only have the hook side Velcro on the top.
  • C_Do not tighten the tie down very much. Its purpose is merely to squeeze the crates together so they can’t move individually. The zip ties do most of the work
  • D_Try to align the forward faces of the crates as best as possible, but realize that it will never come out perfect. If a column is going out of vertical the crates above can be installed a little fore or aft of the face of the display to make up for it.
  • E_People have already sent images of genitalia to be displayed on the screen, so get over it.

What's the project?

Award Winning FlaschenTaschen.jpg


hacking

teh blinky RGB LED's are driven by a WS2801 chip, that uses a clock (green) and data (white) line, that are operated similarly to APA102's, but are not identical in practice.

custom code's by teh'x taht served as table ornamite for Mitch's interview of C.M. past 10th anniversary at NB.

µPython running on a ESP8266 driving random overflow noise on a milk crate of 5x5 RGB's.

# 2 CM w/<3

import time
from machine import Pin
from apa102 import APA102

clock = Pin(14, Pin.OUT) # set GPIO14 to output to drive the clock
data = Pin(13, Pin.OUT) # set GPIO13 to output to drive the data

apa = APA102(clock, data, 25)

def randomByte():
        return int.from_bytes(uos.urandom(1), 'little')

def randomPixel():
        return [randomByte(), randomByte(), randomByte(), 31]

def loop():
        while True:
                for j in range(25):
                        apa[j] = randomPixel()
                        apa.write()
                        time.sleep_ms(round(randomByte()/10))

loop()