Smart Home

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abb. 1: Smart Home

Autoren: Busskamp, Lars und Jopp, Danny
Betreuer: Prof. Göbel


→ 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

Abb. 1: Systementwurf











Abb. 2: Programmablaufplan




























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

Abb. 3: Steckplatine



















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

Abb. 4: Projektplan



















Projektdurchführung

YouTube Video

Smart Home

Weblinks

Funduino

Arduino

Literatur


→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)