FAKEDOMAIN.DE

Her mit dem Geld

Kassenschubladenöffner oder neudeutsch Cash Drawer Opener mit iButtons und PC-Anschluss

Und wieder mal ein Projekt was es geschafft hat komplett realisiert zu werden, wenn auch nicht schön programmiert.
Das Problem war eine einfache Tischkasse im Laden. Diese hatte zwar ein Schloss aber nur einen Schlüssel. Mit dem Ergebnis, dass der Schlüssel meistens steckte und die Kasse offen war. Und, wie es abzusehen war, fehlte irgendwann Geld, warum auch immer. Nun war guter Rat nicht ganz so teuer. Ich hatte noch eine alte elektrisch ansteuerbare Kassenschublade bei der ich nur einen Taster zur Erkennung der offenen Schublade nachrüstete, eine Tüte voll iButtons von Dallas und eine paar ATMegas. Deshalb ist im Schaltplan ein ATMEGA644 eingezeichnet, in der Software ein MEGA32 parametriert und gereicht hätte auch irgendwas wie der Tiny861.

Die Schublade arbeitet mit 24V was ein kleines Problem aufwarf. Ich hätte ein 24V-Netzteil nehmen können und den Atmel via Stabi mit 5V versorgen. Oder, was eleganter wäre, die Schaltung als auch die Schublade via 5V betreiben. Besonders da auch ein PC mit USB in der Nähe steht. Also das Breadboard ausgepackt und probiert. Und, welch ein Wunder, schon mein erster Entwurf funktionierte wie gewünscht. Die Schaltung ist einfach. Ich nutze einen Aimtec AM1S-0524 1Watt DC/DC-Wandler der die 5V auf 24 hochsetzt. Dieser liefert 42mA auf der 24V-Seite. Dahinter mit einem LM317 im TO92-Gehäuse und einem 33Ohm Widerstand eine Konstantstromquelle aufgebaut die auf 37mA begrenzt ist und den 4700uF-Elko lädt. Das dauert so drei Sekunden bis er soweit geladen ist dass man schalten kann. Und geschaltet wird die Spule mit einem TTL-MOSFET. Das wars es auch schon.

Schaltplan Und hier noch das EAGLE-File dazu.

Der Rest war dann nur noch eine kleine Programmierarbeit. Dachte ich. Aber dann kamen die Kleinigkeiten. Wie lerne ich die Buttons an? Wie lösche ich verlorene Buttons? Wenn die Schaltung schon am Rechner hängt, kann er die Schublade auch öffnen? Heraus kam dann das:

Und dazu der BASCOM-Sourcecode

Die Schaltung, so wie ich sie aufgebaut habe, hat einen billigen 2 Euro USB-RS232-TTL Adapter mit einem Profilic PL2303-Chipsatz. Der taucht unter Windows, entsprechende Treiber vorausgesetzt, als COMx auf. Unter Linux halt als ttyUSBx. Dann kann man sich z.B. unter Windows einen Generic / Text Only-Drucker einrichten. Druckt man nun ein Dokument auf diesem Drucker und es erscheint im Datenstrom entweder die ESC-Sequenz oder die acht programmierten Zeichen, öffnet sich die Schublade. Genauso kann man natürlich auch per Batch die Schublade ansteuern. Zum Programmieren benutzte ich ein Terminalprogramm a la HTerm bzw. beim Kunden vor Ort die Batchdatei im Anhang. Aber nur mit einem Terminalprogramm bekommt man natürlich auch die Ausgaben angezeigt. Und zu beachten ist auch, dass Windows keine Zugriff auf die serielle Schnittstelle zulässt wenn ein Drucker darauf eingerichtet ist.

Batch-Datei zum Bedienen und Programmieren des Moduls

Und hier noch die Liste der Kommandos die das Modul versteht:
Schalten des Ausgang 1
ASCIIESCp0t1t2
Dez271120,480-2550-255
Hex1B700,3000-FF00-FF

Schalten des Ausgang 2
ASCIIESCp1t1t2
Dez271121,490-2550-255
Hex1B701,3100-FF00-FF
Zur Bestätigung des Schaltvorganges gibt Gerät einen Ton aus. Die Zeiten t1 und t2 werden ignoriert

Programmierbar via serielle Schnittstelle mit ESC-Sequenzen
Programmiermodus einschalten zum Einlesen eines Button
(Bis zu 9 Buttons anlernbar)
ASCIIESC_P
Dez279580
Hex1B5F50
Nach Absenden der Sequenz geht das Gerät in eine Endlosschleife zum Einlesen eines Buttons. Es ertönt ein Intervallton. Wird ein Button aufgelegt und korrekt eingelesen bestätigt das Gerät mit einem Piepston, im Fehlerfall ertönen vier kurze Signaltöne und die Funktion wird abgebrochen. Abbrechen kann man diese Funktion nur durch Einlesen eines Buttons oder dadurch, dass das Gerät stromlos gemacht wird.

Anzeige der gespeicherten Buttons
ASCIIESC_L
Dez279576
Hex1B5F4C


Löschen des Speicherplatzes n (1-9)
ASCIIESC_D1-9
Dez27956849-57
Hex1B5F4431-39


Programmiermodus einschalten und Einlesen einer Textsequenz zum Öffnen (8 Zeichen)
ASCIIESC_RC1 .. C8
Dez2795820-254
Hex1B5F5200-FE


Hilfeseite
ASCIIESC_?
Dez279563
Hex1B5F3F


(C) Joachim Fossie Bär Reiter 2009