Projekt 87: Kaffeekannen Kamera
→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)
Autoren: Maximilian Harrer und Tobias Wemmer
Betreuer: Daniel Klein
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
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
- 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
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
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
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.
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
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 |
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
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
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.
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
- ↑ Download des Betriebssystems Raspbian. Abgerufen am 02.01.2019.
- ↑ Download des Win32 Discimagers. Abgerufen am 02.01.2019.
- ↑ Download des 7zip File Managers. Abgerufen am 02.01.2019.
- ↑ Download des SSH-Clients Putty. Abgerufen am 02.01.2019.
- ↑ Raspberry Pi: SSH aktivieren. Abgerufen am 17.01.2019.
- ↑ HDMI Schnittstelle aktivieren. Abgerufen am 17.01.2019.
- ↑ Raspicam Commands. Abgerufen am 17.01.2019.
→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)