<del>MinusEinsEnterSlashButton</del>

Status: retired

Wer Arbeitete dran

Pixtxa

Problemstellung

Um Getränke zu zahlen, erfordert das aktuelle Bezahlsystem nach dem Scannen der RFID-Karte folgende Eingaben auf dem Ziffernblock:

Minus, um einen Betrag abzubuchen

Den Betrag in Euro als Ziffern, wobei alle Getränke einen Euro kosten und vom Bezahlsystem keine Nachkommastellen unterstützt werden.

Enter, um den Betrag abzubuchen

Slash, um sich aus dem Benutzerkonto abzumelden

Erfolgt längere Zeit keine Eingabe, gibt das Terminal ein schwarzes Bild aus. Dabei wird jedoch keinerlei Strom gespart, da der Monitor selbst an bleibt. Um das Terminal dann verwenden zu können, muss erst eine Taste gedrückt werden. Zudem steht die Meiste Zeit ein schwarz leuchtender Monitor in der Ecke.

Manchmal verliert der RaspberryPi die Verbindung zum RFID-Leser und muss neugestartet werden.

Dazu muss das Netzteil gefunden, aus- und wieder eingesteckt werden.

Lösung

Ein Digispark emuliert eine USB-HID-Tastatur und drückt alle 3 Minuten die Numpad-Multiply-Taste, welche am Terminal softwareseitig keinerlei Funktion besitzt. Dies hält den Monitor aktiv, sodass er ein hübsches vspace.one-Logo anzeigt und sofort einsatzbereit ist. Der RFID-Leser bekam zudem einen Button in sein Gehäuse eingebaut, welcher nach kurzem Druck dem Controller per GPIO0 befiehlt, nacheinander die Tasten NUMPAD_MINUS, NUMPAD_1 und NUMPAD_ENTER auf der emulierten Tastatur zu drücken, etwas zu warten und dann NUMPAD_SLASH zu drücken. Wird während der Wartezeit erneut die Taste gedrückt, startet die Sequenz von neuem und es wird ein weiteres Getränk abgebucht. 5 Sekunden nach dem letzten Loslassen der Taste erfolgt automatisch die Abmeldung. Wird die Taste für über 0,5 s gedrückt gehalten, wird die Ausführung der Sequenz abgebrochen und die Taste kann losgelassen werden, ohne dass etwas abgebucht wird. Mit einem Tastendruck von über 1,5 s wird über GPIO2 des Digisparks mittels 1 kΩ-Widerstand ein NPN-Transistor durchgesteuert, welcher per Open Collector den RUN-Pin am RaspberryPi aktiviert, was einen Reset bewirkt. Die Status-LED an GPIO1 teilt zudem mit, in welchem Modus sich der Digispark gerade befindet.

Der Code wurde auch wieder in der Arduino-IDE geschrieben und ist auf Github zu finden.