In der Firma in der die „Chefin des Hauses“ arbeitet, gibt es eine von der Abteilung beschaffte Saeco Office Royal Kaffeemaschine. Diese Maschine wurde nun in eine große, abteilungsübergreifende Küche umgezogen. Um Ärger durch Fremdnutzung zu vermeiden, habe ich die Kaffeemaschine mit einem RFID Zugangssystem ausgestattet.
Ziele:
– kein Kaffee ohne passenden RFID
– einfache Freischaltung
– kostengünstiger Umbau (~25€)
– ca. 25 Teilnehmer mit passenden RFIDs ausstatten
– reversibler Umbau in der Kaffeemaschine
Die vorgeschlagene Schaltung könnte man auch um ein automatisches Abrechnungssystem erweitern.
Kosten (orientiert an den Aliexpress Preisen):
– Arduino Nano Clone; ca. 2,50€
– SD Kartenleser; ca. 2,00€
– RFID Leser RDM630, ca. 2,40€
– 50 RFID Tags, ca. 8,10€
– kleines Gehäuse, ca. 4€
– kleine SD Karte, Lötzinn, Lochplatine -> lag noch rum
Die Idee:
– Das Tastenfeld der Kaffeemaschine blockieren, solange kein gültiger RFID gelesen wird.
– RFID Codes auf SD Karte speichern, um viele Codes hinterlegen zu können und einfach wechseln zu können.
Da ich keine Dokumentation zu dem Anschluss für den Saeco Münzautomaten finden konnte, habe ich einen alternativen Ansatz gefunden.
Demontage der Saeco Office Royal:
Kaffee- und Wasserbehälter leeren. Wasserbehälter entfernen. Es werden mehrer Schrauben sichtbar. Diese entfernen:
Jetzt den Kaffeebehälter abnehmen. Darunter eine Gehäuseschraube lösen und den Mahlwerksanzeiger abschrauben:
Der obere Gehäuseteil wird nun noch durch zwei Schrauben an der Front gehalten. Diese findet man, wenn man von vorne/unten auf die Maschine schaut:
Man kann nun den oberen Gehäuseteil anheben. Um ihn abzunehmen muss man noch das Erdungskabel (Achtung kleiner Sicherungspin) sowie den Wasserschlauch abziehen.
Man kann nun auf die Hauptplatine der Kaffeemaschine schauen. Das Tastenfeld liegt dahinter:
Nun die Fixierungsschrauben des Mainboards lösen und das Mainboard abziehen; es gibt noch einen Steckverbinder zu dem davor liegenden Tastenfeld.
Umbau:
Neben dem Tastenfeld kann man die RFID Antenne des RDM630 Lesers montieren:
Das folgende Bild zeigt die Platine des Tastenfeldes; der Ausbau ist für einen Nachbau nicht nötig. Man kann hier die Pinbelegung ableiten:
Netterweise hat Saeco das komplette Tastenfeld mit einer gemeinsamen Masse für alle LEDs und alle Tasten realisiert. Der Gesamtstrom beträgt weniger als 40mA, wenn alle LEDs leuchten. Und hier ist dann die triviale Lösung für die Aufgabe: Wir biegen den GND Pin zur Seite. Diesen Pin steuern wir über einen Arduino: Hochohmig (Input), wenn deaktiviert. Low(GND) für 10 Sekunden, wenn ein passender RFID gelesen wird. In diesem Fall fangen auch die Tasten-LEDs zu leuchten. Dadurch wird dem Benutzer klar signalisiert, dass die Kaffeemaschine jetzt freigeschaltet ist.
Also habe ich den Massepin des Tastenfelds wie im Foto gezeigt zur Seite gebogen und ein Jumper Kabel (weiblich) aufgesteckt. Die für den Arduino nötige 5V Spannung habe ich am Display organisiert:
Damit sind alle nötigen Anschlüsse vorhanden und die RFID Antenne montiert. Es muss nun noch die im Folgenden beschriebene Zusatzplatine eingebaut werden. Danach erfolgt der Umbau in umgekehrter Reihenfolge.
Die Zusatzplatine:
Die notwenige Schaltung ist die Kombination zweier Standardaufbauten:
1. SD Kartenleser am Arduino unter Verwendung der Standardpins.
2. RDM630 RFID Leser mit Signalausgang an Pin D3 des Arduinos; die Codes werden dann per Softserial eingelesen.
Hier ist der Schaltplan dazu:
Änderung 29.06.2016: (noch nicht im Schaltplan)
Wenn man die Schaltung so aufbaut, kann man die Saeco Maschine nicht mehr in den Programmiermodus bringen. Dazu muss man nach Anleitung zwei Tasten drücken und während dessen die Maschine einschalten. Leider klappt es nicht, den Arduino-Pin direkt am Anfang in setup() schnell genug auf low zu bringen.
Die Lösung war dann doch ganz einfach: Den Pin D2 per 1,5kOhm auf Masse ziehen. Mit diesem Trick funktioniert das Tastenfeld unabhängig von D2, wenn die Tastenleds ausgeschaltet sind. Wenn die LEDs an sind, kann man die Tasten weiterhin mit low vs high-Impendance freischalten. Ein Bezug von Kaffee klappt ohnehin nur, wenn die LEDs leuchten und in den Programmiermodus kommt man so auch.
Die Schaltung habe ich in ein kleines Plastikgehäuse montiert und mit doppelseitigem Klebeband hinter dem Mainboard fixiert. Ich habe 50 RFIDs auf der SD Karte vorkonfiguiert, so dass die Karte im Gehäuse montiert werden kann.
Der Arduino Code:
Entsprechend der Schaltung ist auch der Code entlang der Standardcodebeispiele realisiert. Wird ein RFID Code auf der Softserial Schnittstelle empfangen, so prüft der Arduino, ob sich dieser Code in der Datei RFID.dat auf der SD Karte findet.
Bei der RFID.dat handelt es sich um eine Textdatei, in der die RFID Codes zeilenweise untereinander stehen. Die Codes kann man sich im seriellen Monitor der Arduino IDE anzeigen lassen, wenn man einen RFID an der Antenne vorbeizieht. Es handelt sich um den RFID Code in dem Format, in dem er vom RDM630 Leser kommt.
Der Arduino Code: Saeco_RFID_Control
Und hier ist noch ein Bild der wieder zusammengebauten Maschine mit RFID Aufkleber an der Antennenposition.
Die Schaltung ist aktuell seit 4 Wochen im Dauerbetrieb und funktioniert bei den Mitarbeitern zur Zufriedenheit. Viel Erfolg und Spass beim Nachbau oder bei der Erweiterung.
P.S.: Für ein Abrechnungssystem könnte man die Tasten des Tastenfeldes selbst über den Arduino ziehen und damit ein Abrechnungssystem realisieren. Man könnte weiterhin die gezogenen Kaffees zu jedem RFID Code auf SD Karte speichern. Die SD Karte müsste dann natürlich von außen zu erreichen sein.
Schönes Projekt! Ich würde es gerne für etwas anderes verwenden… aber wie werden die RFID-Codes
auf der SD Karte gespeichert?
Ich habe zB folgende Codes : 8848572; 926556; 1292971; 9021062; 9502421; 8889678;4624916 usw.
Hallo Willi,
die Codes stehen in der Datei Rfid.dat einfach als Textdatei untereinander. Gescannte Codes werden auch auf dem seriellen Interface ausgegeben (egal ob bekannt oder unbekannt). Von dort kannst Du sie dann übernehmen. Die Codes sind hexadezimal kodiert.
Gruss Stefan
Du hast nicht zufällig das Programm zum Bezahl-Kaffe geschrieben. Wir ( Kollegen ) haben uns auch einen Kaffeevollautomat geholt und ich habe ihn nun auch auf RFID umgebaut. Bin aber im Programmieren nicht so fit. Wenn das Programm so erweitert würde das Die Person noch einen Zähler integriert hat und den auf Karte Speicher wäre das Klasse. Habe aber zu wenig ahnung um das zu programmieren.
Danke Dirk
Hallo Dirk,
aktuell werde ich nicht dazu kommen, Euch den Code passend zu machen. Es ist aber nicht schwer. Ihr könntet einfach den empfangenen und gültigen RFID Code in eine Datei schreiben (anhängen). Die Datei ziehst Du am Monatsende in Excel und lässt auszählen, wie oft ein bestimmter RFID benutzt wurde. Dann die Datei von der SD Karte löschen und die nächste Abrechnungsperiode fängt an.
Gruss Stefan
Hi Stefan,
das Projekt hört sich gut an.
Jedoch will ich meine Kaffeemaschine über WLAN steuern.
Folgende Problemstellung:
meine Kaffeemaschine schaltet automatisch nach 12 Minuten ab.
Der Wassertank ist aber noch halb voll.
Entkalken hat aber nichts gebracht.
Nun heißt es 12 Minuten warten, bis die Kaffeemachine aus ist, danach neu einschalten.
Ausserdem wäre es cool, wenn man die Maschine bereits im Bett einschalten könnte.
Gruß,
Mathias
Hi Mathias,
die Kaffeemaschine kannst Du über eine WLAN Steckdose an/abschalten. Wenn Du den Arduino durch einen ESP8266 ersetzt, sollte der WiFi Kaffee Bestellung aus dem Bett nichts entgegen stehen. Tipps dazu z.B. hier
https://blog.thesen.eu/stabiler-http-1-1-wlan-webserver-mit-dem-esp8266-microcontroller/
Gruss Stefan
Hallo Stefan,
ich würde das gleiche in unsrer Maschine gerne nachrüsten, allerdings mit einem Bezahlsystem….
aber wie mache ich das genau mit dem aufladen ?
Hallo Benny,
Aufladen könnte man auf verschiedene Arten realisieren. Du könntest die Nutzungszahl eines RFID Tags auf der SD Karte speichern. Wenn z.B. 50 Bezüge voll sind, nimmst Du den Tag nicht mehr an. Die entwerteten Tags sammelst Du wieder ein. Irgendwann bearbeitest Du die SD Karte per PC und gibst die wieder frei.
Oder Du nimmst einen weiteren Arduino Pin und machst einen Schlüsselschalter dran. Wenn der Schlüsselschalter Kontakt gesetzt ist, schreibst Du den nächsten erkannten Tag in eine Liste usw…
Viele Möglichkeiten – aber auch einiges zu Kodieren.
Gruss Stefan
Hallo Stefan,
ich habe einen ähnlichen Anwendungsfall mit einem Uno und der SD-Karte auf einem Ethernet-Shield,
nur leider wird die gespeicherte ID (welche auch angezeigt wird) nicht akzeptiert und es kommt „Code not found!“. Alles andere wie SD initialisieren funktioniert, ich habe jedoch den Pin 2 nicht belegt.
Könntest du mir hier bitte weiterhelfen?
Viele Grüße Markus
Hallo Markus,
Was meinst Du mit Pin2? Offenbar hast Du die Pin Belegung ja so geändert, dass es für die SD auf dem Shield passt, oder?
Gruss Stefan
Hallo Stephan,
Pin 2 (Enable Keypad) ist nicht angeschlossen, nur Pin 3 (TX RDM630) wie in deinem Beispiel.
Vielleicht stimmt meine ausgelesene und auf SD hinterlegte ID z.B. 0D003D5C87XX nicht?
Oder die SD muss anders gelesen werden, da von Ethernet-Shield?
Komme hier leider nicht wirklich weiter… vielleich hast du einen Rat 🙂
Viele Grüße
Hallo Stefan,
Vorweg ein Riesenlob: ich bin von deinem veröffentlichten Projekt begeistert und dadurch inspiriert, in unserem Büro etwas vergleichbares aufzubauen!
Allerdings hapert es bei mir ein wenig mit dem Nachbau, da bereits die Verbindung von Arduino Nano mit SD Card Modul Probleme bereitet. Bedarf es bei dem gewählten SD Modul nicht eines zusätzlichen Pegelwandlers, um die Signale auf SD-Card verträgliche 3,3V herunterzubringen? Hierzu steht in deinem Blogeintrag nichts. Andere Quellen sehen dies jedoch als unabdingbar an.
Und noch eine allgemeine Frage: Wenn man bei meiner Saeco Office Heißwasser wählt, muss man den Bezug mit einem weiteren Tastendruck beenden. Bei deiner Programmierung ist dann aber die Taste gar nicht mehr anwählbar, so dass das Wasser ewig weiterliefe, oder?
Viele Grüße,
Oliver
Hallo Oliver,
im Prinzip hast Du Recht. Das gezeigte SD Modul hat einen 3.3V Regler für die Versorgung der SD Karte, aber keine Pegelwandler für die Signalleitungen. Ich habe diese in mehreren Schaltungen nicht verwendet und hatte nie Probleme. Es ist aber letztlich jenseits der Spezifikation.
An die Sache mit dem Heißwasser erinnere ich mich nicht mehr so genau (hab das für eine Office Maschine im Büro meiner Frau gebaut). Ich meine aber, dass das kein Problem war. Das Tastenfeld bleibt nach Aktivierung für 10 Sekunden an.
Gruss Stefan
Hallo Stefan,
da schließe ich mich an – ein schönes Projekt! Theoretisch könnte man so ja auch über ein 5v Relais dann 220v schalten, oder? Wenn man längere Schaltzeiten wollte, wie z.B. 10 Minuten, könnte man den „delay“ Wert entsprechend in Millisekunden anpassen?
Bei meiner Bürokaffemaschine lässt sich leider nichts sinnvolles zum Missbrauchschutz abgreifen . . . 6 Touch Tasten welche direkt ans Mainboard gehen (Saeco Incanto Sirius) 🙁
VG,
Sebastian
Hallo Sebastian,
Du kannst ein Relais ansteuern und damit die Maschine komplett an und ausschalten. Das ist dann allerdings wie den Stecker aus der Wand zu ziehen. Du kannst vermutlich nicht kontrollieren wieviel Kaffee jemand zieht. Die Maschine wird vor dem Ausschalten nicht gespült und wird das dann nach dem „Stromausfall“ nachholen. Die meisten Maschinen durchlaufen nach einem Stromausfall eine Art Spülen & Selbsttest Programm. Ich weiß nicht, ob das so wirklich empfehlenswert ist.
Gruss Stefan
Hallo Stefan,
ja da hast Du vermutlich recht, ein dauerndes ein und ausschalten auf dem harten Weg ist nicht die beste Lösung. Ich habe mir die Touch Tasten Platine für die Kaffeebezüge noch einmal angesehen, evtl. gibt es da doch eine Lösung ohne Relais mit Schaltung von GND nach Deinem ursprünglichen Prinzip. Bin gespannt und warte auf die Teilelieferung.
Danke und Gruß,
Sebastian