Skip to content
forked from jaseg/matelight

Show text and gifs on mate crates. Uses C code orchestrated from Python via ctypes.

Notifications You must be signed in to change notification settings

PyMLGame/matelight

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mate Light

http://cbag3.c-base.org/media/cache/artefact_show/uploads/assets/52f6c9c16c72d.jpeg

Transform a bunch of empty mate crates to a huge display using a 14 year old laptop, a 13US$ microcontroller board and a couple of cheap chinese christmas lights.

Hardware Setup

Each bottle contains a LED with a WS2801 driver. Each crate contains a chain of 20 LEDs with a 9 pin SUB-D connector. A wiring harness connects 8 crates in series to a TI Stellaris Launchpad. The Launchpad has four hardware SPI interfaces which can control one wiring harness each. The controller board is connected to a ThinkPad T22 running the control program via USB.

  1. Take a mate bottle and wrap it in aluminum foil
  2. Poke a 12mm hole in the lid
  3. Put it in a crate
  4. Repeat from step 1
  5. Stick a loop of LEDs through the lids of the bottles
  6. Repeat from step 1
  7. Stack up a bunch of these crates and tie them together with zip ties and straps
  8. Connect the wiring harness to the LED loops and the control board
  9. ???
  10. PROFIT!!

Software

The control software is a Python script accepting framebuffer data via UDP and text via TCP. Since it is run on a 900MHz Pentium 3, the two most time-critical pieces, pixel font rendering for scrolling text and USB communication are written in C and called from the Python script via ctypes.

Architecture

The server listens on TCP and UDP ports 1337. Any text arriving through TCP is rendered as a marquee, interpreting ANSI escape sequences (colors, blink etc.). The UDP port accepts CRAP, our Custom advanced video stReAming Protocol. A CRAP packet contains three bytes of RGB data per pixel in 40 rows of 40 columns (i.e. [R0,0 G0,0 B0,0 R0,1 G0,1 B0,1 ... R0,39 G0,39 B0,39 R1,0 G1,0 B1,0 ... R15,39 G15,39 B15,39]) and an optional trailing CRC32 checksum.

There is at least one further server implementation of CRAP in the form of an HTML5 CRAP emulator. There is a Python script that plays gifs over CRAP.

Related Projects

About

Show text and gifs on mate crates. Uses C code orchestrated from Python via ctypes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published