Projekt 87: Kaffeekannen Kamera: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(46 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 70: Zeile 70:
=== Projektplan ===
=== Projektplan ===


[[Datei:Projektplanung_GanttChart.jpeg|450px|thumb|right|Abbildung 2: Projektplanung Gantt-Chart]]
[[Datei:Projektplanung_GanttChart.jpeg|400px|thumb|right|Abbildung 2: Projektplanung Gantt-Chart]]
[[Datei:BOM_Projekt_87.jpeg|450px|thumb|right|Abbildung 3: Stückliste / Bill of Material (BOM)]]
[[Datei:BOM_Projekt_87.jpeg|450px|thumb|right|Abbildung 3: Stückliste / Bill of Material (BOM)]]
{| class="wikitable"
{| class="wikitable"
Zeile 138: Zeile 138:
'''SSH-Schnittstelle aktivieren'''
'''SSH-Schnittstelle aktivieren'''


In den neueren Raspian Versionen ist die SSH-Schnittstelle (für Kommunikation über das Netzwerk, z.b. via Putty) aus Sicherheitsgründen deaktiviert. Daher muss dieser manuell aktiviert werden. Dazu muss in das Boot Verzeichnis der bespielten SD-Karte eine Datei mit dem Namen SSH eingefügt werden. Dies geht z.B. mittels Editor, indem ein leeres Textdokument mit dem Namen SSH erstellt wird. Diese Datei jedoch darf keine Dateiendung haben. Daher muss die Datei (SSH) zunächst auf den Desktop verschoben werden (sofern nicht schon dort vorhanden), anschließend kann über die Eingabeaufforderung von Windows die Dateiendung entfernt werden dazu müssen die folgenden Befehle eingegeben werden
In den neueren Raspian Versionen ist die SSH-Schnittstelle (für Kommunikation über das Netzwerk, z.b. via Putty) aus Sicherheitsgründen deaktiviert. Daher muss dieser manuell aktiviert werden. Dazu muss in das Boot Verzeichnis der bespielten SD-Karte eine Datei mit dem Namen SSH eingefügt werden. Dies geht z.B. mittels Editor, indem ein leeres Textdokument mit dem Namen SSH erstellt wird. Diese Datei jedoch darf keine Dateiendung haben. Daher muss die Datei (SSH) zunächst auf den Desktop verschoben werden (sofern nicht schon dort vorhanden), anschließend kann über die Eingabeaufforderung von Windows die Dateiendung entfernt werden dazu müssen die folgenden Befehle eingegeben werden.<ref name = 'Raspberry Pi: SSH aktivieren'>[https://www.sempervideo.de/?video=raspberry-pi-ssh-aktivieren/''Raspberry Pi: SSH aktivieren'']. Abgerufen am 17.01.2019.</ref><br/>
  cd desktop
  cd desktop
  rename ssh.txt ssh
  rename ssh.txt ssh
Zeile 146: Zeile 146:
'''HDMI Schnittstelle aktivieren'''
'''HDMI Schnittstelle aktivieren'''


In manchen Versionen von Raspbian kommt es vor, dass die HDMI-Schnittstelle nicht aktiviert ist. Für das Aufsetzen des Raspberry Pi ist dies nicht zwangsläufig nötig, jedoch für spätere Funktion der Anzeige des Bildes, daher sollte die Schnittstelle schon bei Aufsetzen aktiviert werden. Hierzu genügt es im Boot verzeichnis die Datei: „config.txt“ zu öffnen und die Zeile „hdmi_safe=1“ am Ende der Datei zu ergänzen.
In manchen Versionen von Raspbian kommt es vor, dass die HDMI-Schnittstelle nicht aktiviert ist. Für das Aufsetzen des Raspberry Pi ist dies nicht zwangsläufig nötig, jedoch für spätere Funktion der Anzeige des Bildes, daher sollte die Schnittstelle schon bei Aufsetzen aktiviert werden. Hierzu genügt es im Boot verzeichnis die Datei: „config.txt“ zu öffnen und die Zeile „hdmi_safe=1“ am Ende der Datei zu ergänzen.<ref name = 'HDMI Schnittstelle aktivieren'>[https://www.pcwelt.de/ratgeber/Raspberry-Pi-Probleme-loesen-9820321.html/''HDMI Schnittstelle aktivieren'']. Abgerufen am 17.01.2019.</ref><br/>




Zeile 187: Zeile 187:


==== Erstellung der Platinen zur Spannungsteilung und Zusammenführung ====
==== Erstellung der Platinen zur Spannungsteilung und Zusammenführung ====
[[Datei:Abbildung_Platinenlayout_Spannungsteiler.jpg|350px|thumb|middle|Abbildung 6: Von links: Schaltplan, Platinenlayout und 3D-Vorschau des Spannungsteilers]] [[Datei:Abbildung_Platinenlayout_Platine2.jpg|350px|thumb|right|Abbildung 7: Von links: Schaltplan, Platinenlayout und 3D-Vorschau der Zusammenfassungsplatine]] [[Datei:Abbildung_Lochrasterplatinen.jpg|350px|thumb|middle|Abbildung 8: Links: Lochrasterplatine zur Spannungsteilung, Rechts: Lochrasterplatine zur Zusammenführung]]
[[Datei:Abbildung_Platinenlayout_Spannungsteiler.jpg|350px|thumb|middle|Abbildung 6: Von links: Schaltplan, Platinenlayout und 3D-Vorschau des Spannungsteilers]] [[Datei:Abbildung_Platinenlayout_Platine2.jpg|350px|thumb|right|Abbildung 7: Von links: Schaltplan, Platinenlayout und 3D-Vorschau der Zusammenfassungsplatine]] [[Datei:Abbildung_Lochrasterplatinen.jpg|150px|thumb|middle|Abbildung 8: Links: Lochrasterplatine zur Spannungsteilung, Rechts: Lochrasterplatine zur Zusammenführung]]
Für die Erstellung der Platine, welche den Arudino mit dem Raperry PI verbinden soll, wurde die Software Multisim/Ultiboard genutzt. Zunächst wurde mittels Multiboard der Schaltplan konzipiert. Für die Funktion der Kaffeemaschine werden für die Weitergabe von Signalen für das Aufnehmen eines Fotos, das Anzeigen eines Fotos und dem Löschen des Fotos In- und Outputschnittstellen für Arduino und Rasperry PI benötigt. Um die Funktionsfähigkeit zu testen wurden zudem für jeden Vorgang eine LED integriert, welche bei einer Signalübertragung aufleuchten soll. Zudem musste ein Masseanschluss integriert werden. Anschließend wurde das Schaltbild in Ultiboard übertragen. Dort wurden die einzelnen Bauteile angeordnet und miteinander verbunden. Für das Fräsen der Platine wurden Gerber-Files im Format RS274X exportiert und an Herrn Ramesohl übergeben. Der erstellte Schaltplan in Multisim und das Platinenlayout in Ultiboard sind in Abbildung 6 wiedergegeben. Eine weitere Platine (siehe Abbildung 7) wurde konzipiert, um Spannungsversorgung und Ground der 4 Schiebepotentiometer, auf Grund der limitierten  Steckplätze des Arduino, zusammenzuführen (siehe Abbildung 7).
Für die Erstellung der Platine, welche den Arudino mit dem Raperry PI verbinden soll, wurde die Software Multisim/Ultiboard genutzt. Zunächst wurde mittels Multiboard der Schaltplan konzipiert. Für die Funktion der Kaffeemaschine werden für die Weitergabe von Signalen für das Aufnehmen eines Fotos, das Anzeigen eines Fotos und dem Löschen des Fotos In- und Outputschnittstellen für Arduino und Rasperry PI benötigt. Um die Funktionsfähigkeit zu testen wurden zudem für jeden Vorgang eine LED integriert, welche bei einer Signalübertragung aufleuchten soll. Zudem musste ein Masseanschluss integriert werden. Anschließend wurde das Schaltbild in Ultiboard übertragen. Dort wurden die einzelnen Bauteile angeordnet und miteinander verbunden. Für das Fräsen der Platine wurden Gerber-Files im Format RS274X exportiert und an Herrn Ramesohl übergeben. Der erstellte Schaltplan in Multisim und das Platinenlayout in Ultiboard sind in Abbildung 6 wiedergegeben. Eine weitere Platine (siehe Abbildung 7) wurde konzipiert, um Spannungsversorgung und Ground der 4 Schiebepotentiometer, auf Grund der limitierten  Steckplätze des Arduino, zusammenzuführen (siehe Abbildung 7).


Zeile 209: Zeile 209:
==== Berechnung der Federkonstante der Federn für den Wiegemechanismus ====
==== Berechnung der Federkonstante der Federn für den Wiegemechanismus ====
Wie in der Konstruktionsphase konzipiert, sollen für den Wiegemechanismus neben Schiebepotentiometern 4 Druckfedern verwendet werden. Um zu ermitteln, welche Federn beschafft werden müssen, mussten im Vorfeld einige Kennzahlen ermittelt werden. Zunächst wurden die Gewichte der für den Wiegemechanismus relevanten Teile gemessen (siehe Tabelle "Kennzahlen für Wiegemechanismus"). Daraus wurden die optimalen Federeigenschaften errechnet (siehe Tabelle "Optimale Feder"). Die wichtigste Kennzahl stellt dabei die Federrate (R) dar. Diese gibt an, wie stark sich die Feder bei einer Krafteinwirkung staucht und lässt sich mit der Formel <math>  R = \frac{m \cdot  g}{\Delta h}</math> errechnen. Daraus ergibt sich <math>  R = \frac{1,04 kg \cdot 9,81 \frac{m}{s^2}}{38 mm} = 0,27 \frac{N}{mm}</math>. Die Masse "m" stellt sich dabei aus dem Gewicht der Bodenplatte, der Kaffeekanne und dem maximalen Inhalt (700 ml) zusammen, <math> \Delta h </math> ist die Reichweite des Schiebepotentiometers und g die durch ein Schwerefelde verursachte Kraft auf einen Körper, welche mit <math> 9,81 \frac{m}{s^2} </math> definiert ist. Abschließend konnte daraus eine Feder ermittelt werden, derer Eigenschaften der "optimalen Feder" am nähsten kommen. Folgend werden die ermittelten Daten in drei Tabellen wiedergegeben.
Wie in der Konstruktionsphase konzipiert, sollen für den Wiegemechanismus neben Schiebepotentiometern 4 Druckfedern verwendet werden. Um zu ermitteln, welche Federn beschafft werden müssen, mussten im Vorfeld einige Kennzahlen ermittelt werden. Zunächst wurden die Gewichte der für den Wiegemechanismus relevanten Teile gemessen (siehe Tabelle "Kennzahlen für Wiegemechanismus"). Daraus wurden die optimalen Federeigenschaften errechnet (siehe Tabelle "Optimale Feder"). Die wichtigste Kennzahl stellt dabei die Federrate (R) dar. Diese gibt an, wie stark sich die Feder bei einer Krafteinwirkung staucht und lässt sich mit der Formel <math>  R = \frac{m \cdot  g}{\Delta h}</math> errechnen. Daraus ergibt sich <math>  R = \frac{1,04 kg \cdot 9,81 \frac{m}{s^2}}{38 mm} = 0,27 \frac{N}{mm}</math>. Die Masse "m" stellt sich dabei aus dem Gewicht der Bodenplatte, der Kaffeekanne und dem maximalen Inhalt (700 ml) zusammen, <math> \Delta h </math> ist die Reichweite des Schiebepotentiometers und g die durch ein Schwerefelde verursachte Kraft auf einen Körper, welche mit <math> 9,81 \frac{m}{s^2} </math> definiert ist. Abschließend konnte daraus eine Feder ermittelt werden, derer Eigenschaften der "optimalen Feder" am nähsten kommen. Folgend werden die ermittelten Daten in drei Tabellen wiedergegeben.
[[Datei: Wiegemechanismus.JPG|thumb||500px|middle|Abbildung 10: Wiegemechanismus ]]
[[Datei: Abbildung_Wiegemechanismus.JPG|thumb||500px|middle|Abbildung 10: Wiegemechanismus ]]
 
[[Datei:Simulink gesamt.png|300px|thumb|right|Abbildung 11: Gesamtansicht Simulinkprogramm]]
[[Datei:Projekt87_simulink_MW.png|300px|thumb|right|Abbildung 12: Berechnung Mittelwert]]
{| class="wikitable"
{| class="wikitable"
|+ Tabelle 3: Kennzahlen für Wiegemechanismus
|+ Tabelle 3: Kennzahlen für Wiegemechanismus
Zeile 249: Zeile 250:
|+ Tabelle 5: Gewählte Feder
|+ Tabelle 5: Gewählte Feder
|-
|-
| Bezeichnung || || Kennzahl
| Bezeichnung || Erklärung || Kennzahl
|-
|-
| L0 || Maximale Höhe || 71,30 mm
| L0 || Maximale Höhe || 71,30 mm
Zeile 265: Zeile 266:


==== Simulink Programm zum Auslesen der Potentiometer ====
==== Simulink Programm zum Auslesen der Potentiometer ====
[[Datei:Simulink gesamt.png|500px|thumb|right|Abbildung 11: Gesamtansicht Simulinkprogramm]]
[[Datei:Projekt87 simulink Kalibrierung.png|300px|thumb|right|Abbildung 13: Kalibrierung Mittelwert]]
[[Datei:Projekt87_simulink_MW.png|500px|thumb|right|Abbildung 12: Berechnung Mittelwert]]
[[Datei:Projekt87 simulink AS.png|300px|thumb|right|Abbildung 14: Auswertung der Sensorwerte]]
[[Datei:Projekt87 simulink Kalibrierung.png|500px|thumb|right|Abbildung 13: Kalibrierung Mittelwert]]
[[Datei:Projekt87 simulink AS.png|500px|thumb|right|Abbildung 14: Auswertung der Sensorwerte]]


Zunächst Tests mit LEDs für den Status (Rot, Gelb, Blau) zur Simulation der Ausgabe des Arduinos
Das Simulink Programm wird zur Steuerung des Arduinos verwendet. Dabei werden die Sensoren (Potentiometer) zunächst ausgelesen. Im nächsten Schritt wird in einer Subfunktion der Mittelwert der Sensoren gebildet. Dies ermöglicht einen möglichst genauen Wert. Ohne den Mittelwert käme es zu größeren Abweichungen, da die relativ kleine Kaffeekanne je nach Positionierung die Potentiometer unterschiedlich weit herunter drückt. Durch den Mittelwert werden die Schwankungen der Messwerte bei gleichem Gewicht und unterschiedlicher Position stark minimiert, sodass nur im Ausnahmefall falsche Werte geliefert werden. Nach der Bildung des Mittelwerts wird dieser in der nächsten Subfunktion kalibriert. Dazu wird ein weiteres Potentiometer eingelesen und der Wert auf den Mittelwert aufsummiert. Dadurch kann die Vorrichtung im laufenden Betrieb kalibriert werden, auch ohne den Code zu verändern.
Zuletzt wird anhand des Grenzwertes der kalibrierte Mittelwert in der letzten Subfunktion ausgewertet. Dabei entstehen die drei Zustände „Foto aufnehmen“, „Foto anzeigen“ und „Foto löschen“. Der Zustand „Foto anzeigen“ setzt den zuvor durchlaufenen Zustand „Foto aufnehmen voraus. Jeder Zustand liefert ein „HIGH“ auf einen anderen Ausgang. Je nach Arduino Pin werden diese Signale von Raspberry Pi anders weiter verarbeitet.
Die Systemtests haben gezeigt, dass das Simulink Programm fehleranfällig ist. So wird der Bildlauf gestört, indem die Ausgabe gelöscht und wieder angezeigt wird. Grund dafür sind zum einen Toleranzen im Spannungsteiler, aber auch das Simulink Programm. Im Arduino Programm wurde dieser Fehler durch mehrere While-Schleifen behoben. Diese in Simulink zu implementieren hat nicht wie geplant funktioniert. Daher wurde die Präsentation das Arduino Programm anstelle des Simulink Programms verwendet.


==== Raspberry Pi Programm zur Aufnahme/Anzeige des Fotos ====
==== Raspberry Pi Programm zur Aufnahme/Anzeige des Fotos ====
[[Datei:RaspPi_zustandsmodell.png|400px|thumb|left|Abbildung 15: Zustandsdiagramm Raspberry Pi]]
[[Datei:RaspPi_zustandsmodell.png|300px|thumb|right|Abbildung 15: Zustandsdiagramm Raspberry Pi]]
Das Raspberry Pi Programm wurde mit Python geschrieben. Es liest die drei Signale vom Arduino ein und zeigt in Abhängigkeit vom jeweiligen Signal ein anderes Bild in einer "Pseudo-GUI" an. Diese besteht in erster Linie aus Konsolenbefehlen, welche den Image Viewer "Gpicview" mit den jeweiligen Bildern aufruft. Das Programm besitzt drei Zustände (vgl. Abbildung: Zustandsdiagramm Raspberry Pi). Für jeden Zustand erfolgt eine Ausgabe in der Konsole, sodass der aktuelle Zustand sowie der verlauf abgelesen werden kann. Dazu werden in einer else-Abzweigung auftretende Fehler und Signal-Aussetzer dokumentiert.
Das Raspberry Pi Programm wurde mit Python geschrieben. Es liest die drei Signale vom Arduino ein und zeigt in Abhängigkeit vom jeweiligen Signal ein anderes Bild in einer "Pseudo-GUI" an. Diese besteht in erster Linie aus Konsolenbefehlen, welche den Image Viewer "Gpicview" mit den jeweiligen Bildern aufruft. Das Programm besitzt drei Zustände (vgl. Abbildung: Zustandsdiagramm Raspberry Pi). Für jeden Zustand erfolgt eine Ausgabe in der Konsole, sodass der aktuelle Zustand sowie der verlauf abgelesen werden kann. Dazu werden in einer else-Abzweigung auftretende Fehler und Signal-Aussetzer dokumentiert.
Das Kameramodul wird direkt über eine eigene Bibliothek mit Standardbefehlen angesprochen. Aufgrund der Einbau-Richtung des Kameramoduls ist darauf zu achten, dass das Bild in diesem Projekt um 180° gedreht wird. Zusätzlich wurde die Größe der Bilder herunter skaliert, um Speicherplatz zu sparen.
Das Kameramodul wird direkt über eine eigene Bibliothek mit Standardbefehlen angesprochen.<ref name = 'Raspicam Commands'>[https://www.raspberrypi.org/documentation/usage/camera/raspicam/README.md/''Raspicam Commands'']. Abgerufen am 17.01.2019.</ref><br/> Aufgrund der Einbau-Richtung des Kameramoduls ist darauf zu achten, dass das Bild in diesem Projekt um 180° gedreht wird. Zusätzlich wurde die Größe der Bilder herunter skaliert, um Speicherplatz zu sparen.
 
'''Raspberry Pi Programm:'''


<div style="width:500px; height:400px; overflow:auto; border: 2px solid #088">
<div style="width:500px; height:400px; overflow:auto; border: 2px solid #088">
Zeile 392: Zeile 395:
==== Tests ====
==== Tests ====
Die Tests sind in Anlehnung an das V-Modell erfolgt. So wurden alle Komponenten und zwischen Komponenten (bzw. temporären Komponenten) unmittelbar nach deren Fertigstellung getestet. Auch die Software wurde während und nach der Fertigstellung getestet. Nachdem die Komponenten in den Komponententests (Unit-Tests) funktioniert haben, wurde sie im Zusammenspiel mit anderen Komponenten getestet (Integrationstests). Dies hat an einigen Stellen zu Überarbeitungen der Komponenten und somit weiteren Unit- und Integrationstest geführt. Zum Schluss wurden Systemtests durchgeführt, in denen das gesamte System getestet wurde und einzelne Fehler im Anschluss daran ausgebessert wurden. Im Folgenden sind die durchgeführten Tests aufgeführt.
Die Tests sind in Anlehnung an das V-Modell erfolgt. So wurden alle Komponenten und zwischen Komponenten (bzw. temporären Komponenten) unmittelbar nach deren Fertigstellung getestet. Auch die Software wurde während und nach der Fertigstellung getestet. Nachdem die Komponenten in den Komponententests (Unit-Tests) funktioniert haben, wurde sie im Zusammenspiel mit anderen Komponenten getestet (Integrationstests). Dies hat an einigen Stellen zu Überarbeitungen der Komponenten und somit weiteren Unit- und Integrationstest geführt. Zum Schluss wurden Systemtests durchgeführt, in denen das gesamte System getestet wurde und einzelne Fehler im Anschluss daran ausgebessert wurden. Im Folgenden sind die durchgeführten Tests aufgeführt.
[[Datei:Abbildung_Kaffeekannen_Kamera.jpg|600px|thumb|right|Abbildung 16: Aufbau der funktionsfähigen Kaffeekannen Kamera]]


'''Unit-Tests'''
'''Unit-Tests'''
* Arduino Programm
* Arduino & Simulink Programm
** Mittelwert Funktion
**Mittelwert Funktion
** Kalibrierung
**Kalibrierung
** Auswertung Sensoren
**Sensorenauswertung
* Simulink Programm
** Mittelwert Funktion
** Kalibrierung
** Auswertung Sensoren
* Bauteile
* Bauteile
** Versorgungsplatine
** Versorgungsplatine
Zeile 423: Zeile 423:
Das Projekt wurde erfolgreich beendet. Der Füllstand der Kaffeekanne wird über das Gewicht der Kanne erfasst. Dabei gilt zu beachten, dass aufgrund der Konstruktion Schwankungen möglich sind, je nachdem wie die Kaffeekanne auf den Wiegemechanismus platziert wird. Die Tests haben gezeigt, dass trotz dessen der Wiegemechanismus zuverlässig funktioniert. Die zusätzliche Implementierung der Kalibrierung ermöglicht es auch bei langem Gebrauch und ggf. Verschleiß (z.B. ein Verbiegen/Stauchung der Federn), diesen auszugleichen.
Das Projekt wurde erfolgreich beendet. Der Füllstand der Kaffeekanne wird über das Gewicht der Kanne erfasst. Dabei gilt zu beachten, dass aufgrund der Konstruktion Schwankungen möglich sind, je nachdem wie die Kaffeekanne auf den Wiegemechanismus platziert wird. Die Tests haben gezeigt, dass trotz dessen der Wiegemechanismus zuverlässig funktioniert. Die zusätzliche Implementierung der Kalibrierung ermöglicht es auch bei langem Gebrauch und ggf. Verschleiß (z.B. ein Verbiegen/Stauchung der Federn), diesen auszugleichen.
Die Fotofunktion funktioniert. Die Person, die den Kaffee entnimmt wird fotografiert. Das Foto wird temporär gespeichert und nur angezeigt, wenn kein Kaffee nachgekocht wird. Weiterhin wird das Foto im Anschluss gelöscht, wenn neuer Kaffee gekocht wird. Unter Umständen wird die Person angezeigt, wenn sie zu lange braucht, um Kaffee nach zu kochen. Dies ist jedoch eher ein Feature als ein Fehler. Da die Anzeige nach dem Kochen sofort beendet wird und dies somit einen Ansporn liefert, sich kollegial zu verhalten und nicht unnötig lange für das Kaffeekochen zu brauchen. Darüber hinaus kann die Zeitspanne verändert werden, sodass die maximale Zeit zum Nachkochen von den Nutzern (Administratoren der Kaffeekannen Kamera) eingestellt werden kann.
Die Fotofunktion funktioniert. Die Person, die den Kaffee entnimmt wird fotografiert. Das Foto wird temporär gespeichert und nur angezeigt, wenn kein Kaffee nachgekocht wird. Weiterhin wird das Foto im Anschluss gelöscht, wenn neuer Kaffee gekocht wird. Unter Umständen wird die Person angezeigt, wenn sie zu lange braucht, um Kaffee nach zu kochen. Dies ist jedoch eher ein Feature als ein Fehler. Da die Anzeige nach dem Kochen sofort beendet wird und dies somit einen Ansporn liefert, sich kollegial zu verhalten und nicht unnötig lange für das Kaffeekochen zu brauchen. Darüber hinaus kann die Zeitspanne verändert werden, sodass die maximale Zeit zum Nachkochen von den Nutzern (Administratoren der Kaffeekannen Kamera) eingestellt werden kann.
Das Projekt war somit ein Erfolg.
Das Projekt war somit ein Erfolg und trägt dazu bei, dass der Büroalltag ein Schlückchen sicherer wird.


== Zusammenfassung ==
== Zusammenfassung ==
Zeile 446: Zeile 446:
* Für Zustände sind steigenden Flanken eindeutiger auszulesen als HIGH Signale
* Für Zustände sind steigenden Flanken eindeutiger auszulesen als HIGH Signale
* Für Zustände sind While-Schleifen besser als If-Abfragen, wenn diese aufeinander aufbauen
* Für Zustände sind While-Schleifen besser als If-Abfragen, wenn diese aufeinander aufbauen


=== Ausblick ===
=== Ausblick ===
Zeile 454: Zeile 453:
* Eine Konstruktion der Kaffeemaschine für Kaffeekannen mit größerem Umfang wäre eine erste Verbesserung. Weiterhin könnte in diesem Rahmen der „Stellplatz“ der Kaffeekanne so gestaltet werden, dass diese nicht mehr verrutscht.
* Eine Konstruktion der Kaffeemaschine für Kaffeekannen mit größerem Umfang wäre eine erste Verbesserung. Weiterhin könnte in diesem Rahmen der „Stellplatz“ der Kaffeekanne so gestaltet werden, dass diese nicht mehr verrutscht.
* Eine weitere Optimierung besteht in einer Veränderung des Wiegemechanismus mit einer größeren Anzahl Federn für Stabilitätszugewinn. Eine leichte Veränderung, die eine Stabilitätssteigerung zufolge hätte wäre es die Federn weiter außen zu positionieren. Im Vergleich zu mehr Federn ist der Vorteil jedoch gering.
* Eine weitere Optimierung besteht in einer Veränderung des Wiegemechanismus mit einer größeren Anzahl Federn für Stabilitätszugewinn. Eine leichte Veränderung, die eine Stabilitätssteigerung zufolge hätte wäre es die Federn weiter außen zu positionieren. Im Vergleich zu mehr Federn ist der Vorteil jedoch gering.
* Eine andere Optimierung, besteht darin, auf den Arduino zu verzichten und direkt die Auswertung der Sensoren über den Raspberry Pi laufen zu lassen. Dazu sind jedoch mehr Kenntnisse im Bereich Raspberry Pi notwendig.
* Eine andere Möglichkeit zur Optimierung, besteht darin, auf den Arduino zu verzichten und direkt die Auswertung der Sensoren über den Raspberry Pi laufen zu lassen. Dazu sind jedoch mehr Kenntnisse im Bereich Raspberry Pi notwendig.
* Da das Simulink Programm nicht mit While-Blöcken funktioniert hat, ist eine Optimierung, den Code in Simulink Stateflow umzusetzt.


==== Verbesserungspotenzial hinsichtlich eines neuen Entwurfs ====
==== Verbesserungspotenzial hinsichtlich eines neuen Entwurfs ====
Zeile 469: Zeile 469:


== Projektdaten ==
== Projektdaten ==
Die Projektdaten sind in SVN im Projektordner abgespeichert. Die Struktur sieht wie folgt aus:
Die Projektdaten sind in SVN im Projektordner (Projekt 86) abgespeichert. Die Struktur sieht wie folgt aus:


'''01_Projektplan enthält z.B.:'''
'''01_Projektplan''' (enthält z.B. BOM, Mindmap, Gantt-Chart...
* BOm
* Mindmap
* Gantt-Chart


'''02_Projektdokumentation enthält z.B.:'''
'''02_Projektdokumentation''' (enthält z.B. Wiki-Artikel, Ideensammlung zu Optimierungen, Abbildung...
* Wiki-Artikel
* Protokolle
* Ideensammlung


'''03_Projektdaten enthält z.B.:'''
'''03_Projektdaten''' (enthält z.B. Simulink Programme, Arduino Programme, Schaltpläne und Layouts...
* Simulink Programme
* Arduino Programme
* Schaltpläne und Layout


'''04_Test enthält z.B.:'''
'''04_Test''' (enthält z.B. Test Vorbereitungen, Testprogramme, Testdokumentation...
* Test Vorbereitungen
* Testdokumentation


'''05_Projektabschluss enthält z.B.:'''
'''05_Projektabschluss''' (enthält z.B. Youtube-Video, Vortragsmaterialien, Aufsteller...
* Daten für das Youtube-Video
* Vortragsmaterialien


== YouTube Video ==
== YouTube Video ==
Über das fertiggestellte Projekt wurde ein YouTube Video erstellt. In diesem wird der Projektverlauf gezeigt und die Funktion der Kaffeekannen Kamera dargestellt.
[https://youtu.be/1zx67Mcr5qY Projekt 87: Kaffeekannen Kamera]


== Weblinks ==
== Weblinks ==

Aktuelle Version vom 17. Januar 2019, 23:59 Uhr

→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)

Autoren: Maximilian Harrer und Tobias Wemmer
Betreuer: Daniel Klein

Abbildung 1: Schematischer Aufbau der Kaffeekannen Kamera

Thema

Konfliktmanagement im Arbeitsleben durch fortschrittliche Technik. Frei nach dem Motto:

„Büro ist Krieg“ – Bernd Stromberg

Aufgabe

Entwickeln Sie eine Erweiterung für eine Kaffeekanne, welche zum einen den Füllstand überwacht und zum anderen ein Foto von der Person macht, welche die Kaffeekanne leert. Dieses Foto soll anschließend auf einem Bildschirm angezeigt werden, wenn die Person keinen neuen Kaffee kocht.

Erwartungen an Ihre Projektlösung

  • Planung des Gesamtsystems
  • Funktionsspezifikation:
    • Überwachung des Füllstands der Kaffeekanne
    • Kameraüberwachung der Kaffeekanne
    • Bildschirmanzeige des Fotos (sofern kein Kaffee nachgekocht wird)
    • Bild löschen, wenn Kaffee nachgekocht wird
  • Beschaffung der Bauteile
  • Hard- und Softwareseitige Realisierung des Aufbaus
  • Machen Sie ein tolles Videos, welches die Funktion visualisiert.
  • Test und wiss. Dokumentation
  • Live Vorführung während der Abschlusspräsentation

Kür: Modellbasierte Programmierung der Hardware via Simulink

Einleitung

Im Rahmen der von Prof. Dr.-Ing. Ulrich Schneider und Herrn Klein betreute Veranstaltung "Angewandte Elektrotechnik" ist, neben vier praktischen Versuchen, die Erarbeitung eines Projekts in zweier Teams teil der zu erbringen Prüfungsleistung. Aus diesem Anlass fanden sich im Rahmen der Einführungsveranstaltung am 28.09.2018 die Studenten Tobias Wemmer und Maximilian Harrer des Masterstudiengangs "Buisness and Systems Engineering" zusammen. In einem ersten Gespräch wurde die Möglichkeit der Bearbeitung eines bestehenden Projekts verworfen und sich darauf verständigt, ein alltägliches Problem in Büros, mittels einer Kamera und Wiegemechanismus ausgestatteten Kaffeekanne, anzugehen. Ziel des Projekts ist daher, einen Prototyp einer Kaffeemaschine zu entwerfen, welche den Füllstand der Kaffeekanne erkennt, bewertet und mittels einer Kamera den letzten Benutzer erfasst, um eine, etweilige, unkollegiale Nutzung zu detektieren. Unkollegial bedeutet in diesem Fall, die Kaffeekanne in einem Füllstand von unter einer Tasse zurückzulassen, sodass der nächste Benutzer gezwungen ist, zunächst einen neuen Kaffee aufzusetzen.

Zunächst musste, im Rahmen der Projektplanung, festgelegt werden, wie das Projekt (z.B. hinsichtlich der Art des Wiegemechanismus) umgesetzt wird und welche Bauteile hierfür benötigt werden. Nach Abgabe der BOM (Bill of Material) wurde ein Zeitplan erstellt und die einzelnen Aufgaben verteilt. Diese beinhalten, neben der Konstruktion und dem Bau des Kaffeemaschinenprototyps, die Montage des Wiegemechanismus. Zudem mussten die verwendeten Mikrocontroller initialisiert und für die Anwendung programmiert werden. Eine weitere Aufgabe im Verlauf des Projekts stellen die Erstellung einer Platine zur Spannungsteilung zur Verbindung des Arduino und Rasperry PI und einer Platine zur Zusammenfassung der Spannungs- und Groundanschlüsse der Schiebepotentiometer dar. Kontinuerlich mussten zudem Funktionstests der einzelnen Elemente, Datensicherung in SVN und die Dokumentation des Projekts im Hochschul-Wikipedia durchgeführt werden. Nach abschließendem Test und Inbetriebnahme wurde das Projektergebniss im Rahmen der am Messe am 18.01.2019 dem Betreuern und Kommilitonen vorgestellt. Zur Präsentation wurde zudem ein Youtube-Video erstellt, welches innerhalb von zwei Minuten die Funktionsweise den Projektablauf wiedergibt. Hinsichtlich der Projektdokumentation wird abschließend ein Fazit gezogen und mögliche Verbesserungspotentiale hinsichtlich unseres, sowie eines möglichen Entwurfs dargestellt.

Projekt

Verwendete Bauteile

Tabelle 1: Verwendete Bauteile
Anzahl Bauteilbezeichnung Link
4 Druckfeder https://www.federnshop.com/de/produkte/druckfedern/vd-145dj.html
4 Schiebepotentiometer 10k Ohm https://www.conrad.de/de/schiebe-potentiometer-10-k-stereo-01-w-linear-f450g-1-st-702070.html
1 Arduino https://www.amazon.com/Elegoo-EL-CB-001-ATmega328P-ATMEGA16U2-Arduino/dp/B01EWOE0UU/ref=sr_1_3?ie=UTF8&qid=1546537567&sr=8-3&keywords=elegoo+uno+r3
1 Rasperry PI https://www.conrad.de/de/raspberry-pi-3-model-b-1-gb-ohne-betriebssystem-1419716.html
1 Rasperry PI Camera V2 https://www.exp-tech.de/plattformen/raspberry-pi/7165/raspberry-pi-kameramodul-v2
1 Spannungsteilerplatine Hergestellt an der Hochschule Hamm-Lippstadt nach eigenem Layout
1 LED Grün https://www.conrad.de/de/kingbright-l-7113gt-led-bedrahtet-gruen-rund-5-mm-60-mcd-20-20-ma-22-v-180146.html
1 LED Rot https://www.conrad.de/de/vossloh-schwabe-ld-20-5mm-rot-led-bedrahtet-rot-rund-5-mm-11-mcd-60-20-ma-225-v-184543.html
1 LED Gelb https://www.conrad.de/de/tru-components-1573743-led-bedrahtet-gelb-rund-5-mm-130-mcd-50-20-ma-21-v-1573743.html
3 Widerstand https://www.conrad.de/de/royalohm-mor01sj0501a10-metallschicht-widerstand-500-axial-bedrahtet-1-w-5-1-st-1289865.html
1 Zusammenfassungsplatine Hergestellt an der Hochschule Hamm-Lippstadt nach eigenem Layout

Projektplan

Abbildung 2: Projektplanung Gantt-Chart
Abbildung 3: Stückliste / Bill of Material (BOM)
Tabelle 2: Projektplan
1. Erstellung Lösungskonzepte 6.2 Test am Steckbrett 8.3 Ansteuerung Bildschirm
2. Erstellung BOM 6.3 Erstellung Gerber Daten 9. Zusammenbau Gehäuse und Komponennten
3. Kontruktion Gehäuse/Kaffeemaschine 7. Erstellung Simulink Programm 10. Test des Geräts
3.1 Beschaffung Kaffeekanne 7.1 Installation Arduino Toolbox 11. Vorbereitung Präsentation
3.2 Anpassung Gehäuse an Maße der Kaffeekanne 7.2 Einlesen Messwerte 11.1 Ausdruck Projekt Schilder
3.3 Konstruktion Wiegemechanismus 7.3 Kalibrierung 11.2 Ausdruck Konstruktion
5. Bauteiltest 7.4 Ausgabe an Raspberry Pi 11.3 Ausdruck Schaltung
5.1 Erstellung Arduino Programm für Bauteil Tests 7.5 Funktionstest Simulink 11.2 Ausdruck Simulink Programm
5.2 Bauteiltest 8. Programmierung Raspberry Pi Kontinuierlich:
6. Erstellung Platinen 8.1 Einlesen Arduino Signale Dokumentation in SVN und im Wiki
6.1 Entwurf Schaltung 8.2 Ansteuerung Kamera Test und Verbesserung

Projektdurchführung

Aufsetzen und Vorbereiten des Raspberry Pi

Zum Aufsetzen des Raspberry Pis wird die folgende Hardware benötigt:

Benötigte Hardware:

  • Lan-Kabel (Wird beim ersten Start und zur Wartung benötigt)
  • Raspberry Pi Netzteil / Micro USB Kabel (Zur Spannungsversorgung, auf Dauer ist ein festes Netzteil ratsam)
  • Micro-SD-Karte (Entspricht der Festplatte des Raspberry Pi)
  • SD-Adapter (USB oder Karte)
  • PC (Zum Aufsetzen der SD-Karte und zur weiteren Programmierung)


Benötigt Software

Abbildung 4: Win32 Disk Imager
  • Raspbian (Betriebssystem des Raspberry Pi)[1]
  • Win32 Discimager (zum Bespielen der SD-Karte)[2]
  • 7zip File Manager (zum Packen und Entpacken von zip-Dateien)[3]
  • Putty (SSH-Client zur Kommunikation von PC und Raspberry Pi)[4]
  • Wordpad, Word, Editor, OpenOffice Wirter oder sonstiges Textprogramm


Raspbian entpacken und auf SD-Karte spielen

Für das Projekt wurde die Version "November 2018" verwendet.

Zum aufsetzen des Raspberry Pi muss zunächst Raspbian auf der SD-Karte installiert werden. Dazu muss der Download (Epfehlung: aktuellste Version für alle Features) zunächst entpackt werden. Zum Entpacken wird das Tool 7zip verwendet. Anschließend wird das Image (Raspian) auf die SD-Karte gespielt. Hierzu wird die Micro-SD-Karte in den Adapter gesteckt, der wiederum in den PC gesteckt wird. Anschließend wird der Win32 gestartet. Hierbei können die Standard-Einstellungen verwendet werden. Das entpackte Image wird ausgewählt (siehe Abbildung: Win32 Disk Imager - Nr. 1). Anschließend muss der Datenträger (siehe Abbildung: Win32 Disk Imager F- Nr.2) geprüft und gegebenenfalls korrigiert werden. Das Aufspielen kann einige Minuten in Anspruch nehmen.


SSH-Schnittstelle aktivieren

In den neueren Raspian Versionen ist die SSH-Schnittstelle (für Kommunikation über das Netzwerk, z.b. via Putty) aus Sicherheitsgründen deaktiviert. Daher muss dieser manuell aktiviert werden. Dazu muss in das Boot Verzeichnis der bespielten SD-Karte eine Datei mit dem Namen SSH eingefügt werden. Dies geht z.B. mittels Editor, indem ein leeres Textdokument mit dem Namen SSH erstellt wird. Diese Datei jedoch darf keine Dateiendung haben. Daher muss die Datei (SSH) zunächst auf den Desktop verschoben werden (sofern nicht schon dort vorhanden), anschließend kann über die Eingabeaufforderung von Windows die Dateiendung entfernt werden dazu müssen die folgenden Befehle eingegeben werden.[5]

cd desktop
rename ssh.txt ssh

Auch wenn die Datei (SSH) mit einem anderen Programm erstellt wurde und/oder eine andere Endung hat, so bleiben die Befehle gleich. Lediglich die Datei Änderung muss bei zweiten Befehl entsprechend der tatsächlichen Endung angepasst werden. Durch die Eingabe von „cd dektop“ wird die Datei mit der entsprechenden Endung angezeigt.


HDMI Schnittstelle aktivieren

In manchen Versionen von Raspbian kommt es vor, dass die HDMI-Schnittstelle nicht aktiviert ist. Für das Aufsetzen des Raspberry Pi ist dies nicht zwangsläufig nötig, jedoch für spätere Funktion der Anzeige des Bildes, daher sollte die Schnittstelle schon bei Aufsetzen aktiviert werden. Hierzu genügt es im Boot verzeichnis die Datei: „config.txt“ zu öffnen und die Zeile „hdmi_safe=1“ am Ende der Datei zu ergänzen.[6]


Raspberry Pi – Einstellung via Bildschirm, Maus und Tastatur

Abbildung 5: Kommunikation über Putty
Abbildung 6: Aktivierung der Kamera.png

Anschließend kann die SD-Karte aus PC und Adapter entfernt werden und in den Raspberry Pi gesteckt werden. Danach können die Maus, die Tastatur und der Bildschirm sowie das LAN-Kabel angeschlossen werden. Die Reihenfolge ist egal. Wichtig ist nur, dass das Netzteil des Raspberry Pi zum Schluss angesteckt wird, da dieser dann sofort startet. Anschließend muss das Betriebssystem eingestellt werden. Hierzu genügt es den Aufforderungen am Bildschirm zu folgen. Es werden die Region und die Sprache (auch die Tastatur: default ist US-Tastatur) eingestellt. Anschließend sollte das Passwort geändert werden. Der Standard-Login lautet wie folgt:

 Name: pi
 Passwort: raspberry


Raspberry Pi – Einstellung via PC und Putty

Alternativ, wenn Bildschirm, Maus oder Tastatur fehlen, kann die Einstellung über Putty erfolgen. Hierzu muss zunächst die IP-Adresse des Raspberry Pi ermittelt werden. Die Ermittlung erfolgt über den Router. Je nach Modell sieht der Ablauf anders aus. Sobald der Raspberry Pi angeschaltet und im Netzwerk ist, wird dieser im Router als „raspberrypi“ mitsamt der IP-Adresse angezeigt. Anschließend wird Putty gestartet. Anschließen wird die IP-Adresse eingegeben (siehe Abbildung: Putty – Nr. 1). Anschließend wird der Port eingestellt (siehe Abbildung: Putty – Nr. 2), diese ist im Normalfall die 22. Sollte die 22 nicht funktionieren, kann eine beliebige andere Zahl ausprobiert werden. In den meisten Fällen genügt dies aus. Andernfalls muss der Raspberry Pi neugestartet werden. Danach werden die Einstellungen zunächst gespeichert und dann geladen eingegeben (siehe Abbildung: Putty – Nr. 3), bevor auf „open“ geklickt wird eingegeben (siehe Abbildung: Putty – Nr. 4). Danach wird vom Raspberry Pi nach dem Namen und dem Passwort gefragt. Diese wurden bereit ober aufgeführt. Anschließend sollte das Passwort geändert und die Tastatur eingestellt werden. Hierzu muss der Befehl „sudo raspi-config“ eigegeben werden. Dadurch öffnet sich das Einstellungsmenü. Je nach Raspbian Version variiert der Aufbau.


Aktivierung Kamera

Damit das Kameramodul verwendet werden kann, muss dieses Aktiviert werden. Dazu wird zunächst das Kameramodul in den entsprechenden Anschluss (Buchse neben der HDMI-Buchse)gesteckt werden. Dieser besitzt eine Sicherung. Die Sicherung muss vor dem Stecken hochgezogen werden. Anschließend wird das Kabel gesteckt und die Sicherung wieder herunter gedrückt. Nachdem das Kameramodul physisch angeschlossen wurde, kann die Aktivierung über den folgenden Befehl begonnen werden.

sudo raspi-config

Die Freischaltung erfolgt in fünf Schritten (siehe Abbildung X), entweder über Putty oder direkt am angeschlossenen Bildschirm über die Einstellungen. Je nach Software Version kann der Aufbau der Menüs unterschiedlich gestaltet sein. 1. "Interfacing Opitons" ankicken 2. "Camera" anklicken 3. "Ja anklicken 4. "Ok" anklicken 5. Reboot des Raspberry Pi

Verbindung zwischen Arduino und Raspberry Pi

Die Verbindung zwischen Arduino uns Raspberry Pi erfolgt über drei Leitungen. Diese senden jeweils ein Signal vom Arduino zum Raspberry Pi, dessen Pins (GPIOs) mit der BCM-Zählweise deklariert wurde. Je nach Zählweise sind die Nummern unterschiedlich.

  • Arduino Pin11 auf Pi GPIO 17 für die Aufnahme des Fotos
  • Arduino Pin12 auf Pi GPIO27 für die Anzeigen des Fotos
  • Arduino Pin13 auf Pi GPIO 22 zum Löschen des Foto.

Da der Arduino 5V auf seinen digitalen Ausgängen aussendet und der Raspberry Pi auf seinen Eingängen maximal 3,3V verträgt, muss die Spannung der Signale entsprechend gedrosselt werden. Dies erfolgt durch einen simplen Spannungsteiler, dessen Schaltung im folgenden Kapitel näher erläutert ist.

Erstellung der Platinen zur Spannungsteilung und Zusammenführung

Abbildung 6: Von links: Schaltplan, Platinenlayout und 3D-Vorschau des Spannungsteilers
Abbildung 7: Von links: Schaltplan, Platinenlayout und 3D-Vorschau der Zusammenfassungsplatine
Abbildung 8: Links: Lochrasterplatine zur Spannungsteilung, Rechts: Lochrasterplatine zur Zusammenführung

Für die Erstellung der Platine, welche den Arudino mit dem Raperry PI verbinden soll, wurde die Software Multisim/Ultiboard genutzt. Zunächst wurde mittels Multiboard der Schaltplan konzipiert. Für die Funktion der Kaffeemaschine werden für die Weitergabe von Signalen für das Aufnehmen eines Fotos, das Anzeigen eines Fotos und dem Löschen des Fotos In- und Outputschnittstellen für Arduino und Rasperry PI benötigt. Um die Funktionsfähigkeit zu testen wurden zudem für jeden Vorgang eine LED integriert, welche bei einer Signalübertragung aufleuchten soll. Zudem musste ein Masseanschluss integriert werden. Anschließend wurde das Schaltbild in Ultiboard übertragen. Dort wurden die einzelnen Bauteile angeordnet und miteinander verbunden. Für das Fräsen der Platine wurden Gerber-Files im Format RS274X exportiert und an Herrn Ramesohl übergeben. Der erstellte Schaltplan in Multisim und das Platinenlayout in Ultiboard sind in Abbildung 6 wiedergegeben. Eine weitere Platine (siehe Abbildung 7) wurde konzipiert, um Spannungsversorgung und Ground der 4 Schiebepotentiometer, auf Grund der limitierten Steckplätze des Arduino, zusammenzuführen (siehe Abbildung 7).

Die beiden zuvor beschriebenen und in Multisim/Ultiboard konzipierten Platinen konnten nicht abschließend in die Kaffeemaschine implementiert werden, da diese mehrfach beim Löten, durch fehlende praktische Fähigkeiten im Bereich der Lötung der projektdurchführenden Studenten unbrauchbar gemacht wurden. Um dies bei weiteren Platinen zu verhindern und die betriebsfähigkeit des Projekts zur Abgabe zu gewährleisten, wurden beide Platinen, anhand der Layouts aus Multisim/Ultiboard, als Lochrasterplatinen (Abbildung 8) realisiert.

Schaltung des Wiegemechanismus

Der Wiegemechanismus wird über vier Potentiometer realisiert. Diese werden über eine Spannungsversorgungsplatine auf jeweils eine Spannungsversorgung und eine Masse zusammengefasst, da der Arduino nur begrenzte Pins zur Spannungsversorgung zur Verfügung hat. Die Signalleitungen werden direkt an die analogen Eingänge A1-A4 des Arduinos angeschlossen.

Konstruktion der Kaffeemaschine

Abbildung 9: Kaffeemaschine in SketchUp

In der frühen Planungsphase des Projekts wurde deutlich, dass die Modifizierung einer bereits vorhandenen Kaffeemaschine nicht sinnvoll wäre. Grundlage dieser Entscheidung war hauptsächlich das Material. Daher entschieden wir uns, einen eignen Prototyp aus Holz zu fertigen. Das Holzgehäuse inklusive Wiegemeachanismus wurde mit Hilfe der Software zur Erstellung von 3-D Modellen "SketchUp" konzipiert. Anhand des in SketchUp modellierten Konstruktionsplans wurden anschließend die Einzelteile aus Holz gefertigt und durch Schrauben miteinander verbunden. Die Schiebepotentiometer und Federn wurden verklebt. Die Konstruktion lässt sich in 4 Teile aufgliedern:

Teil 1: Zunächst wurde das Grundgerüst entworfen, welches jeweils 4 Löcher auf den rechten und linken Seite für die Verkabelung der Schiebepotentiometer aufweist. Wichtig dabei ist zudem, dass die Höhe ausreichend für die Federn des Wiegemechanismus ist.

Teil 2: Verbunden mit den Reglern die Potentiometer und auf den Federn lagernd soll eine Holzplatte der Kaffeekanne als Stellfläche dienen. Die Holzplatte im Zusammenspiel mit Federn und Schiebepotentiometern bilden den Wiegemechanismus, welcher sich in Abhängigkeit des auf ihn lastenden Gewichts absenkt. Diese Absenkung wird durch die Schiebepotentiometer aufgenommen und an den Arduino weitergegeben.

Teil 3: Darauf wurde ein Aufbau gesetzt, welcher die Kaffeekanne umschließt. Dieser enthält zudem ein Loch auf der Oberseite für das Einsetzen eines handelsüblichen Trichters zum befüllen der Kaffeekanne, ohne diese zu entnehmen.

Teil 4: Für die Montage der Kamera sowie der Befestigung weiterer Komponenten wie Arduino und Rasperry PI wurde zuletzt eine Platte auf die Rückseite der Konstruktion gesetzt, welche die anderen beiden Teile überragt. Dies ist von Nöten, um der Kamera einen optimalen Aufnahmewinkel zu ermöglichen.

Berechnung der Federkonstante der Federn für den Wiegemechanismus

Wie in der Konstruktionsphase konzipiert, sollen für den Wiegemechanismus neben Schiebepotentiometern 4 Druckfedern verwendet werden. Um zu ermitteln, welche Federn beschafft werden müssen, mussten im Vorfeld einige Kennzahlen ermittelt werden. Zunächst wurden die Gewichte der für den Wiegemechanismus relevanten Teile gemessen (siehe Tabelle "Kennzahlen für Wiegemechanismus"). Daraus wurden die optimalen Federeigenschaften errechnet (siehe Tabelle "Optimale Feder"). Die wichtigste Kennzahl stellt dabei die Federrate (R) dar. Diese gibt an, wie stark sich die Feder bei einer Krafteinwirkung staucht und lässt sich mit der Formel errechnen. Daraus ergibt sich . Die Masse "m" stellt sich dabei aus dem Gewicht der Bodenplatte, der Kaffeekanne und dem maximalen Inhalt (700 ml) zusammen, ist die Reichweite des Schiebepotentiometers und g die durch ein Schwerefelde verursachte Kraft auf einen Körper, welche mit definiert ist. Abschließend konnte daraus eine Feder ermittelt werden, derer Eigenschaften der "optimalen Feder" am nähsten kommen. Folgend werden die ermittelten Daten in drei Tabellen wiedergegeben.

Abbildung 10: Wiegemechanismus
Abbildung 11: Gesamtansicht Simulinkprogramm
Abbildung 12: Berechnung Mittelwert
Tabelle 3: Kennzahlen für Wiegemechanismus
Bezeichnung Gewicht
Kaffeekanne 0,17 kg
Inhalt (min.) 100 ml 0,10 kg
Inhalt (max.) 700 ml 0,70 kg
Bodenplatte 0,17 kg
Kaffeekanne + Inhalt (leer) 0,44 kg
Kaffeekanne + Inhalt (voll) 1,04 kg

Optimale Feder

Tabelle 4: Optimale Feder
Bezeichnung Formelzeichen Kennzahlen
Aufzunehmende Kraft Fn(min) Fn 4,31 N
Aufzunehmende Kraft Fn(max) Fn 10,19 N
Maximale Höhenveränderung Delta h 38 mm
Federkonstante bei einer Feder R 0,27 N/mm
Federkonstante je Feder bei 4 Federn R/4 0,07 N/mm
Tabelle 5: Gewählte Feder
Bezeichnung Erklärung Kennzahl
L0 Maximale Höhe 71,30 mm
Ln Minimale Höhe 23,25 mm
Delta h Maximale Höhenveränderung 48,05 mm
D Äußerer Durchmesser 20,00 mm
Fn Maximale Krafteinwirkung 16,82 N
R Federkonstante 0,09 N/mm

Simulink Programm zum Auslesen der Potentiometer

Abbildung 13: Kalibrierung Mittelwert
Abbildung 14: Auswertung der Sensorwerte

Das Simulink Programm wird zur Steuerung des Arduinos verwendet. Dabei werden die Sensoren (Potentiometer) zunächst ausgelesen. Im nächsten Schritt wird in einer Subfunktion der Mittelwert der Sensoren gebildet. Dies ermöglicht einen möglichst genauen Wert. Ohne den Mittelwert käme es zu größeren Abweichungen, da die relativ kleine Kaffeekanne je nach Positionierung die Potentiometer unterschiedlich weit herunter drückt. Durch den Mittelwert werden die Schwankungen der Messwerte bei gleichem Gewicht und unterschiedlicher Position stark minimiert, sodass nur im Ausnahmefall falsche Werte geliefert werden. Nach der Bildung des Mittelwerts wird dieser in der nächsten Subfunktion kalibriert. Dazu wird ein weiteres Potentiometer eingelesen und der Wert auf den Mittelwert aufsummiert. Dadurch kann die Vorrichtung im laufenden Betrieb kalibriert werden, auch ohne den Code zu verändern. Zuletzt wird anhand des Grenzwertes der kalibrierte Mittelwert in der letzten Subfunktion ausgewertet. Dabei entstehen die drei Zustände „Foto aufnehmen“, „Foto anzeigen“ und „Foto löschen“. Der Zustand „Foto anzeigen“ setzt den zuvor durchlaufenen Zustand „Foto aufnehmen voraus. Jeder Zustand liefert ein „HIGH“ auf einen anderen Ausgang. Je nach Arduino Pin werden diese Signale von Raspberry Pi anders weiter verarbeitet. Die Systemtests haben gezeigt, dass das Simulink Programm fehleranfällig ist. So wird der Bildlauf gestört, indem die Ausgabe gelöscht und wieder angezeigt wird. Grund dafür sind zum einen Toleranzen im Spannungsteiler, aber auch das Simulink Programm. Im Arduino Programm wurde dieser Fehler durch mehrere While-Schleifen behoben. Diese in Simulink zu implementieren hat nicht wie geplant funktioniert. Daher wurde die Präsentation das Arduino Programm anstelle des Simulink Programms verwendet.

Raspberry Pi Programm zur Aufnahme/Anzeige des Fotos

Abbildung 15: Zustandsdiagramm Raspberry Pi

Das Raspberry Pi Programm wurde mit Python geschrieben. Es liest die drei Signale vom Arduino ein und zeigt in Abhängigkeit vom jeweiligen Signal ein anderes Bild in einer "Pseudo-GUI" an. Diese besteht in erster Linie aus Konsolenbefehlen, welche den Image Viewer "Gpicview" mit den jeweiligen Bildern aufruft. Das Programm besitzt drei Zustände (vgl. Abbildung: Zustandsdiagramm Raspberry Pi). Für jeden Zustand erfolgt eine Ausgabe in der Konsole, sodass der aktuelle Zustand sowie der verlauf abgelesen werden kann. Dazu werden in einer else-Abzweigung auftretende Fehler und Signal-Aussetzer dokumentiert. Das Kameramodul wird direkt über eine eigene Bibliothek mit Standardbefehlen angesprochen.[7]
Aufgrund der Einbau-Richtung des Kameramoduls ist darauf zu achten, dass das Bild in diesem Projekt um 180° gedreht wird. Zusätzlich wurde die Größe der Bilder herunter skaliert, um Speicherplatz zu sparen.

Raspberry Pi Programm:

from time import sleep #nur die Funktion sleep 
import os
import RPi.GPIO as GPIO

#Schleifen Variablen
kaffee = 0
warnung = 0
foto = 0
prog = 1

#Festlegung der Pinreihenfolge
GPIO.setmode(GPIO.BCM)

#Initialisierung der Pins
GPIO.setup(17, GPIO.IN,pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(27, GPIO.IN,pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(22, GPIO.IN,pull_up_down = GPIO.PUD_DOWN)

#Startbilschirm
os.system('gpicview kaffee.png &')
while prog==1: #Dauerschleife
    
    #Foto aufnegmen - - - - - - - - - - - - - - - - - -
    if GPIO.input(17)==1:   
     
        #alte Anzeige beenden
        os.system('killall gpicview')
        print " Anzeige beendet! "

        #Warnung anzeigen
        os.system('gpicview achtung.png &')
        print " Achtung! "

        #Foto aufnehmen
        os.system('raspistill -w 1920 -h 1080 -vf -n -o image.png')
        print " Foto aufnehmen! "

        #Schleifen Variable
        warnung=1

        #Nur solange ein Signal anliegt
        while warnung==1:

            if GPIO.input(17)==1:
                warnung=1  
  
            else:
                warnung=0
                break
        
    #Foto vom Verbrecher anzeigen - - - - - - - - - - - - - - - - - -        
    if GPIO.input(27)==1:   
 
        #alte Anzeige beenden
        os.system('killall gpicview')
        print " Anzeige beendet! "

        #Schleifen Variable
        foto=1

        #Verbrecher zeigen
        os.system('gpicview image.png &')
        print " Verbrecher! "
        sleep(10) #Mindestzeit der Anzeige
       
        #Nur solange ein Signal anliegt
        while foto==1:

            if GPIO.input(27)==1:
                foto=1

            else:
                foto=0
                break            
    
    #Anzeige beenden und Standardbildschirm- - - - - - - - - - - - - - - - -
    if GPIO.input(22)==1:   
 
        #alte Anzeige beenden
        os.system('killall gpicview')
        print " Anzeige beendet! "

        #Schleifen Variable
        kaffee=1

        #Standardbilschirm anzeigen
        os.system('gpicview kaffee.png &')
        print " Standardbildschirm "

        #Nur solange ein Signal anliegt
        while kaffee==1:     
       
            if GPIO.input(22)==1:
                kaffee=1   
 
            else:
                kaffee=0
                break
    
    #Bei Fehlern - - - - - - - - - - - - - - - - - - -
    else:

        #Angepasst an den verwendeten Bildschirm
        print " Kein Signal! "

GPIO.cleanup()


Tests

Die Tests sind in Anlehnung an das V-Modell erfolgt. So wurden alle Komponenten und zwischen Komponenten (bzw. temporären Komponenten) unmittelbar nach deren Fertigstellung getestet. Auch die Software wurde während und nach der Fertigstellung getestet. Nachdem die Komponenten in den Komponententests (Unit-Tests) funktioniert haben, wurde sie im Zusammenspiel mit anderen Komponenten getestet (Integrationstests). Dies hat an einigen Stellen zu Überarbeitungen der Komponenten und somit weiteren Unit- und Integrationstest geführt. Zum Schluss wurden Systemtests durchgeführt, in denen das gesamte System getestet wurde und einzelne Fehler im Anschluss daran ausgebessert wurden. Im Folgenden sind die durchgeführten Tests aufgeführt.

Abbildung 16: Aufbau der funktionsfähigen Kaffeekannen Kamera

Unit-Tests

  • Arduino & Simulink Programm
    • Mittelwert Funktion
    • Kalibrierung
    • Sensorenauswertung
  • Bauteile
    • Versorgungsplatine
    • Spannungsteiler Platine
    • Wiegemechanismus
    • Sabotageschutz
  • Raspberry Pi
  • Betriebssystem
  • Programm (ohne Anschluss Arduino)

Integrationstests

  • Wiegemechanismus und Arduino
    • Verbindungen
    • Arduino Programm
    • Simulink Programm
  • Arduino und Spannungsteiler
  • Raspberry Pi und Arduin

Systemtests

  • Gesamtsystem

Ergebnis

Das Projekt wurde erfolgreich beendet. Der Füllstand der Kaffeekanne wird über das Gewicht der Kanne erfasst. Dabei gilt zu beachten, dass aufgrund der Konstruktion Schwankungen möglich sind, je nachdem wie die Kaffeekanne auf den Wiegemechanismus platziert wird. Die Tests haben gezeigt, dass trotz dessen der Wiegemechanismus zuverlässig funktioniert. Die zusätzliche Implementierung der Kalibrierung ermöglicht es auch bei langem Gebrauch und ggf. Verschleiß (z.B. ein Verbiegen/Stauchung der Federn), diesen auszugleichen. Die Fotofunktion funktioniert. Die Person, die den Kaffee entnimmt wird fotografiert. Das Foto wird temporär gespeichert und nur angezeigt, wenn kein Kaffee nachgekocht wird. Weiterhin wird das Foto im Anschluss gelöscht, wenn neuer Kaffee gekocht wird. Unter Umständen wird die Person angezeigt, wenn sie zu lange braucht, um Kaffee nach zu kochen. Dies ist jedoch eher ein Feature als ein Fehler. Da die Anzeige nach dem Kochen sofort beendet wird und dies somit einen Ansporn liefert, sich kollegial zu verhalten und nicht unnötig lange für das Kaffeekochen zu brauchen. Darüber hinaus kann die Zeitspanne verändert werden, sodass die maximale Zeit zum Nachkochen von den Nutzern (Administratoren der Kaffeekannen Kamera) eingestellt werden kann. Das Projekt war somit ein Erfolg und trägt dazu bei, dass der Büroalltag ein Schlückchen sicherer wird.

Zusammenfassung

Lessons Learned

In diesem Projekt haben wir in viele Bereichen dazu gelernt. Die wichtigsten Erkenntnisse sind im Folgenden zusammengefasst.

Federsystem:

  • Exakte Berechnungen nützen nichts, wenn die entsprechenden Komponenten nicht zu beschaffen sind
  • Mehr Federn führen zu einer höheren Stabilität

Platinen und Löten:

  • Eine einfacherer Schaltung ist nicht immer auch einfacher zu löten/fertigen
  • Bei einfachen Schaltungen können deutlich Lochrasterplatinen schneller gefertigt werden
  • Auch trotz Lochrasterplatine lohnt es sich die Schaltung in Multisim zu testen

Raspberry Pi:

  • Die HDMI und die SSH Schnittstelle müssen initialisiert werden
  • Standardmäßig wird das US-Tastaturlayout verwendet („z“ und „y“ sind vertauscht)
  • Der Befehl „os.system('killall gpicview Datei.png &‘)“ funktioniert nur mit dem “ &” im laufenden Betrieb

Simulink:

  • If-Abfrage eigenen sich nicht für dynamische Anwendungen
  • Switch-Case Blöcke können anstelle von If-Else Abfragen verwendet werden

Programmierung allgemein:

  • Für Zustände sind steigenden Flanken eindeutiger auszulesen als HIGH Signale
  • Für Zustände sind While-Schleifen besser als If-Abfragen, wenn diese aufeinander aufbauen

Ausblick

Das Projekt kann mit den gegebenen Materialien und Komponenten verbessert werden. Außerdem kann das gesamte Konzept überarbeitet werden. Im Folgenden sind die Verbesserungen aufgeführt, welche während der Projekt Durchführung aufgefallen sind.

Verbesserungspotenzial hinsichtlich unseres Entwurfs

  • Eine Konstruktion der Kaffeemaschine für Kaffeekannen mit größerem Umfang wäre eine erste Verbesserung. Weiterhin könnte in diesem Rahmen der „Stellplatz“ der Kaffeekanne so gestaltet werden, dass diese nicht mehr verrutscht.
  • Eine weitere Optimierung besteht in einer Veränderung des Wiegemechanismus mit einer größeren Anzahl Federn für Stabilitätszugewinn. Eine leichte Veränderung, die eine Stabilitätssteigerung zufolge hätte wäre es die Federn weiter außen zu positionieren. Im Vergleich zu mehr Federn ist der Vorteil jedoch gering.
  • Eine andere Möglichkeit zur Optimierung, besteht darin, auf den Arduino zu verzichten und direkt die Auswertung der Sensoren über den Raspberry Pi laufen zu lassen. Dazu sind jedoch mehr Kenntnisse im Bereich Raspberry Pi notwendig.
  • Da das Simulink Programm nicht mit While-Blöcken funktioniert hat, ist eine Optimierung, den Code in Simulink Stateflow umzusetzt.

Verbesserungspotenzial hinsichtlich eines neuen Entwurfs

Eine generelle Verbesserung mit neuem Konzept könnte die Verwendung mehrerer Kameras sein. Die könnten den gesamten Raum überwachen, was zum einen die Sabotage-Möglichkeiten verringert und zum anderen erlaubt über eine zusätzlich implementierte Gesichtserkennung die automatische Auswahl des "besten" Bildes" zu realisieren. Dadurch könnten verschwommene Bilder reduziert bzw. vermieden werden. Dazu würden die Personen besser zu identifizieren sein,

Der Sabotage Schutz könnte völlig neu aufgezogen werden. Dazu gibt es diverse Möglichkeiten.

  • Zunächst könnte der Wiege-Mechanismus unter und auf der Kanne angebracht werden. Dadurch wäre es unmöglich einen schweren Gegenstand unbemerkt auf den Wiegemechanismus zu legen. Weiterhin könnte obere Wiegemechanismus würde eine Ablage auf der Kaffeekanne erkennen können. Somit könnte das tatsächliche Gewicht des Inhalts ermittelt werden. Dazu eignet sich jedoch kein Federsystem daher sollten hier Wägezellen verwendet werden.
  • Eine etwas andere Methode besteht in der Erfassung des Füllstands ebenfalls mittels Kamera. Dies ist jedoch nur bei transparenter Kaffeekanne möglich. Alternativ könnten auch Lichtsensoren in Kombination mit Lasern verwendet werden. Jedoch ist diese Variante eher teuer und könnte je nach Stärke des Kaffees (in Abhängigkeit der Farbe und Lichtdurchlässigkeit) problematisch werden.
  • Eine Prüfung ob neuer Kaffee gekocht wird, könnte auch direkt in der Kaffeemaschine geprüft werden. Dazu würde eine richtige Kaffeemaschine benötigt werden. Dies würde zuverlässige Werte liefern, jedoch müsste trotzdem der Füllstand überwacht werden.
  • Der Füllstand könnte auch über einen kapazitiven Sensor ermittelt werden.
  • Die vermutlich kostengünstigste Variante besteht darin, zwei Kontakte innerhalb der Kaffeekanne zu befestigen. Solange die Kanne einen gewissen Füllstand aufweist bleibt der Stromkreis geschlossen. Sobald der Füllstand unterschritten wird öffnet sich der Stromkreis. Diese Variante ist jedoch nicht unbedingt mit jeder Kaffeekanne möglich.
  • Ein RFID Kartenleser (z.B. Arbeitsausweis) zur Erkennung der Person würde nahezu sämtliche Sabotageversuche verhindern können. Das Foto kann dabei direkt aus einer Datenbank geladen werden, wodurch immer ein "gutes" Foto vorhanden ist. Diese Variante ist ggf. problematisch hinsichtlich der DSGVO.

Projektdaten

Die Projektdaten sind in SVN im Projektordner (Projekt 86) abgespeichert. Die Struktur sieht wie folgt aus:

01_Projektplan (enthält z.B. BOM, Mindmap, Gantt-Chart...

02_Projektdokumentation (enthält z.B. Wiki-Artikel, Ideensammlung zu Optimierungen, Abbildung...

03_Projektdaten (enthält z.B. Simulink Programme, Arduino Programme, Schaltpläne und Layouts...

04_Test (enthält z.B. Test Vorbereitungen, Testprogramme, Testdokumentation...

05_Projektabschluss (enthält z.B. Youtube-Video, Vortragsmaterialien, Aufsteller...

YouTube Video

Über das fertiggestellte Projekt wurde ein YouTube Video erstellt. In diesem wird der Projektverlauf gezeigt und die Funktion der Kaffeekannen Kamera dargestellt.

Projekt 87: Kaffeekannen Kamera

Weblinks

Raspberry Pi - Desktop Image für virtuelle Maschine - Download unter: https://www.raspberrypi.org/downloads/

Raspberry Pi - Raspbian Image - Download unter: https://www.raspberrypi.org/downloads/raspbian/

Literatur

  1. Download des Betriebssystems Raspbian. Abgerufen am 02.01.2019.
  2. Download des Win32 Discimagers. Abgerufen am 02.01.2019.
  3. Download des 7zip File Managers. Abgerufen am 02.01.2019.
  4. Download des SSH-Clients Putty. Abgerufen am 02.01.2019.
  5. Raspberry Pi: SSH aktivieren. Abgerufen am 17.01.2019.
  6. HDMI Schnittstelle aktivieren. Abgerufen am 17.01.2019.
  7. Raspicam Commands. Abgerufen am 17.01.2019.

→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)