SmartMix Industrie 4.0 am Beispiel eines Cocktailmixer von: Nils Ostrowski, Yorrick Schwappacher, Martin Schurig, Christopher Zagala February 1, 2017 Contents 1 Einleitung 1.1 Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Verwendete Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 2 Team 3 3 Anleitung 3.1 Bedienungsanleitung . . . . . . . . 3.1.1 Pumps . . . . . . . . . . . . 3.1.2 App/NFC-Tag beschreiben 3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 4 4 4 Projekt im Detail 4.1 Ablauf des Projekts . . 4.1.1 Erste Planung . 4.1.2 Ablauf . . . . . . 4.2 Schwierigkeiten . . . . . 4.3 Datenstruktur NFC-Tag 4.4 Dokumentation PSoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 6 5 Fazit 5.1 Erweiterbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Allgemeines Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 6 Weitere Informationen 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1.1 Einleitung Beschreibung Bei unserem Projekt SmartMix handelt es sich um einen automatischen Cocktailmischer. Zunächst wird in unserer Android-App der gewünschte Cocktail ausgewählt. Daraufhin hält man sein Handy an ein Glas, auf dem ein NFC-Tag klebt. Nachdem der gewünschte Cocktail auf den NFC-Tag geschrieben wurde, wird das Glas in den Cocktailmischer gestellt und der gewünschte Cocktail wird in das Glas gefüllt. 1.2 Verwendete Technologie Figure 2: Schematischer Aufbau des Cocktailmischers Figure 1: Cocktailmischer mit Hardwaredetails Die obigen Bilder zeigen den physikalischen Aufbau des Cocktailmischers. Figure 1 zeigt den Aufbau des fertig Projekts inklusive aller Hardwarekomponenten. In Figure 2 ist die schematische Relation aller Komponenten dargestellt. Die verwendeten Pumpen (Yosoo DC 12 D4) sind sogenannte Peristaltikpumpen und werden mit 12 Volt Gleichstrom betrieben. Diese wurden gewählt damit die Flüssigkeit den Schlauch, selbst in der Pumpe, nicht verlässt. Das hat zwei Vorteile: Erstens, nur der Schlauch muss lebensmittelecht sein, nicht die Pumpe. Zweitens, ist das Reinigen der Anlage einfacher. Dieses Pumpenmodell weißt jedoch auch Nachteile auf. Das wäre zum einen, dass sie auf Grund ihres Aufbaus relativ viel Strom verbrauchen (0.5 Ampère pro Pumpe). Zweitens, ist das für dieses Projekt gewählte Pumpenmodell mit 12 Volt etwas langsam, es genügt jedoch um die Vorgehensweise zu verdeutlichen. Die verwendeten Motorsteuerungen (L298N) dienen als Verbindung zwischen den 6 Pumpen und dem Mikrocontroller. Diese versorgen die Pumpen mit dem nötigen Strom. Es können je zwei Pumpen über eine Motorsteuerung geschaltet werden. Hinweis, während den Projektarbeiten wurde festgestellt, dass die Motorsteuerungen einen Spannungsabfall von 2 Volt aufweisen. Diese müssen daher mit 14 Volt betrieben werden, sofern die vollen 12 Volt an den Pumpen anliegen sollen. Als Herzstück des Projektes dient ein Mikrocontroller Entwicklungsboard (CY8CKIT-044) der Firma Cypress. Der auf diesem Board verbaute Mikrocrontroller () stellt die Kommunikation mit dem NFC-Reader bereit, verarbeitet die vom NFC-Tag ausgelesenen Informationen, steuert die Pumpen und stellt eine Terminalanwendung über eine virtuelle UART-Schnittstelle bereit. Über diese können diverse Einstellungen vorgenommen werden. Der NFC-Reader (NXP-OM5577) ist über eine I2C Schnittstelle mit dem Mikrocontroller verbunden. Dieser ließt die, an Gläsern befindlichen, NFC-Tags aus und schickt die Daten des geschünschten Cocktails zur weiterverarbeitung an den Mikrocontroller. 2 Der Schlauch besteht aus Silikon und stammt von schlauch-profi.de. Er ist lebensmittelecht und kann Flüssigkeiten bis zu einem 90% Alkoholgehalt langfristig transportieren. 2 Team Nils Ostrowski Softwareentwicklung PSoC (Interface zu NFC Reader, Terminalanwendung und Pumpensteuerung), Aufzeichnung und Schnitt YouTube Video Yorrick Schwappacher Softwareentwicklung Android-App (unter anderem: User Interface, Kommunikation mit NFC-Tags, Datenstruktur) Martin Schurig Softwareentwicklung PSoC (Parser und Pumpensteuerung), Holzarbeiten, Aufzeichnung YouTube Video, Dokumentation Christopher Zagala Softwareentwicklung PSoC (teilweise Pumpensteuerung), Bildaufnahmen, Dokumentation (Bedienungsanleitung) Grundlegende Entscheidungen und die allgemeine Vorgehensweise wurden gemeinsam im Team getroffen. Allgemein sind die Übergänge zwischen den Aufgabengebieten der einzelnen Mitglieder fließend. 3 3.1 Anleitung Bedienungsanleitung An dem Development Board existiert eine USB-Schnittstelle, die eine virtuelle UART-Schnittstelle am PC bereitstellt, mit der sich eine Konsolenanwendung wie beispielsweise Tera Term verbinden kann. Die Einstellungen sind: Baud Rate: 115200, Data: 8 Bit, Parität: kein, Stop: 1 Bit. Die Konsolenanwendung dient dem Setup aller wichtiger Einstellungen der Hardware, wie zum Beispiel die Geschwindigkeit der Pumpen. Dabei besteht über ein Menü die Auswahl von drei Option NFC, Pumps und Format F-Ram die mit 1-3 auswählbar sind. In NFC kann die Datenlänge eines Tags angezeigt werden, was jedoch nur möglich ist wenn ein Reader angeschlossen und ein Tag erkannt wurde. 3.1.1 Pumps ID: ID der Pumpe Flowrate: Geschwindigkeit der Pumpe LID: ID der Flüssigkeit Volume: Gesamtmenge der Flüssigkeit Content: Art der Flüssigkeit Figure 3: Terminalanwendung Menüpunkt Pumps Beim Menüpunkt Pumps (Figure 3) können Einstellungen zur Pumpgeschwindigkeit und Gesamtvolumen der verschiedenen Flüssigkeiten festgelegt werden. Manuel Forward dient dem manuellen 3 Vorlauf einer ausgewählten Pumpe, welches beim erstmaligen befüllen der Schläuche benötigt wird. Set FlowRate, Measure FlowRate und Test FlowRate dienen zum einstellen der jeweiligen Pumpgeschwindigkeit. Mit Set FlowRate kann man die Geschwindigkeit der Pumpen manuell einstellen. Measure FlowRate dient der Berechnung der Geschwindigkeit (nähre Information Installation 3.2). Mit Test FlowRate kann die gesetzte Pumpgeschwindigkeit getestet werden. Edit Liquid verändert den Namen der ausgewählten Flüssigkeit und die zugehörige LiquidID. Zuletzt steht Set Volume zur Auswahl, hier kann die vorhandene Menge (in Milliliter) einer Flüssigkeit eingetragen werden. 3.1.2 App/NFC-Tag beschreiben Die App dient der Beschreibung des Tags und ermöglicht sowohl die Auswahl eines Getränks, als auch das setzen der Setup Daten, wie den Name der Flüssigkeit, ID und Menge. Figure 4: App, Orderabschnitt zum bestellen Figure 5: App, Setupabschnitt um Systemeinstellungen zu ändern Order(Figure 4) dient der Bestellung von Getränken. Derzeit sind alle Cocktailrezepte fest programmiert und es können keine eigenen Rezepte erstellt werden. Durch drücken auf eine der Schaltflächen wird das dazugehörige Rezept ausgewählt und auf einen Tag geschrieben, sofern einer vorhanden ist. Setup(Figure 5) hingegen dient nur zum verändern von Systemeinstellungen der Hardware. Auch hier werden die Daten auf einen Tag geschrieben um vom Cocktailmischer verarbeitet zu werden. 3.2 Installation Bevor man das Gerät in Betrieb nehmen kann, müssen einige Einstellungen vorgenommen werden. Zuerst muss die Verbindung mit einem PC hergestellt werden, dies geschieht über eine virtuelle UART-Schnittstelle per USB. Das Port-Setup des Terminals wurde bei den Standardeinstellungen des Mikrocontrollers belassen (Baudrate: 115200, Data: 8 bit, kein Parity-Bit und ein Stop-Bit). Ist der Verbindungsaufbau erfolgt, können mithilfe einer Konsolenanwendung (in unserem Fall Tera Term) die Pumpen kalibriert werden. Jede Pumpe muss zuerst kurz vorlaufen, damit jeder Schlauch komplett mit der gewünschten Flüssigkeit befüllt ist. Damit soll verhindert werden, dass der erste Kunde weniger in seinem Glas hat. Was passieren würde, wenn sich im Schlauf Luft befände. Dies geschieht mit dem Menüpunkt Forward (siehe Figure 3) in der Terminalanwendung. Der nächste Schritt im Installationsprozess ist es die Flussraten der Pumpen zu bestimmen. Diese 4 kann, wenn bekannt, manuell gesetzt (Set Flowrate) oder berechnet (Measure Flowrate) werden. Bei Measure Flowrate muss die zu messende Pumpe ausgewählte werden. Mit dem Taster SW2 am Entwicklungsboard kann der Pumpprozess gestartet werden. Es wird gemessen, wie lange der Knopf gedrückt und gehalten wird. Außerdem muss extern die Menge der gepumpten Flüssigkeit gemessen werden (am Sinnvollsten mit einem Messbecher). Diese Menge, in Millilitern, wird von der Konsole als Eingabe erwartet. Daraus wird dann die Geschwindigkeit der Pumpe berechnet. Als letzter Schritt im Installationsprozess muss noch die Menge an Flüssigkeit eingegeben werden (Set Volume), die an den Pumpen zur Verfügung steht, ebenfalls in Millilitern. Bei der Android-App ist es im Setup (Figure 5) ebenfalls möglich, die Einstellungen der vorhandenen Flüssigkeiten zu setzen. So fügt der Add-Button neue Flaschen hinzu. Der Füllstand, Name und die ID können durch Textfelder gesetzt und auch bereits vorhandene Flaschen und ihre Daten können bearbeitet werden. 4 4.1 4.1.1 Projekt im Detail Ablauf des Projekts Erste Planung Nachdem die Entscheidung getroffen wurde einen Cocktailmischer zu verwirklichen, wurde festgelegt, wie die Grundfunktionen des Mischers aussehen sollten. Diese Funktionen waren zum einen die Android-App, zum Auswählen des Cocktails, der NFC-Tag auf dem Glas, das Auslesen des Tags im Cocktailmischer und das Abfüllen des gewünschten Getränks. Als mögliche Erweiterungen wurde ausgearbeitet: Das automatische Abfüllen von Eis in ein Glas. Ein Sensor der erkennt ob das Glas überläuft und daraufhin die Pumpen stoppt. Das Einführen einer Mischreihenfolge, bei der die einzelnen Zutaten des Cocktails hintereinander gepumpt werden können. Das Messen wie viel Flüssigkeit in den Voratsbehältern noch vorhanden ist. Diverse LEDs oder Lautsprecher zum Anzeigen verschiedener Vorgänge im Cocktailmischer (z.B. eine LED, die Rot aufleuchtet, falls eine Flüssigkeit leer ist; ein Signalton, falls das Glas überläuft usw...). Aus diesen Anforderungen sind die Meilensteine entstanden. 4.1.2 Ablauf Die erste Aufgabe, die gelöst werden musste, war das Festlegen einer Datenstruktur, die eine Kommunikation zwischen App und Mikrocontroller ermöglicht (im Detail: 4.3). Nach der Definition der Schnittstellen konnten die einzelnen Teammitglieder an ihren jeweiligen Aufgaben arbeiten. Bei den Grundfunktionen gab es keine großen Abweichungen von den gesteckten Zielen nur ein paar Details, die ausgearbeitet werden mussten. Als die Grundfunktionen erfüllt waren, wurden die möglichen geplanten Erweiterungen, nochmal auf ihre Machbarkeit bzw. Nutzen geprüft. Daraus resultierte, dass das Abfüllen von Eis weggelassen wurde, da es zu sehr vom Grundaufbau des Cocktailmischers abgewischen wäre. Eine der größten Veränderungen war es das Systemsetup nicht ausschließlich über den NFC-Tag zu realisieren, sondern eine Terminalanwendung bereit zu stellen. Damit einhergehend wurde das Systemsetup deutlich erweitert (Vorlaufen der Pumpen um den Schlauch zu füllen, Flussrate für jede Pumpe individuell bestimmen usw...). Bei Tests zum Überlaufsensor wurde festgestellt, dass eine Metallschicht zwischen Glas und NFC-Reader das auslesen des NFC-Tag verhindert. So wurde der Überlaufsensor durch Logik in der Software ersetzt. Durch Abbrechen des Pumpvorganges, wenn das Glas entfernt wird und Löschen des NFC-Tags um ein zweifaches Befüllen und damit einhergehendes Überlaufen des Glases zu verhindern. Die Erweiterung der Pumpensteuerung wurde wie geplant durchgeführt, nun konnten auch mehrschichtige Cocktails realisiert werden. Die Anzeigen durch LEDs oder Lautsprecher wurde durch ein Display ersetzt. Diese Erweiterung ist aber, aufgrund von Zeitdruck am Ende des Projektes, nicht fertig realisiert worden. (siehe: zukünftige Erweiterbarkeit 5.1). Des Weiteren wurde während des Projektzeit viele Tests durchgeführt und am Ganzen Projekt erkannte Fehler behoben und Verbesserungen vorgenommen. 5 4.2 Schwierigkeiten Während des Projektes sind verschiedene Probleme entstanden. Die meisten waren jedoch nicht unerwartet, sondern allgemeine Probleme, die in jedem Projekt auftreren können. Diese ließen sich ohne größeren Aufwand lösen. Die größte Herausforderung war es den NFC-Reader über den Mikrocrontroller anzusteuern, da nur eine Library für Raspberry Pi vorhanden war. Das Problem wurde gelöst, indem die Kommunikation zwischen dem NFC-Reader und dem Raspberry Pi mitgeschrieben und dann für den Mikrocontroller reproduziert wurde. So musste keine komplette Library für die Kommunikation geschrieben werden, da dies den Rahmen des Projekts gesprengt hätte. 4.3 Datenstruktur NFC-Tag Die Datenstruktur auf dem NFC-Tag kann für zwei verschiedene Aufgaben genutzt werden: Einerseits im normalen Betrieb, um den gewünschten Cocktail zu übergeben oder Andererseits um Systemeinstellungen vorzunehmen. Im erstem Fall sieht die Datenstruktur wie folgt aus {o,0:0;15,0:1;10,1:0;5}. Die geschweiften Klammern zeigen, dass jetzt die gewünschten Daten kommen, alles außerhalb wird ignoriert. Das o steht für order und zeigt an, dass es sich um eine Bestellung/Cocktail handelt. Danach kommen die Zutaten, aus denen die Bestellung aufgebaut ist. Jede Zutat hat drei Attribute. Das erste ist eine Liquid-ID, damit wird angegeben welche Flüssigkeit benötigt wird (z.B.: Liquid-ID = 0 entspricht Wasser, Liquid-ID = 1 Orangensaft usw.). Die Liquid-IDs sind fest definiert und müssen immer eindeutig zu einer bestimmten Flüssigkeit zugeordnet werden können. Der nächste Wert beschreibt die Reihenfolge, in der die einzelnen Zutaten gepumpt werden. Als erstes werden alle Zutaten des Schritts 0 gleichzeitig gepumpt, anschließend werden alle Zutaten des nächst größeren Schritts gepumpt, dies wird solange wiederholt bis alle Zutaten abgearbeitet sind. Der letzte Parameter beschreibt die Menge, die von der jeweiligen Flüssigkeit gepumpt werden soll. Die Angabe erfolgt in Milliliter. Soll der NFC-Tag benutzt werden, um ein Systemeinstellungen vorzunehmen, kann die Datenstruktur wie folgt aussehen {s,0:Wasser;1500,1:Orangensaft,700}. Die geschweiften Klammern zeigen erneut an, dass jetzt die gewünschten Daten kommen. Das s steht für setup. Danach werden die Pumpen konfiguriert, Liquid-ID ist das erste Attribut. Danach folgt welche Flüssigkeit an dieser Pumpe anliegt z.B. Orangensaft. Als letztes steht die vorhandene Menge der Flüssigkeit in Milliliter. Diese Möglichkeit der Systemeinstellungen ist ein Überbleibsel aus der frühen Entwicklungsphase des Projekts, als ein Setup über ein PC-Terminal noch nicht möglich war. Die Funktion kann aber immer noch benutzt werden. Damit sind beliebige Personen in der Lage Daten auf einen NFC-Tag zu schreiben und damit Systemenstellungen zu verändern. Aus diesem Grund sollte die Setupfunktion per NFC-Tag in späteren Entwicklungen deaktiviert werden. Da findige Benutzer eventuell in der Lage sind die korrekte Zeichenkette für Systemeinstellungen zu erraten. 4.4 Dokumentation PSoC Die Funktionsweise der Software auf dem PSoC bei einem erkannten NFC-Tag ist wie folgt: Als erstes wird der NFC-Tag ausgelesen. Sind die Daten wie bei der in 4.3 beschriebenen Datenstruktur vorhanden, wird dieser String aus Zeichen an den Paser übergeben. Dieser speichert die Daten in Arrays aus Structs. Diese werden dann in Gruppen zusammengefasst, dass alle Zutaten, die gleichzeitig gepumpt werden sollen, zusammenstehen. Wenn es dann zum Pumpen kommt, wird aus der angegebenen Menge (Milliliter) die entsprechende Zeit berechnet, die zum Pumpen der benötigt wird. Dafür wird die individuelle Flussrate der jeweiligen Pumpe benutzt. Jetzt werden die Structs anhand der Pumpdauer, innerhalb einer Gruppe, sortiert. Ein Timer wird auf die geringste Pumpdauer eingestellt. Alle Pumpen der gewünschten Zutaten einer Gruppe werden gestartet. Ist die eingestellte Zeit abgelaufen, wird ein Interrupt ausgelöst und die Pumpe mit der zugehörigen Zeit wird abgeschaltet. Daraufhin wird die Zeit, auf die der Timer eingestellt war, von der nächsten Pumpdauer abgezogen und der Timer wird auf diese Differenz gesetzt. Dies wird solange fortgeführt, bis alle Pumpen einer Gruppe abgearbeitet sind. Gleichermaßen wird mit allen nachfolgenden Gruppen verfahren. 6 Beispiel: Es wird angenommen eine Bestellung besteht aus drei Zutaten. Für Zutat1 wurde eine Pumpdauer von 10s berechnet, für Zutat2 25s und für Zutat3 15s. Diese befinden sich alle in eier Gruppe. Der erste Schritt ist nun aufsteigend nach Pumpdauer zu sortieren; also Zutat1 (10s), Zutat2 (15s) und Zutat3 (25s). Die Pumpe mit Zutat1 wird gestartet, ebenso die Pumpen mit den Zutaten 2 und 3. Der Timer wird auf 10s gesetzt. Sind diese abgelaufen, löst ein Interrupt aus. Die Pumpe von Zutat1 wird gestoppt. Der Timer wird auf eine neue Zeit gesetzt, diese errechnet sich aus der Differenz zwischen der Zeit von Zutat1 und Zutat2 (also 15s - 10s = 5s). Nach den 5s wird die Pumpe mit Zutat2 gestoppt und der Timer wird auf 10s (25s - 15s) gesetzt. Sind diese auch abgelaufen, wird die letzte Pumpe gestoppt und der Pumpvorgang ist abgeschlossen. Das Systemsetup kann über eine Terminalanwendung erfolgen, die über eine virtuelle UARTSchnittstelle per USB an den Mikrocontroller angeschlossen ist. Gemachte Einstellungen werden immer im F-RAM, auf dem Entwicklungsboard, gespeichert. Damit wird sichergestellt, dass auch nach dem Aus- und wieder Anschalten des Cocktailmischers die Daten nicht verloren gehen und neu eingegeben werden müssen. 5 5.1 Fazit Erweiterbarkeit Das Projekt hat soweit alle Grundanforderung an einen Cocktailmischer erfüllt. Trotzdem könnten noch einige Erweiterungen vorgenommen werden, wenn das Projekt weiter verfolgt werden würde. Eine Verbesserungsmöglichkeit ist es die Cocktails über eine zentrale Datenbank zu verwalten. Außerdem kann man die verwendeten Pumpen gegen leistungsfähigere Modelle austauschen. Das Abfüllen eines 200ml Cocktails dauert im Moment noch über eine Minute. Mit dieser Maßnahme ließe sich die Benutzerfreundlichkeit steigern. Die Software auf dem Controller kann außerdem auf einfache Weise um weitere Pumpen erweitert werden. Hierdurch könnte eine größere Auswahl an Cocktails zu ermöglicht werden. Des Weiteren könnte ein Display an den Cocktailmischer Figure 6: Display mit angeschlossen werden, das verschiedene Ausgaben zum Betriebssta- Treiber Board und funktiontus ermöglicht. Hierdurch könnte der Benutzer diverse Informatio- ierender i2c Verbindung nen erhalten, auch wenn kein Computer angeschlossen ist. 5.2 Allgemeines Fazit Mit dem Wissen, dass nach dem Projekt vorhanden ist, würden einige Endscheidungen anderes getroffen werden. Ein anderer NFC-Reader (mit vorhandener Arduino library) würde das Programmieren deutlich erleichtern. Des Weiteren sind die verwendeten Motorsteuerungen veraltet (Spannungsverlust von 2 Volt). Diese sollten durch moderner oder selbst gebaute ersetzen werden. Am Anfang des Projektes wurden verschiedene Ziele definiert, die während der Projektentwicklung erfüllt werden sollten. Das Team hat es geschafft alle an das Projekt gestellten Grundfunktionalitäten zu verwirklichen. Figure 7: Cocktailmischer im Labor Doch wurde zu Projektbeginn der zur Verfügung stehende Zeitrahmen etwas zu knapp eingeschätzt. Dies hatte zur Folge, dass einige der geplanten Zusatzfunktionalitäten nicht oder nicht im geplanten Umfang erfüllt werden konnten. Da das Team großes Interesse an Vollendung des Projekts hat, wird es privat weiterentwickelt und die Zusatzfunktionalitäten werden so noch nachträglich erfüllt. 7 6 Weitere Informationen Die vollständige und ausführliche Dokumentation des gesamten Programmcodes der AndroidApp ist zu finden unter: http://smart-mix.de/SmartMixApp_Doxygen.pdf Die vollständige und ausführliche Dokumentation des gesamten PSoC Programmcodes ist zu finden unter: http://smart-mix.de/SmartMixPSoC_Doxygen.pdf Das im PSoC-Creator generierte Datenblatt zum PSoC Projekt ist zu finden unter: http://smart-mix.de/SmartMixPSoC_PSoC-Creator.pdf YouTube Video: https://www.youtube.com/watch?v=fxtpmkBaUxM. 8
© Copyright 2025 ExpyDoc