Kaffeemaschine automatische Abrechnung

  • Hallo,
    möchte euch hier mein 2. Projekt vorstellen, welches ich aktuell am entwickeln bin.


    Nachbau auf eigene Gefahr und Verantwortung!

    Keine Garantie auf Funktion!


    Beschreibung

    Ziel

    Die Tasten des Kaffeevollautomaten sind solange "deaktiviert", bis sich jemand mit einer RFID Karte angemeldet hat und entsprechend noch Kredit zur Verfügung hat gegenüber den eingestellten Kaffeepreis. Anschließend werden die Tasten am Kaffeevollautomat freigegeben. Nachdem Kaffee (Heißwasser wird nicht erfasst) gebrüht wurde, wird der eingestellte Betrag auf dem jeweiligen Benutzer verbucht.


    Menü/Funktionen

    Mittels 4 Taster (plus, minus, menü, ok) wurde ein kleines Menü realisiert, als Anzeige dient ein LCD Display.

    Standard Menü:

    • Aufladen
      Geld auf Chip aufladen, Betrag kann in Untermenü eingestellt werden
    • Reinigung
      Eintragen wer die Kaffeemaschine gereinigt hat
    • Statistik
      Statistikanzeige wer wieviel Kaffee getrunken hat
    • Auszahlen
      Geld auszahlen, bsp. wenn Kaffeebohnen gekauft worden sind
    • Letzter Kaffee
      Anzeige wer den letzten Kaffee getrunken hat, nützlich wenn das Wasser mal wieder leer ist
    • Manuell buchen
      Kaffee manuell verbuchen, sollte es vom System nicht erfasst worden sein
    • Kaffee Limit
      Einstellung des freiwilligen Kaffeelimits zur Anzeige am Startbildschirm (siehe die rechteckigen Kasten in der Anzeige)
      holes Rechteck = offene Kaffee
      ausgefülltes Rechteck = getrunkener Kaffee schraffiertes Rechteckt = Über das Limit getrunkener Kaffee

    Erweitertes Menü mit erhöhten Rechten:

    • Registrieren
      Anlegen eines neuen RFID Chip
    • Löschen
      Löschen eines RFID Chip
    • Preis anpassen
      Kaffeepreis anpassen
    • Kasse angleichen
      Kassenstand angleichen, sollten tatsächlicher und Softwarestand nicht übereinstimmen
    • Entkalken
      Entkalkungsmodus verhindert das Abmelden -> Tasten der Kaffeemaschine dauerhaft bedienbar. Zur Signalisierung blinkende gelbe LED
    • Herunterfahren
      Pi wird ausgeschaltet.


    Heißwasser kann gratis bezogen werden.

    Ebenfalls ist es möglich den Mahlvorgang abzubrechen (sollten keine Bohnen vorhanden sein).

    Dies ist realisiert indem der Zustand des Mahlwerk und der Wasserpumpe über ein Relais zurückgeführt an den Pi wird.


    Zusätzlich wurde eine Messagebox integriert, welche es ermöglicht, Nachrichten dem Benutzer bei Anmeldung anzuzeigen.


    Ein Skript (Auswertung) ist vorhanden um Kassenverlauf, Kaffeebezug zu visualisieren mit Matplotlib.



    Hardware:

    • Steuerung über Raspberry Pi 3
    • RFID Reader RC522
    • LCD 16x2
    • 4 Taster
    • Status RGB LED
    • ULN2803A
    • und sonstige Widerstände



    Software:

    https://github.com/Hofei90/picoffee



    Aktuelle Probleme:



    Gelöste Probleme:

    • LCD Display zeigt immer wieder einmal "komische" Zeichen an, leider lässt sich das Problem nicht direkt reproduzieren




    Bilder:

    Bild von Tastaturplatine der Kaffeemaschine, hier zu sehen, die 2 Widerstände welche ausgelötet wurden. An den Kontaktflächen wird abgegriffen, die Kabel über ein Relais geführt welche bei Freigabe die ausgelöteten Widerstände auf einer eigenen Platine schaltet.



    Zugehöriges Freigaberelias, welche die ausgelöteten Widerständer der Kaffeemaschine schaltet und die beide Relais zur Signalerfassung (Wasser/Mahlwer)


    Übersicht von vorne:


    Detailansicht:

    Platine:





    Stand angehängte Dateien: 23.09.2018

  • Hi,


    ich habe nach so einem Projekt bereits gesucht, da ich (habe bereits eine funktionierende "StandAlone"-Variante) die über php die verschiedenen SmartCards der Kaffeetrinker erkennt. "StandAlone" heißt allerdings, dass das scannen auf Vertrauensbasis funktioniert und wenn jemand einen Kaffee will oder in den Miesen ist kann er immer einen Kaffee trinken ohne zahlen zu müssen.
    Mein nächster Step wäre nun auch die Kopplung zu einer Maschine, habe auch schon diverse Foren durchsucht, die sowas ähnliches bereits mit einem Arduino machen.
    In welcher Sprache möchtest du das realisieren? Hast du Erfahrungen was serielle Schnittstellen angeht? Welche Kaffeemaschine möchtest du versuchen zu koppeln?


    Grüße
    Sandro

  • Quote from "Sandro96" pid='293584' dateline='1501608205'


    In welcher Sprache möchtest du das realisieren? Hast du Erfahrungen was serielle Schnittstellen angeht? Welche Kaffeemaschine möchtest du versuchen zu koppeln?


    Hallo,
    also der Code ist in Python3 geschrieben.
    Leider habe ich keine Erfahrungen mit seriellen Schnittstellen, hab ich aber bisher auch noch nicht gebraucht. Ansonsten lässt sich auch das bestimmt erlernen :thumbs1:
    Für was würdest du denn die serielle Schnittstelle benötigen?


    Also Kaffeemaschine ist bei uns im Moment eine delonghi rapid cappuccino esam 3500 in Verwendung. Das Funktioniert auch wie gewollt, Relais auf, Tasten der Kaffeemaschine funktionieren nicht, Relais geschlossen, Tasten funktionieren.


    Also bei meinem Programm kann aktuell jeder seinen Chip selbst aufladen, bei uns gehts auch nicht wirklich darum, hier eine scharfe Kontrolle zu haben, sondern einfach dass a) das Strich auf Liste machen wegfällt, und b) ja ich suchte ein Projekt zum üben :D


    Aber mit einer kleinen Programmänderung, kann man das auch realisieren dass nur noch der "Master" ins Aufladen Menü kommt, mit kleiner Ergänzung dann welcher Chip aufgeladen werden soll.



    @all, jemand eine Idee an was das mit dem Displayproblem liegen könnte? Bei dem ULN ist die Freilaufdiode angeschlossen, auch tritt das Problem auch auf wenn das Relais nicht angesteuert worden ist. Liegts am Programmcode?


    Beitrag #1 aktualisiert

  • Geile Sache! Kannst du mal ein paar Fotos posten von Platine, Verschaltung, Tastenfeld, Display und so?


    Dein Display hängt an 5V, die Datenleitungen an den Pi GPIOs, die nur für 3,3 V ausgelegt sind. Bist du sicher, dass das keine Probleme gibt? Im Falle von Spannung auf den Display-Eingängen kannst du den Pi schrotten (wobei es unsinnig wäre, wenn ein Eingang plötzlich Spannung führt). Es kann aber sein, dass das Display in ungünstigen Situationen die Pegel vom Pi nicht richtig erkennt. Hast du einen Level Shifter dazwischen? Vielleicht liegt schon da das Problem.
    Falle es das nicht ist: Hast du mal ein anderes Display ausprobiert oder auch mal das Display unabhängig von dem Kaffeesystem gecheckt? Vielleicht liegt es am Display...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Fotos gebe ich in Auftrag, seh für 2 Wochen die Kaffeemaschine nicht :D


    Also bei dem Displayaufbau habe ich mich an die Beschreibung von dem Buch "Raspberry Pi - Das umfassende Handbuch" gehalten, dort heißt es nur, dass der R_W Kontakt des Displays zwingend auf Ground gelegt werden muss, damit das Display auf die Datenleitung keine Spannung (5V) gibt. Die 3,3V vom Pi sollen ausreichend sein als klare Signale für das Display, weshalb auch kein Level Shifter verbaut ist.


    Wo ich langsam ins zweifeln komme ist, ob es denn so eine gute Idee war die Jumper Kablen welche Steckbar sind zu verwenden :stumm: Ob es nicht doch besser gewesen wäre, die Kabeln zu verlöten?!



    Schön dass sich zu dem Problem doch noch wer geäußert hatte, wollte es schon Auslagern in ein anderen Bereich des Forums in der Hoffnung, dass dort dann jemand auf das Problem eine Antwort gibt. Im Projekt Forum kann es doch schnell mal untergehen, denn jeder der sich dafür nicht interessiert (lt. Überschrift des Threads) wird das Projekt nicht wirklich verfolgen und somit auch nicht mitbekommen dass dort Hilfe benötigt wird, wo man doch eventuell Hilfestellung geben könnte.

  • Welches Display ist es genau? Hast du ein Datenblatt dazu? Das mit den 3,3 V Pegeln auf 5 V ist je nach Fall mal mehr und mal weniger praktikabel. Da du nur Daten sendest, bau dir doch einen Treiber mit ein paar Transistoren und schau, ob das Problem verschwindet. Du hast ja nur vier Leitungen...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Python ist nicht so extrem schnell. Ein paar KHz... Ein hgw Transistor schafft 100 MHz.
    Aber bevor du jetzt bei Conrad vier Transistoren orderst, bekommst du für das Geld auch schon einen Level Shifter.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Edited once, last by Gnom ().

  • Ich bin zur Zeit dabei deine Kaffee Abrechnung nachzugebaut.

    Verwendet habe ich einen Drehimpulsgeber mit Taster, da mir die Anzahl an Tastern zu viele waren.

    Deswegen hat sich der Code bei mir komplett geändert.

    Ich bin dennoch sehr begeistert von deinem Projekt und wollte dir Danke sagen!

    Dein Code hat mir geholfen den Einstieg zu finden!


    Daumen hoch!:bravo2::thumbup:

  • Neues Update zum Projekt:

    Software wurde entfernt, diese ist zukünftig auf Github zu finden.

    https://github.com/Hofei90/picoffee


    Neue Features:

    • Messagebox: Anzeige von Nachrichten am Display nach Anmeldung.
      System kann sich merken wer die Nachricht schon gelesen hat und wer nicht (Nachricht wird einmalig angezeigt nachdem sie quittiert wurde)
      Hier ein besonderer Dank an noisefloor, der mir bei der Umsetzung mit Peewee behilflich war!
    • Statistiken zum Kaffeekonsum
  • Weitere Bilder hinzugefügt.

    schön!

    Ich hoffe du hast dir bei der Wahl der Sockel kein Eigentor geschossen!


    Diese Typen sind früher(TM) gerne mal ausgefallen, besser man spendiert gleich Präzisionssockel

    https://www.ebay.de/itm/Sockel…ontakte-Gold/172409227388

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • werd ich im Hinterkopf behalten.

    nicht vergessen, wir mussten früher etliche CBM apple2 usw. wiederbeleben mit beherzten Druck auf die Chips, wenns knirscht kontaktierte er wieder, die Teile gammeln halt und Zinn an den IC Beinen oxidiert.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)