Frozen Bottle

Version vom 25. August 2017, 22:19 Uhr von Achim (Diskussion | Beiträge) (Simu Programm)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Frozen Bottle
Farbdemo2.jpg
Beschreibung: Beleuchtete Flaschenböden in Wabenform
Status: aktiv (Was heißt das?)

github

Es gibt ein github repository mit Software für das Frozenbottle Projekt:

https://github.com/freieslabor/FrozenBottle/

v1

v2


Anschluss

Die Bilder zeigen, wie der Anschluß an einen Rechner erfolgt mit dem PIC.

Links ist ein USB-seriell adapter, angeschlossen an die PIC Platine. (Belegung des dreipoligen UART darauf ist GND/RX/TX)

Die PIC Platine hat einen Ausgang passend zu den Kabeln an den LED-Gläsern. Von hier an die Reihe von Gläsern.

Der Einspeisepunkt ist hier in der Mitte der gezeigten sechs Gläser. Er sollte in die Mitte der Kette. Eventuell sind mehrere solche Einspeiser notwendig.

Die PIC Platine zieht Strom über die 12V Schiene der LED Kette, der USB-Adapter über den USB Port.


Ansteuerung

PIC

FrozenBottle-PIC.jpg

Die erste Version der Ansteuerung läuft über einen PIC12F1840 Microcontroller im 8-pin DIL Gehäuse. Die Software empfängt die Daten über Seriell (115k2 8n1), im Format RGB565, und gibt sie an die WS2812 LED streifen weiter. Code ist in github: https://github.com/freieslabor/FrozenBottle/tree/master/PIC_code_ser2LEDs/LEDstrip.X

Beaglebone Black

Der am335x Prozessor des Beaglebone Black hat nette "peripheral realtime units", kurz PRU. Dies sind kleine, in den SoC integrierte controller, die unabhängig von dem OS auf I/O ports Protokolle fahren können. Implementierung der Ansteruerung (userspace programm) liegt in der Sammlung komischer Programme in Achim's github: https://github.com/acda/progs/tree/master/BBBPRU/led_blink


Software interface

Für einfachen Zugang von jedem Rechner aus könnte ein Prozess auf einem Rechner laufen (RasPi oder der alte Firewall Rechner), der Pakete von beliebiger Quelle auf UDP port 8901 annimmt, und diese an die LEDs sendet.

Damit kann einer, der Lust hat ein Muster zu programmieren, dieses in einer Sprache seiner Wahl auf einem beliebigen Rechner tun und Daten zum FrozenBottle senden.

Im github liegt unter 'UDP_2_ser_server' ein kleines python Programm, was das Weiterleiten ausführt.

Das PIC Programm (auch github) nimmt Daten auf seriell im Format XGRB 1555 and und gibt sie an den LED streifen aus (kompatibel mit WS2812 und WS2811).

UDP

Das Protokoll ist sehr einfach: Ein Paket enthält kein header, und nur LED Farbdaten als RGB. Drei bytes fuer eine LED. Sobald ein Paket empfangen wird, wird es sofort auf die LEDs weitergegeben. Anzahl der LEDs zum Steuern ergibt sich aus der Grösse des UDP Pakets.

UDP Port ist 8901.

Es gibt (zur Zeit?) keine Arbitrierung von clients. Maximal unterstützte Zahl von Lichtern ergibt sich vom Limit von UDP Paketen - also ausreichend.

Simu Programm

Ein auf SDL2 basierendes Programm simuliert das FrozenBottle setup und nimmt Daten auf UDP im selben Format entgegen. Damit lassen sich die Muster ohne Zugang zum Aufbau grob ausprobieren.

Code liegt im oben verlinkten github Projekt, "simulation_prog". Baut auf Linux und Windows. Benötigt libsdl2

Source sollte portabel sein, es ließ sich auf Debian-7 und auf Windows7 (beide x64) zu bauen.