298 Gruppen / 15652 Gestalten / 30434 Beiträge
Beitrag
Artikel

Was geht im Hackspace? Licht-Skulpturen!

Was kann man Kreatives mit einem Mikrocontroller-Board und einem 1 Meter langen, digitalen LED-Band schaffen? Zum Beispiel: großformatige Licht-Projektionen.

Dieser Artikel beschreibt eine spontane Hackerei, die sich allein aus dem Vorhandensein einiger weniger Hardwarekomponenten ergab. Zutaten:

  • ein Farb-LED-Band mit 15 frei ansteuerbaren LEDs

  • ein RaspberryPi Pico Mikrocontroller-Board

  • eine dünne Holzleiste aus der Restekiste

  • eine kleine Powerbank

  • ein Steckbrett, Taster, Kabel

  • ein kurzes, in Python geschriebenes Programm

Die Idee
Von fotografischen Aufnahmen, die nachts von bewegten Fahrzeugen gemacht wurden, kennt man den Effekt, dass Lichter als langgezogene Spuren im Bild erscheinen. Das resultiert aus den bei Nacht verwendeten langen Belichtungszeiten. Diesen Effekt wollten wir uns gestalterisch zunutze machen. (Mit der Idee waren wir natürlich nicht die Ersten, auch wenn das bereits 2014 schonmal im Hackspace gemacht wurde. Aber Selbermachen macht Spaß!)

Der Aufbau
Das Ziel war es, das LED-Band frei und kontrolliert durch den Raum zu bewegen. Dazu befestigten wir es auf einer dünnen Holzleiste. Dazu das Steckbrett mit dem Mikrocontroller-Board und die Powerbank als mobile Stromversorgung. An das Mikrocontroller-Board wurde noch ein elektronischer Taster als Bedien-Element angeschlossen. Das war's auch schon.

m19du9t6br4feval.jpg

Zum Gesamtaufbau gehört natürlich auch eine langzeitbelichtungsfähige Kamera, die wir auf ein Stativ gesetzt haben. Es soll sogar möglich sein, die Licht-Skulptur mit einer Mini-Flugdrohne aufzunehmen – für einen besonders hübschen räumlichen Effekt. 😉

Die Erzeugung von Licht-Signalen

Statt mit dem LED-Band einfache unveränderliche Lichtspuren zu erzeugen, wollten wir die Fähigkeit des LED-Bands ausnutzen, Farbe und Leuchtintensität der 15 RGB-LEDs einzeln steuern zu können. Bei gleichförmiger Bewegung im Raum sind damit bunte Schriftzüge oder gar Bilder realisierbar.

Dazu muss ein (digitales) Bild, das ja ein 2D-Raster aus Bildpunkten ist, in seine Spalten zerlegt werden. Eine Spalte von 15 Bildpunkten Höhe kann von unsem LED-Band direkt in Lichtpunkte in unserer realen Welt umgewandelt werden. Das muss nur Spalte für Spalte gemacht werden, bis das Bild von einer Seite zur anderen Seite ausgelesen und in Licht umgewandelt wurde.

Das macht dieses kleine Python-Programm:

from machine import Pin
from neopixel import NeoPixel
from bmp_file_reader import BMPFileReader
import time

# Button details
# button leg 1 -> physical pin 1 (GPIO 0)
# button leg 2 -> physical pin 36 (3V3)
buttonPin = Pin(0, Pin.IN, Pin.PULL_DOWN) 

# LED details
# striped wire -> physical pin 40 (voltage bus)
# middle wire -> physical pin 6 (I2C 1 SDA | GPIO 4)
# outer wire -> physical pin 8 (ground)
stripePin = Pin(4)

STRIPE_LENGTH = 15
COLUMNS_PER_SECOND = 30.0

# Define the stripe pin number and number of LEDs from variables
stripe = NeoPixel(stripePin, STRIPE_LENGTH)

# initialize
stripe.fill((0,0,0))

with open("bitmap.bmp", "rb") as file_handle:
    reader = BMPFileReader(file_handle)

    while True:
        if buttonPin.value() == 0:
            continue

        # read row by row (we will transpose, so that will be our columns)
        for row_i in range(reader.get_height()):

            row = reader.get_row(row_i)
            # iterate over pixels of a bitmap row (our stripe column)
            for i in range(min(len(row), STRIPE_LENGTH)):
                pixel = row[i]
                stripe[i] = (pixel.red, pixel.green, pixel.blue)

            stripe.write()
            time.sleep(1 / COLUMNS_PER_SECOND)

Das Programm wird auf dem Mikrocontroller in einer MicroPython-Umgebung (Link) ausgeführt. MicroPython vereinfachte die Umsetzung der Idee sehr. Das Programm nutzt neben den von MicroPython mitgebrachten Modulen das Modul bmp_file_reader von ExcaliburZero (Link). Mit bmp_file_reader wird die Bitmap-Datei eingelesen, die das auszugebende Bild enthält.

Für die Übertragung des Programms, des bmp_file_reader Moduls und des auszugebenden Bildes auf den Mikrocontroller wurde das Kommandozeilenwerkzeug rshell (Link) genutzt.

Erste Versuche geben einen Eindruck von der Idee:

um2gx9fmte9ssi6z.jpg

Da bmp_file_reader das Bild wie üblich zeilenweise einliest, wir es mit dem Gerät in der Regel aber spaltenweise (d.h. von links nach rechts) im Raum darstellen, muss das Bild vor der Übertragung auf den Mikrocontroller um 90° gedreht werden.

Das Gerät kann damit beliebige farbige, 15 Pixel hohe Bilder im 24Bit-RGB-Bitmap-Format widergeben. Dabei kann sich bei einer realen Bildhöhe von knapp einem Meter bei einem 15x190 Pixel kleinen Schriftzug durchaus eine Bildbreite von über 13 Metern ergeben:

5aw4rw580k6p65jf.jpg

Belichtungszeit war 10 Sekunden.

Mit diesem Bild ging der Hacking-Abend zu Ende. Sicherlich können noch viel beeindruckendere Skulpturen mit dem Gerät in den Raum gemalt werden.

Realisiere deine Ideen!

Im Hackspace haben wir das Material und die technische Ausstattung, um solche und andere Ideen umzusetzen. Komm vorbei, tausch dich mit anderen aus, lass dich inspirieren und nutze gern auch unsere Werkstatt.

Gruppe abonnieren um über zukünftige Beiträge der Gruppe @hackhro per E-Mail