Zum Projektvideo der ausgearbeiteten
Lösung gelangen sie
hier
Bedienung und Funktionsweise der ConSALTing Machine
Targetanwendung:
Der erste Schritt dient zur Kalibrierung des Salztankfüllstands. Er
ist also nur nötig, falls der Salztank zuvor neu aufgefüllt wurde.
Durch einen doubletab des Buttons wird der Salzfüllstand kalibriert
und abgespeichert. Während des Vorgangs leuchtet die Status-LED zur
Überprüfung weiß auf.
Der erste Schritt der eigentlichen
Salzdosierung erfolgt, nachdem die erwünschte Wassermenge in die
ConSALTing MAchine eingefüllt wurde. Nun kann ein Wiegevorgang durch
ein kurzes Drücken des Buttons gestartet werden. Dabei misst eine
Wägezelle, die im Griff des Geräts verbaut ist, wie viel Wasser sich
im Becher befindet. Dieser Vorgang wird mit der blau leuchtenden
Status-LED bestätigt.
Im letzten Schritt wird der Dosiermotor durch
ein längeres Halten des Buttons eingeschaltet, welcher die
individuell angepasste Salzmenge ausgibt. Während des Dosiervorgangs
leuchtet die Status-LED gedimmt grün und das Geräusch des Motors ist
hörbar.
Das dosierte Salz kann nun anschließend ganz
einfach durch einen federrückgestellten Mechanismus in den Topf
ausgegeben werden.
Eine Übersicht zum Controlbutton und der Status-LED befindet
sich in der
Bedienungsanleitung.
Android App:
Die App besteht aus den drei
Fragmenten "Konfiguration", "Sensordaten" und "Info", die über ein
TabLayout verbunden werden.
Um beim Start der App erste Aktionen auszuführen, implementiert
die App die wichtigsten Methoden des Android-Activity-Lifecycles:
onCreate (Aufruf einmalig nach dem Start der App): Einrichtung
des Layouts
onResume (Aufruf immer dann, wenn die App aus dem Hintergrund
nach vorne kommt): Zunächst wird geprüft, ob der Benutzer alle
Berechtigungen erteilt hat. Die App erfordert den Zugriff auf das
Dateisystem für das Lesen und Schreiben der Konfigurationsdatei,
sowie die Berechtigung zur Verwendung von Bluetooth. Für die Suche
nach Bluetooth-Low-Energy-Geräten erfordert das Sicherheitskonzept
von Android zusätzlich die Standort-Berechtigung und aktivierte
Standortdienste. Falls noch nicht alle Berechtigungen erteilt
wurden, erhält der Benutzer Hinweise von der App. Andernfalls wird
die Zustandsmaschine gestartet. Parallel dazu wird ein zweiter
Thread gestartet, der die Konfigurationsdatei ausliest und
anschließend den Spinner aktualisiert. Die Konfigurationsdatei
ermöglicht es, weitere Gerichte in der App einzufügen, ohne dass die
App neu kompiliert werden muss.
onPause (Aufruf, wenn die App in den Hintergrund kommt oder wenn
das Gerät in den StandBy-Modus wechselt): Trennung der
BLE-Verbindung.
Die Zustandsmaschine umfasst die vier Zustände "Disconnected",
"Searching", "Connecting" und "Connected". Bei jedem Zustandswechsel
wird das Layout der App entsprechend angepasst. Im Zustand
"Connected" können verschiedene Aktionen ausgeführt werden,
beispielsweise die Abfrage der Sensordaten oder die Übertragung der
eingestellten Salzkonzentration an die ConSALTingMachine.
Umsetzung der Energieeffizienz:
Da EEM das Modul das erste war, in dem wir im Studium mit der
Thematik Energieeffizienz konfrontiert wurden, war es uns anfangs
noch nicht ganz klar, an welchen Stellen diese softwaretechnisch
überhaupt umgesetzt werden kann. Diese Frage beantwortete sich im
Laufe der Vorlesung mit der Gegenfrage, was denn die größten
Stromverbraucher des Systems sind. Diese galt es also folglich zu
optimieren und somit die Energieeffizienz zu maximieren.
Dazu wurde als erste Maßnahme der Dosiermotor
betrachtet, da dieser nicht nur im laufenden Betrieb eine Menge
Strom verbrauchte, sondern auch wenn er nicht gebraucht wurde ein
Stillstands- und Haltestrom floss. Dies wurde softwaretechnisch
mithilfe eines Sleep-Modes der Treiberplatine, sowie einer
An-/Ausschaltung realisiert, die dafür sorgte, dass der Dosiermotor
immer nur dann Strom verbraucht, wenn er auch benötigt wird.
Anschließend wurden auch die weiteren
Komponenten der ConSALTing Machine auf ihre Energieeffizienz
untersucht und anschließend weitestgehend optimiert. So wurden auch
die Wägezelle und die Kalibrier-Referenz-LED nur dann wirklich
versorgt, wenn sie auch in Gebrauch waren. Dies schient zwar ein
banaler Punkt zu sein, jedoch machten wir anfangs den Fehler die LED
direkt mit 5V anzuschließen, weshalb sie permanent unnötig Strom
verbrauchte.
Ein weiterer Ansatz war die Optimierung der
Kommunikationsvariante. Hierbei kam Bluetooth Low Energy (BLE)
anstatt der normalen Bluetooth Variante zum Einsatz, da diese alle
nötigen Anforderungen an die Kommunikationsart erfüllte und dabei
nur einen Bruchteil des Stromverbrauches aufwies. Zudem wurde im
Programmcode des Targets vermehrt auf callback-Funktionen und
Interrupts gesetzt, anstatt durch Polling unnötige Rechenzeit zu
verbrauchen.
Zu Beginn des Projekts war es angedacht, den
Lolin in einen Deep-Sleep Modus zu versetzen, wenn das Gerät nicht
im Gebrauch ist. Um die Energieeffiziez jedoch noch weiter zu
steigern, wurde stattdessen ein hardware-technischer Ausschalter
verbaut, der den Stromverbrauch auf Null setzt.
Die Auswirkungen dieser Maßnahmen wurden im
Fazit genauer ausgewertet.
|