Saeco Office Royal Kaffeevollautomat mit RFID Zugangskontrolle

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:
Saeco_Demontage_hinten
Jetzt den Kaffeebehälter abnehmen. Darunter eine Gehäuseschraube lösen und den Mahlwerksanzeiger abschrauben:
Saeco_Demontage_hinten2
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:
Saeco_Demontage_vorne1
Saeco_Demontage_vorne2
Man kann nun den oberen Gehäuseteil anheben. Um ihn abzunehmen muss man noch das Erdungskabel (Achtung kleiner Sicherungspin) sowie den Wasserschlauch abziehen.
Saeco_Demontage_Topabnahme
Man kann nun auf die Hauptplatine der Kaffeemaschine schauen. Das Tastenfeld liegt dahinter:
Saeco_Mainboard
Nun die Fixierungsschrauben des Mainboards lösen und das Mainboard abziehen; es gibt noch einen Steckverbinder zu dem davor liegenden Tastenfeld.
Saeco_Mainboard_Backside

Umbau:
Neben dem Tastenfeld kann man die RFID Antenne des RDM630 Lesers montieren:
Saeco_RFID_Antenne
Das folgende Bild zeigt die Platine des Tastenfeldes; der Ausbau ist für einen Nachbau nicht nötig. Man kann hier die Pinbelegung ableiten:
Saeco_Tastenfeld_Platine
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:
Saeco_Display_Power
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:
Saeco_Office_Control

Ä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.
Saeco_Position_Zusatzelektronik

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.
Saeco_Office_Professional_RFID
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.

13 Gedanken zu „Saeco Office Royal Kaffeevollautomat mit RFID Zugangskontrolle

  1. Willi

    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.

    Antworten
    1. ST Beitragsautor

      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

      Antworten
  2. Dirk Beyer

    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

    Antworten
  3. ST

    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

    Antworten
  4. Mathias

    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

    Antworten
  5. Benny

    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 ?

    Antworten
    1. ST Beitragsautor

      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

      Antworten
  6. Markus

    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

    Antworten
    1. ST Beitragsautor

      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

      Antworten
      1. Markus

        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

        Antworten
  7. Oliver

    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

    Antworten
    1. ST Beitragsautor

      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

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.