Projekt 46: FridgeAlert mit Arduino
Autoren: Cosima Eckert-Ludwig & Oleg Patrusev
Betreuer: Prof. Schneider & Prof. Göbel
Aufgabe
Erstellung eines Kühlschrankalarmes auf der Arduino UNO Plattform zur Überprüfung, ob die Kühlschranktür geschlossen wurde.
Erwartungen an die Projektlösung
Teil 1
- Untersuchen Sie einen Fridge Alert SO 208
- Erstellen Sie das System als prototypischen Eigenbau auf einem Proto-Shield für einen Arduino Uno
- Beschaffen Sie die Bauteile
- Realisierung und Erprobung des Aufbaus
- Machen Sie ein spektakuläres Video, welches die Funktion visualisiert.
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Teil 2
Als weiterführende und auf Eigeninitiative basierende Aufgabe ist entschieden worden einen Prototypen herzustellen, der unabhängig von der Arduino Plattform funktioniert.
Schwierigkeitsgrad
Teil 1: mittel (**), Erweiterung Teil 2: anspruchsvoll (***)
Einleitung
Das Ziel des Projektes ist die Erstellung eines Kühlschrankalarms. Die Umsetzung sollte mittels einer Arduino UNO Plattform (Rev. 3) erfolgen. Zur Prototypenherstellung wurde ein Proto-Shield verwendet. Als Vorgabe durch die Betreuer sollte ein funktionsfähiges Modell hergestellt werden, welches im Rahmen einer Abschlussveranstaltung vorzuführen ist. Das Projekt gliedert sich in mehrere Meilensteine, welche dem Projektstrukturplan zu entnehmen sind. Weitere Bestandteile des Projektes sind eine angemessene technische Dokumentation, ein spektakuläres Funktionsvideo und dieser WIKI-Eintrag.
Analyse der Ist-Situation
Der zu untersuchende Fridge Alert SO208 konnte nicht gefunden und analysiert werden. Nach Rücksprache mit den Betreuern ist entschieden worden auf andere Lösungsmöglichkeiten auszuweichen, die realisierbar sind. Bezogen auf die nachfolgende Fall Analyse wurden zwei Sensoren ausgewählt: ein Fotowiderstand und ein Temperatursensor
Fall-Analyse
Fall 1: Die Kühlschranktür wird geöffnet - Lichtquelle des Kühlschranks funktioniert/Lichteinstrahlung (ja) - Temperatur des Kühlschranks sinkt - Alarm HIGH - Kühlschranktür wird zugemacht (ja) - Status OK
Fall 2: Die Kühlschranktür wird geöffnet - Lichtquelle des Kühlschranks funktioniert nicht/Lichteinstrahlung (nein) - Temperatur des Kühlschranks sinkt - Alarm (HIGH) - Kühlschranktür wird zugemacht (ja) - Status OK
Fall 3: Die Kühlschranktür wird geöffnet - Lichtquelle des Kühlschranks funktioniert (nicht)/Lichteinstrahlung (ja/nein) - Temperatur des Kühlschranks sinkt - Alarm (HIGH) - Kühlschranktür wird schlecht zugemacht - Alarm (HIGH) - Kühlschranktür wird richtig zugemacht - Status OK
Der rechts stehende Ablaufplan visualisiert die Logik der drei vorliegenden Fälle.
Umsetzung
Die Umsetzung des Projektes kann in drei Schritte unterteilt werden:
Aufbau und Simulation mittels der Autodesk Circuits Software
In dieser Projektphase ist mit verschiedenen Sensoren und Quelltexten experimentiert worden und eine optimale realisierbare Lösung zu erstellen. Die unten abgebildeten Schaltungen zeigen die finale Version des Fridge Alerts. Es wurden zunächst Teillösungen erstellt, bestehend z.B. nur aus einem Sensor. Die Autodesk Software bietet zudem die Möglichkeit den Code virtuell zu simulieren. Abbildungen x,y zeigen den Aufba für Projektteil 1. Abbildungen x,y stellen den experimentellen Aufbau für Projektteil 2 dar.
-
Abbildung 3: Komponentenskizze
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
So konnte folgende Stückliste für Projektteil 1 ermittelt werden, die folgende Bauteile erhält:
Bauteil | Typ | Kennwert/Datenblatt |
---|---|---|
Fotowiderstand | Excelitas A9013 Gehäuseart 5mm | Datenblatt |
Temeperatursensor | LM335 | Datenblatt |
Summer | Alcron | Datenblatt |
Arduino Proto Shield | Sparkfun Rev3 | Baukasten |
Cermet-Trimmer | liegend, 10mm, | 100 K-Ohm |
Widerstand | Metallschicht | 1 K-Ohm |
LED | blau | Datenblatt |
LED | grün | Datenblatt |
Für Projektteil 2 wurden folgende Bauelemente zusätzlich benötigt:
Bauteil | Typ | Kennwert/Datenblatt |
---|---|---|
Mikrocontroller | Attiny 85 | Datenblatt |
Kondensator | Subminiatur-Elko | 10µF/16V |
Batteriehalter | 3xAA | n.v. |
Experimenteller Aufbau auf dem Breedboard
In dieser Projektphase wurden die simulierten Schaltungen auf einem Breedboard in die Realität umgesetzt. Abbildungen x,y zeigen den Arduino Fridge Alert und Abilldungen x,y zeigen den Fridge Alert mit dem Microkontroller Attiny85. Die Programmierung und das Compilen wurden mit der Arduino Software IDE, welche im Kapitel Quellcode genauer betrachtet wird. Die Videos im folgenden Link zeigen die Funktionsüberprüfung der Schaltungen.
Realisierung des Projektteils 1
Die Verschaltung erfolgte mit Kupferkabeln. Din Pinbelegung ist den Schaltplänen zu entnehmen.
-
Abbildung 3: Komponentenskizze
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
Realisierung des Projektteils 2
Die Verschaltung erfolgte mit Kupferkabeln. Din Pinbelegung ist den Schaltplänen zu entnehmen. Beim Brennen des Bootloaders auf den Attiny85 musste zusätzlich ein 10µF Kondensator eingefügt werden, um die Reset-Funktion des Arduinos zu unterdrücken.
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan 'muss gemacht werden'
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
Fertigung/Lötung des Prototyps
Nach dem Test der Schaltungen musste der Prototyp hergestellt werden. Die nachfolgenden Bilder zeigen den bestellten Sparkfun Proto-Shield, der zunächst gelötet werden musste. Im weiteren Verlauf wurden die Komponenten des Arduino Fridge Alerts auf die Oberfläche gelötet. Dieser funktioniert als ein Steckaufsatz für den Arduino.
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
-
Abbildung 3: Schaltplan
Code
Die Programmierung und das Compilen des Arduino UNO sowie des Attiny85 erfolgte mittels der Arduino Software IDE. Der Quellcode ist in C++ geschrieben. Abbildung x zeigt den Programmablauplan für das Fridge Alert Programm. Die genaue Funktionsweise des Codes kann dem untenstehenden Quelltext entnommen werden. Zusätzlich sind Parameter erklärt, die die Funktionalität des Arduino Fridge Alerts beinflussen.
// Variablendeklarationen
int Summer = 6; //Summer/Piezo Keramik 3V
int TSensor = A0; //LM 335
int LDRWiderstand = A2; //Fotowiderstand Excelitas A 9013
int Lichtsignal = 8; //LED rot
int Messindikator =2; //LED blau
int variablerWiderstand; //100 kOhm
float Betriebsspannung = 4.92; //Festlegen der Betriebsspannung
float Temperatur;
float Spannungswert;
float SpannungswertAusgelesen;
float LDRWert;
void setup(){
// Deklaration der Ein- und Augänge auf dem Arduino
Serial.begin(9600);
pinMode(Messindikator, OUTPUT);
pinMode(Lichtsignal, OUTPUT);
pinMode(Summer, OUTPUT);
pinMode(LDRWiderstand, INPUT);
pinMode(TSensor, INPUT);
}
void loop(){
digitalWrite(Messindikator,LOW); //Einleitung Messung - optisches Signal durch die blaue LED
delay(750); // Regulierung Messfrequenz
digitalWrite(Messindikator, HIGH);
delay(500); // Regulierung Messfrequenz
digitalWrite(Messindikator, LOW);
LDRWert=analogRead(LDRWiderstand); //Auslesen des LDR Werts
// Auslösung des audiovisuellen Alamrs durch den LDR Widerstand
if (LDRWert==0)
{
digitalWrite(Lichtsignal, HIGH);
delay(3500); // Zeitverzögerung beim Öffnen der Kühlschranktür
digitalWrite(Summer, HIGH);
delay(250);
digitalWrite(Summer, LOW);
delay(500);
digitalWrite(Summer, HIGH);
delay(250);
digitalWrite(Summer, LOW);
delay(500);
digitalWrite(Summer, HIGH);
delay(250);
digitalWrite(Summer, LOW);
}
SpannungswertAusgelesen = analogRead(TSensor); // Auslesen des TS Sensors
Spannungswert = (SpannungswertAusgelesen*Betriebsspannung)/1024.0;
Temperatur = (Spannungswert/0.01)-273.15; //Berechnug der tatsächlichen Temeperatur
if (Temperatur>30)// FEstlegung des Temperaturauslösewertes
{
digitalWrite(Lichtsignal, HIGH);
delay(4000);
digitalWrite(Summer, HIGH);
delay(2000);
digitalWrite(Summer, LOW);
}
if (Temperatur<30 && LDRWert>0) //Ausschalten des Alarms
{
digitalWrite(Summer, LOW);
digitalWrite(Lichtsignal, LOW);
}
Serial.print("\nDer LDRWert betraegt "); //Ausgabe am serialMonitor
Serial.println(LDRWert);
Serial.print("Die Temperatur betraegt ");// Ausgabe am SerialMOnitor
Serial.println(Temperatur);
}
Mit dem Tastenkürzel Strg + Umschalt + M lässt sich in der Arduino Software IDE der Serielle Monitor öffnen, der die aktuellen Messwerte in einer bestimmbaren Frequenz ausgibt.
Fazit und Ausblick
Das im Rahmen der Veranstaltung durchgeführte Projekt erfüllt die gestellten Anforderungen. Die Schwierigkeit des Projektes würde sich erhöhen, wenn statt dem Raspberry Pi ein handelsübliches Smartphone verwendet werden soll. Dabei liegt die Herausforderung bei der Erweiterung des Projektes, indem statt einer einfachen Animation, der Projektor zur Signalisierung der Fahrtrichtung bzw. Navigation dienen würde.
Youtube-Video
Das für dieses Projekt entstandene Video kann unter der folgenden URL abgerufen werden. YouTube-Link
Weiterführende Links
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 15/16)