Smart Home
Autoren: Busskamp, Lars und Jopp, Danny
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
Einleitung
Smart Home soll ein System eines reaktiven Zuhauses darstellen. Dabei werden, abhängig von Temperatur oder Lichteinstrahlung, Aktionen wie "Heizung an/aus", "Lüfter an/aus" oder "Licht an/aus" realisiert. Das System soll durch Sensoren die äußeren Rahmenbedingungen erfassen und dementsprechend agieren. Visualisiert werden die Aktionen durch eine Ausgabe auf einem Display.
Anforderungen
Das Smart Home benötigt verschiedene Sensoren, um äußere Einflüsse wahrzunehmen:
- Lichtsensor: mit dem Lichtsensor soll die Helligkeit gemessen werden, um ein Licht aufleuchten zu lassen oder dieses auszuschalten.
- Temperatursensor: der Temperatursensor soll die Temperatur messen, um eine Heizung an- oder auszuschalten.
- Luftfeuchtigkeitssensor: der Luftfeuchtigkeitssensor soll die Luftfeuchtigkeit messen, um ein Lüfter an- oder auszuschalten.
Das Display gibt die SOLL-IST werte aus.
Die Parameter sollen mit einem Drehtaster definiert werden können (SOLL-Wert).
Um eine Aktion des Systems zu veranschaulichen, sollen die oben genannten Aktionen durch verschiedene LED's und einen Lüfter veranschaulicht werden.
Funktionaler Systementwurf/Technischer Systementwurf
Komponentenspezifikation
Anzahl | Name | Link | Anmerkung | Vorhanden |
---|---|---|---|---|
1 | HSHL-Starterbaukasten von Funduino | Link | nur einzelne Teile des Kastens verwendet | Ja |
1 | DEBO DHT 11 Feuchtigkeits / Temperatursensor | Link | Ja | |
1 | Potentiometer | im Starter-Set enthalten | Ja | |
1 | LED (1xRot , 1xWeiß) | im Starter-Set enthalten | Ja | |
1 | Peltier-Element | Link | Ja | |
1 | Fotowiderstand | im Starter-Set enthalten | Ja | |
1 | Mosfet | im Starter-Set enthalten | Ja | |
1 | Display I2C | im Starter-Set enthalten | Ja | |
1 | Taster | im Starter-Set enthalten | Ja | |
6 | verschiedene Widerstände | im Starter-Set enthalten | Ja | |
1 | 9V Blockbatterie | Einzelhandel | Ja |
Umsetzung (HW/SW)
Im Folgenden Abschnitt wird die Umsetzung des Projektes beschrieben. Dafür wird die Hardware und die Software betrachtet.
Hardware
Die genutzte Hardware ist inklusive Stückliste in der Komponentenspezifikation einzusehen. Die einzelnen Bauteile sind mit Kabeln auf einem Breadboard miteinander verbunden und Teilweise verlötet.
Skizze der Verkabelung
Anleitung zum Anschließen der einzelnen Komponenten
Die Bauteile sind wie folgt an den Arduino Uno angeschlossen.
AnalogPin:
- A0 = Potentiomater
- A1 = Fotowiderstand
DigitalPin:
- D3 = Mosfet
- D5 = DHT11
- D8 = LED Rot
- D9 = LED Weiß
- D12 = Taster
Software
"Smart Home" wurde mit Hilfe der Software Arduino IDE realisiert.
Eine Anleitung wie man Bibliotheken in der Arduino IDE einbindet findet man hier Link.
Der Quellcode befindet sich im SVN (Link einfügen) Zusätzlich wird der Quellcode hier erläutert.
Header
/* Datei: Smart_Home.ino Autor: Lars Bußkamp, Lars.busskamp@stud.hshl.de 1150441 Danny Jopp, Danny.Jopp@stud.hshl.de 2209914 Erstellung: 06.01.2021 Letzte Änderung:11.02.2021 Implementation: Arduino Funktion: "Smart-Home" soll durch verschiedene Sensoren verschiedene Dinge in einem "Haus" anschalten. Es wird eine LED abhängig von der Helligkeit angesteuert und eine Heizung abhängig von der Temperatur. Außerdem wird die Luftfeuchtigkeit gemessen. Hardware: Mikrocontroller:Arduino UNO Sensoren: DHT11, Fotowiderstand 1K Ohm sonstige Bauteile: Peltier-Element, LEDs, Mosfet, Widerstände, Kabel */
Bibliotheken
Einbinden der Bibliotheken
#include <OneButton.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <DHT.h>
Pins
Festlegen von Anschlusspins und Sensortyp
#define DHTPIN 2 //Anschlusspin des Sensors #define DHTTYPE DHT11 // Typ des Sensor DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dht“ angesprochen const int tasterPin = 12; //Anschlusspin des Tasters
Variablen
Definieren der Variablen
int tasterZahl = 0; int zaehler = 0; int limit = 3; float sollTemp = 0; int istLicht = 0; int led = 9; int rot = 8; int peltier = 3;
int eingang= A1; //„eingang“ steht jetzt für den Analogpin 0 //int LED = 10; //Das Wort „LED“ steht jetzt für den Wert 10 int sensorWert = 0;
Display
Display initialisieren
LiquidCrystal_I2C lcd(0x27, 16, 2);
Setup
Setups des Programms, indem der DHT11 Sensor gestartet wird, die verschiedenen Input und Output Pins festgelegt werden und das Display sowie die Hintergrundbeleuchtung werden gestartet.
void setup() { Serial.begin(9600); dht.begin(); //DHT11 Sensor starten
//definieren der Pins als Ausgang oder Eingang pinMode(tasterPin, INPUT); pinMode(peltier, OUTPUT); pinMode(led, OUTPUT); pinMode(rot, OUTPUT);
// Display starten lcd.begin();
// Display Hintergrundbeleuchtung starten lcd.backlight(); }
Helligkeitsmessung
Der Helligkeitssensor wird ausgelesen und mit einem festgelegten Wert verglichen, sodass eine LED an/aus geschaltet wird.
sensorWert = analogRead(eingang); //Die Spannung an dem Fotowiderstand auslesen und unter der Variable „sensorWert“ abspeichern.
if (sensorWert < 500 ) //Wenn der Sensorwert über 512 beträgt(es also "dunkel" ist) { digitalWrite(led, HIGH); //soll die LED leuchten }
else //andernfalls { digitalWrite(led, LOW); //soll sie nicht leuchten }
Auslesen des DHT11 Sensors
Die Werte für die Luftfeuchtigkeit und die Temperatur werden ausgelesen und in Variablen gespeichert.
float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeuchtigkeit“ speichern float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
Schleife zum Steuern des Peltier-Elements
Schleife, welche das Peltier-Element anschaltet, wenn die Soll-Temperatur höher als die Ist-Temperatur ist
if(map(analogRead(0), 0, 1023, 18, 30) > Temperatur) { digitalWrite(rot, HIGH); //rote LED anschalten(als Zeichen für eine angeschaltete Heizung) digitalWrite(peltier, HIGH); // Peltier-Element als Heizung anschalten }else {digitalWrite(rot, LOW); //rote LED abschalten digitalWrite(peltier, LOW); //Peltier-Element als Heizung abschalten }
Zähler
Schleife, die einen Zähler hochzählen lässt, wenn der Taster gedrückt wird.
if(digitalRead(tasterPin)==HIGH) //Wenn der Taster gedrückt wird, { zaehler=zaehler + 1; //Variable "zaehler" erhöhen } else { if (zaehler>limit) //Wenn Limit erreicht, { zaehler=0; // Variable "zaehler" wieder auf 0 setzen } } tasterZahl = digitalRead(tasterPin);
Ausgabe über das Display
Je nach Wert des Zählers wird auf dem Display etwas anderes ausgegeben.
if (zaehler == 0) //Ausgabe über das Display, bei "zaehler = 0" { //Soll- und Ist-Temperatur werden auf dem Display angezeigt lcd.clear(); //Soll-Temperatur kann mit einem Poti verändert werden lcd.setCursor(0,0); lcd.print("Ist Temp"); lcd.setCursor(10, 0); lcd.print(Temperatur); lcd.setCursor(15, 0); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Soll Temp"); lcd.setCursor(10, 1); sollTemp = map(analogRead(0), 0, 1023, 18, 30); lcd.print(sollTemp); lcd.setCursor(15, 1); lcd.print("C"); }
if (zaehler == 1) //Ausgabe über das Display, bei "zaehler = 1" { //Luftfeuchtigkeit wird angezeigt lcd.clear(); lcd.setCursor(0,0); lcd.print("Ist Luft"); lcd.setCursor(10, 0); lcd.print(Luftfeuchtigkeit); lcd.setCursor(15, 0); lcd.print("%"); lcd.setCursor(0, 1); lcd.print("Soll Luft"); lcd.setCursor(10, 1); lcd.print("50.00%"); }
if (zaehler == 2) //Ausgabe über das Display, bei "zaehler = 2" { //Helligkeit wird angezeigt lcd.clear(); lcd.setCursor(0,0); lcd.print("Ist Licht"); lcd.setCursor(11, 0); istLicht = analogRead(A1); lcd.print(istLicht); lcd.setCursor(14, 0); lcd.print("L"); lcd.setCursor(0, 1); lcd.print("Soll Licht"); lcd.setCursor(11, 1); lcd.print("500L"); }
Plotten der Temperatur
Plotten der Soll- und Ist-Temperatur
Serial.println(sollTemp); Serial.println(Temperatur);
Komponententest
Nr. | Komponente | Erwartete Funktion | Ergebnis |
---|---|---|---|
1 | LEDs | Die LEDs sollen leuchten. | Die LEDs leuchten. |
2 | Peltier-Element | Das Peltier-Element soll warm werden und als Heizung dienen. | Beim anschließen des Peltier-Element wird dieses warm. |
3 | LCD-Display | Das Display soll verschiedene Werte anzeigen können. | Das Display kann beliebige Texte oder Werte der Sensoren anzeigen. |
4 | DHT11 Sensor | Der Sensor soll die Temperatur und die Luftfeuchtigkeit messen. | Der Sensor reagiert auf Körperwärme oder den "feuchten" Atem. |
5 | Helligkeitssensor | Der Helligkeitssensor soll den Lichteinfall messen. | Der Sensor reagiert auf Licht bzw. das Abdunkeln durch die Hand. |
6 | Taster | Der Taster soll ein "durchschalten" des Displays ermöglichen. | Der Tasterdruck wird erkannt und kann mitgezählt werden. |
7 | Lüfter | Der Lüfter soll sich drehen. | Der Lüfter kann angesteuert werden. Allerdings beeinflusst dieser die gemessene Luftfeuchtigkeit nicht. |
Ergebnis
Das Projekt "Smart-Home" funktioniert teilweise wie geplant. Die Soll-Temperatur ist mit einem Potentiometer einstellbar, wodurch das Peltier-Element als Heizung eingeschaltet wird. Ebenso wird eine Lampe (LED) eingeschaltet, wenn der Lichtsensor eine zu geringe Helligkeit misst. Außerdem wird die Luftfeuchtigkeit gemessen. Allerdings ist das vorher geplante beeinflussen der Luftfeuchtigkeit durch einen Lüfter nicht umgesetzt worden, weil die Luftfeuchtigkeit nicht durch den Lüfter beeinflusst wurde. Das heißt, der Lüfter würde Dauerhaft laufen, wenn die Soll-Luftfeuchtigkeit nicht mit der Ist-Luftfeuchtigkeit übereinstimmt, weil diese sich trotz laufendem Lüfter nicht ändert.
Zusammenfassung
Das Projekt ist eine "mini" Abbildung eines smarten Zuhauses. Um dieses tatsächlich nutzbar zu machen, müsste man das Projekt in einem größeren Maßstab aufbauen. Statt einer LED könnte man Lampen mit smarten Glühbirnen ausstatten und diese so steuern. Genauso könnte ein Thermostat eingestellt werden, damit die Heizkörper in einem Haus die gewünschte Temperatur erreichen. Als Ersatz für einen kleinen Lüfter müsste eine größere Lüftungsanlage verbaut werden, mit der die Luftfeuchtigkeit geregelt werden kann.
Lessons Learned
Der Umgang mit verschiedenen Sensoren wurde gelernt. Gleichermaßen wurde die Nutzung von Sensordaten für das Ansteuern von Aktoren gelernt.
Zusätzlich wurde der Prozess einer Produktentwicklung von der Planung bis zur Umsetzung kennengelernt. Wichtig dabei ist, dass nicht jede geplante Funktion am Ende umsetzbar ist. Ein Projekt verändert sich im Laufe der Entwicklung weiter und reagiert auf mögliche Fehler und schwachstellen.
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)