Alphafluid

Unter dem Projektnamen Alphafluid (oder AlphaFluid) werden alle Modifikationen und Addons am Getränkeautomat des Space und die zugehörige Infrastruktur (Server, APIs) zusammengefasst.

Features

Auflistung der Funktionen des Gesamtprojekts, also nicht nur des Automaten:

  • Zählt, wie viele Einheiten von welcher Sorte verkauft werden
  • Erkennt, wenn ein Schacht leer ist
  • Anzeigen des aktuellen Füllstands
  • Twittern, wenn ein Produkt verkauft wird
  • Twittern, wenn ein Schacht leer geworden ist.
  • Anzeigen des neuesten Twitter-Mentions (@alphafluid)
  • Anzeigen der aktuellen Füllstände im Display am Automat
  • Abspielen eines zufälligen Sounds beim Ausgeben eines Produkts
  • Leises Abspielen eines zufälligen Sounds in zufälligen Intervallen

Hardware Addons

Sämtliche Eagle-Files sind auf github zu finden.

Stats and Core

Der Kern des Projekts ist ein atMega32, der auf einer selbst geätzten Platine sitzt und mit dem Automaten und auch mit allen anderen verbauten Basteleien kommuniziert. Zusätzlich enthält das Board Optokoppler und Kondensatoren, um die Signale, die mit ca. 60V 50Hz aus dem Automat kommen, für den Mikrocontroller aufzubereiten.

Der Core hat folgende Aufgaben:

  • Abgreifen und Auswerten der Signale aus dem Zählwerk des Automaten
  • Überwachen der „Schacht Leer“ Leuchten
  • Überwachen des „Tür Offen“ Schalters
  • Ansteuern des 7Segment-Moduls
  • Serielle Kommunikation mit der „Pollin Box“ (LAN-Anbindung)
  • UPCOMING: Kommunikation mit dem Peripheral Controller

7Segment-Anzeigemodul

Der Automat hatte von sich aus schon ein kleines Fensterchen mit rotem Glas, allerdings ohne Display dahinter. Das wollten wir ändern! Hinter der Scheibe befindet sich jetzt eine Platine mit vier 7Segment-Anzeigen. Jede davon ist mit einem Schieberegister verbunden, diese sind miteinander verkettet so dass am Mikrocontroller lediglich vier Pins benötigt werden. Außerdem bleibt die Anzeige erhalten und muss nicht getaktet werden (Multiplexing), was den Controller entlastet.

VIP1710 aka "Pollin Box"

Die VIP1710 ist eigentlich eine Linux basierte IPTV-Settop-Box, die bei pollin.de als „Leergehäuse“ verkauft wird, jedoch noch voll funktionsfähig ist. Genutzt werden im Projekt Alphafluid vor allem LAN, audio-out und die interne serielle Schnittstelle.

Die Box lässt sich mit relativ geringem Aufwand dazu bewegen, ziemlich früh im Bootvorgang ein „alternatives“ Shell-Script auszuführen, mit dem man dann das System beeinflussen kann. Dies wurde vor allem dazu benutzt, um die IPTV-Software zu deaktivieren und einen simplen Audioplayer (mpd) zu implementieren.

Leider ist die interne serielle Schnittstelle nicht beeinflussbar. Diese stellte mit 115200 Baud eine Shell zur Verfügung. Um eine Verbindung vom Mikrocontroller (Core) zum Server herzustellen muss der Mikrocontroller also die entsprechenden Befehle absetzen.

ASM - Annoying Sound Module

Der Automat hat auch einen digitalen Audioverstärker (Class D) und vier Lautsprecher spendiert bekommen. Diese Liegen einfach unten vor dem Gitter im Automat. Der Verstärker ist direkt mit dem Cinch-Ausgang der VIP1710 verbunden.

Refill Button Boards

Da das Auffüllen genau getrackt werden muss und man sich die genauen Zahlen immer merken/notieren muss um sie später im „Lager Inventory Control Kack“ eintragen zu können, wurden Platinen mit je 8 Tastern und 16 LEDs entwickelt, in dreifacher Ausführung im Space hergestellt und an den Schächten angebracht. Mit deren Hilfe ist es bald (sobald der Peripheral Controller fertig ist) möglich, direkt am/im Automat eine Vorbuchung zu erstellen, die man später nur noch quittieren muss. Die geplante Belegung der Taster (4 pro Schacht):

  1. VOLL
  2. +10
  3. +1
  4. -1

Über die LEDs soll zusätzlich ein „Party Mode“ realisiert werden, bei dem die LEDs einfach wilde Muster blinken.

UPCOMING: Peripheral Controller

Der Peripheral Controller wird per I2C an den Core angebunden und stellt diesem zusätzliche Peripherie, wie z.B. die Refill Button Boards oder externe Schalter, zur verfügung.

Software

Sämtlicher Code ist auf github zu finden.

Core

Der atMega32 ist in C programmiert. Er fragt regelmäßig die Eingänge vom Automat ab und schiebt den gewünschten Text durch die Schieberegister der 7Segment-Anzeige. Für die Kommunikation mit dem Server ist wegen der Shell auf der „Pollin Box“ etwas mehr Aufwand nötig. Prinzipiell wird immer dann, wenn der Prompt der Shell empfangen wird, der Befehl für den Verbindungsaufbau mit dem Server abgesetzt. Schlägt dieser fehl, so folgt logischerweise wieder ein Prompt und das ganze geht von vorne los.

Server

Die Aufgabe des Servers, der auf den VServern im RZ des Shackspace betrieben wird, ist es, den Informationsfluss zwischen Automat, Twitter und LICK zu realisieren und die Audio-Files für den Automat bereitzustellen. Die Software ist komplett in Python geschrieben und im Moment noch under heavy development (Code sieht aus wie Sau).

project/alphafluid.txt · Zuletzt geändert: 2012/04/06 19:13 von 93.193.110.22