Inhaltsverzeichnis
Alphafluid (Legacy & Resurrection)
Der Neue Code auf dem mate automat ist unter alphapi bekannt. 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
Liste 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
7-Segment-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 7-Segment-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.
Die „Pollin Box“ wurde durch einen → Raspberry Pi ersetzt
Raspberry Pi
Sitzt vermittels Klettverschuß an der Stelle auf der inneren Türe des Automaten, wo seinerzeit die → „Pollin Box“ montiert war. Dieser läuft unter der Bezeichnung alphapi
ToDo 2022-08-05 : herausfinden, was der Pi so treibt.
ASM - Annoying Sound Module
Der Automat hat auch einen digitalen Audioverstärker (Class D) und zwei Lautsprecherboxen spendiert bekommen. Diese Boxen stehen einfach unten vor dem Gitter im Automaten. Der Verstärker ist direkt mit dem Cinch-Ausgang der VIP1710 (Stand 2022-08-04 vmtl. mit dem Raspberry Pi) verbunden.
Geierauge - Bewegungsmelder
[Quelle: reverse engineering 2022-08-03]
- Verbaut sind zwei Bewegungsmelder.
- Auf deren Platine finden sich die Angaben „94V-0“ „E213371“ „AP-Search-A“ „WAA02075XXA“ und „BM-2“.
- Die Kontakte am (einzigen) Steckverbinder „J16“ sind von links nach rechts gekennzeichnet mit „GND“, „OUT“ und „+5V“
- Die Bewegungsmelder sind mit einer 10-adrigen, weißen Schaltleitung angeschlossen
- Diese Leitung führt hinten in den Automaten, unten links auf die Automatentüre und im Kanal hoch zu einer nicht serienmäßigen Zusatzplatine.
- Bewegungsmelder 1 ist folgendermaßen beschaltet:
- GND - schwarzer Draht
- OUT - brauner Draht
- +5V - grauer Draht
- zwischen GND und OUT liegt ein Widerstand 56k
- Bewegungsmelder 2 ist folgendermaßen beschaltet:
- GND - grün
- OUT - lila
- +5V - blau
- zwischen GND und OUT liegt ein Widerstand 56k
- Die Drähte gelb und rot sind ungenutzt
- Das Geierauge triggert die LED-Leisten an der Türe und oben auf dem Automaten (immer) sowie das ASM (nach dessen eigenem Ermessen).
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):
- VOLL
- +10
- +1
- -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).