Ruferin_technik

die Ruferin

Die Technik dahinter


Der Turm

Die Skulptur „Die Ruferin“ ist kein hölzerner Maibaum,, der Turm basiert auf einem Wickelfalzrohr für die Lüftungstechnik, wobei die schräg verlaufenden Falze die weiß-blaue Lackierung und damit die Anmutung eines Maibaums vorgeben.

Das Fundament ist ein sehr großes Zahnrad, es ist ein Antriebszahnrad für die Kette eines Leopard II Kampfpanzers.

Der Balkon ist aus mehreren Schichten Plexiglas gefertigt, in diesem läuft dann eine Rollenkette (… Fahrradkette, nur etwas dicker) um den Balkon und wird als Schlaufe in den Turm geführt. In der Umlenkung im Turm ist der Antriebsmotor.

Die Figur wurde mit Make-Human entworfen und in meheren Teilen aus PET-G gedruckt und anschließend bemalt. In der Ruhestellung steht die Figur geschützt im Turm, dessen Öffnung hell pulsierend beleuchtet ist. Die Beleuchtung simuliert ein sich drehendes Leuchtfeuer, das, immer wenn es einenm zugewandt ist, einen kurzen starken Lichtblitz aussendet.

Den Abschluß nach oben bildet ein kegelförmiges, goldenes Blechdach. Die ganze Skulptur ist ca. 6m hoch.


Die Kiste

Am Limes-Zaun ist die Steuerung der Skulptur angebracht. Sie enthält alles, was die Skulptur zum Leben erweckt.

Gesteuert wird alles von einem winzigen Adurino-Nano Rechner, die ganzen Lieder spielt ein vom Rechner angesteuerter MP3-Player der seinen Sound auf einem 3W-Lautsprecher ausgibt. Neben dem Lautsprecher ist ein kleines, 2 zeiliges Display, hier zeigt der Rechner, welchen Song er gerade spielt und in welcher Sprache der Song ist. Der Geldeinwurf akzeptiert 1€ Münzen und einiges anderes mehr, es ist nur ein rudimentärer Münzprüfer, jedoch die Größe und Dicke muss Stimen und das Eingeworfene muß metallisch sein.

In der Kiste ist auch noch ein kleines Fach für Flyer, die Besucher mitnehmen können.


Die Software-Architektur der Ruferin

Das Herzstück der Installation ist ein C++ basiertes Arduino-Programm. Um die komplexen Anforderungen an Motorsteuerung, Beleuchtung und Audio-Wiedergabe flüssig und stabil zu bewältigen, greift der Code auf mehrere professionelle Programmierkonzepte zurück.


Achtung: Ab hier kommt der NERD-Teil


1. Multitasking durch blockierungsfreien Code

In einfachen Mikrocontroller-Programmen wird oft der Befehl delay() (Pause) genutzt, was jedoch den gesamten Prozessor anhält. Das Programm der Ruferin verzichtet fast vollständig auf solche Pausen. Stattdessen nutzt es die interne Stoppuhr des Chips (millis()). Bei jedem Durchlauf der Hauptschleife (Loop) prüft das Programm lediglich, wie viel Zeit seit dem letzten Ereignis vergangen ist. Das ermöglicht echtes Multitasking: Die Front-LEDs können weich in einer berechneten Sinuskurve pulsieren, während der Leuchtturm im 8-Sekunden-Takt aufleuchtet, das Display beschrieben wird und Sensoren in Echtzeit überwacht werden – alles scheinbar gleichzeitig.

2. Der Zustandsautomat (Finite State Machine)

Um Logikfehler zu vermeiden, ist der Ablauf als strenger Zustandsautomat programmiert. Das System befindet sich immer in exakt einem von drei definierten Zuständen:

  • IDLE (Wartemodus):
    Die grüne LED leuchtet, das Licht pulsiert, der Prozessor wartet auf ein LOW-Signal des Start-Sensors.
  • RUNNING (Aktiv):
    Die rote LED leuchtet, MP3 und Motor laufen, die Stoppuhr für die Tracklänge und der Stop-Sensor werden permanent überwacht.
  • SHUTDOWN_DELAY (Nachlaufzeit):
    Das System ignoriert alle neuen Sensoreingaben und bremst den Motor für exakt 13,2 Sekunden ab, bevor es sicher in den IDLE-Zustand zurückkehrt.
3. Speicheroptimierung durch PROGMEM

Ein handelsüblicher Arduino verfügt über lediglich 2 Kilobyte Arbeitsspeicher (RAM). Eine Datenbank mit 246 Audiotracks, deren exakten Laufzeiten und den Namen von 42 Sprachen würde diesen Speicher sofort überlasten und zum Absturz führen. Die Lösung ist der Einsatz von Zeigern (Pointern) und dem Befehl PROGMEM. Dieser zwingt den Compiler, die großen Daten-Arrays nicht in den flüchtigen RAM zu laden, sondern fest im weitaus größeren Flash-Programmspeicher (32 KB) einzubrennen. Der Arbeitsspeicher wird so bei einer Auslastung von unter 40 % gehalten, was das System für den Dauerbetrieb absolut stabil macht.

4. Dynamische Motorlogik

Der Motor wird über Pulsweitenmodulation (PWM) gesteuert, was eine stufenlose Geschwindigkeitsregelung ermöglicht. Das Programm liest beim Start die genaue Laufzeit des gezogenen MP3-Tracks aus dem Flash-Speicher aus und steuert den Motor in drei Phasen:

  • Kickstart & Sprech-Phase:
    Der Motor bekommt für 100 Millisekunden 100 % Leistung, um das Gewicht der Figur in Bewegung zu setzen. Danach drosselt das System die Stromzufuhr, sodass sich die Figur während der Audiowiedergabe verlangsamt dreht.
  • Heimfahrt:
    Sobald die interne Stoppuhr signalisiert, dass das MP3 zu Ende ist, schaltet der C-Code den Motor wieder auf 100 % Leistung, damit die Figur zügig ihre Endposition ansteuert.
  • Drosselung:
    Löst der physische Stop-Sensor aus, kappt der Prozessor die Motorleistung auf exakt 80 %, um die Figur während der Nachlaufzeit sanft in die Ruheposition gleiten zu lassen.
5. Hardware-Sicherheitsschleife

Serielle MP3-Module neigen bei Spannungsschwankungen dazu, sich aufzuhängen. Der C-Code enthält daher eine dedizierte Funktion (resetMp3DataLines), die unmittelbar vor jedem neuen Abspielbefehl die RX- und TX-Datenleitungen zum MP3-Chip auf ein Null-Potenzial zieht (GND) und die Schnittstelle neu initialisiert. Das schützt die Installation effektiv vor Kommunikationsabbrüchen.