Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ws2021:kabelsalat [2021/04/30 13:59] – [Relais Modul] j-h-f | ws2021:kabelsalat [2022/03/15 09:40] (aktuell) – [Teilnehmer] j-h-f | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Kabelsalat ====== | ||
| + | ==== Kurzbeschreibung ==== | ||
| + | |||
| + | Innerhalb des Projektes " | ||
| + | |||
| + | Github: https:// | ||
| + | |||
| + | Webseite: https:// | ||
| + | |||
| + | ==== Teilnehmer ==== | ||
| + | * Fabian Janosch Krüger | ||
| + | * Ben Niclas Thal | ||
| + | * Arthur Bilinsky | ||
| + | * Henry Schittkowski | ||
| + | * Jan-Hendrik Fabricius | ||
| + | |||
| + | ==== Darstellung bisheriger Arbeit ==== | ||
| + | == Arbeitsaufteilung == | ||
| + | **Hydroponik und Gewächshaus** | ||
| + | *Planung und Bau des hydroponischen Systems | ||
| + | *Planung und Bau des Gewächshauses | ||
| + | *Videodreh und -schnitt | ||
| + | *Erstellung eines Tutorials für den Bau | ||
| + | **Sensorik** | ||
| + | * Bewässerung (Pumpe) **Jan-Hendrik** | ||
| + | * Feuchtigkeitsmessung durch Sensoren **Inken** | ||
| + | * Belichtung durch LED Stripes | ||
| + | * Belüftung des Gewächshauses | ||
| + | * Luftstrom an den Pflanzen | ||
| + | * Electrical Conductivity des Wassers (optional: PH-Wert) | ||
| + | * optional: Wasserstand | ||
| + | * Temperaturmessung- Luft und Wasser **Inken** | ||
| + | **Wissenschaftskommunikation** | ||
| + | *Pflege dieses Wikis | ||
| + | *Erstellung und Pflege einer Website | ||
| + | |||
| + | == Bisherige Arbeit == | ||
| + | **Hydroponik und Gewächshaus** | ||
| + | | ||
| + | {{: | ||
| + | |||
| + | ====== Sensorik ====== | ||
| + | In diesem Abschnitt wird der technische Aufbau des Gewächshausen vor allem im Hinblick auf die verwendete Sensorik beschrieben. | ||
| + | |||
| + | ===== Verwendete Bauteile ===== | ||
| + | |||
| + | * Arduino Nano | ||
| + | * ESP01-S | ||
| + | * Relais-Modul | ||
| + | * Temperatursensor BME/BMP280 | ||
| + | * Reich Tauchpumpe | ||
| + | * LED-Streifen für Pflanzen | ||
| + | |||
| + | ===== Arduino Nano ===== | ||
| + | {{ : | ||
| + | “Arduino is an open-source hardware and software company, project and user community that | ||
| + | designs and manufactures single-board microcontrollers and microcontroller kits for building digital | ||
| + | devices.” [https:// | ||
| + | Der Arduino ist also ein Mikrocontroller, | ||
| + | als Hauptsteuereinheit diverser Projekte genutzt werden kann.\\ | ||
| + | Bei einem Mikrocontroller handelt es sich, vereinfacht gesagt, um einen winzigen Computer, | ||
| + | bestehend aus einem Prozessor, einem Arbeitsspeicher (RAM) und ggf. weitere Peripheriebauteile, | ||
| + | wie bspw. externer Speicher oder I/ | ||
| + | Der große Unterschied zwischen einem richtigen PC und einem Mikrocontroller liegt darin, dass | ||
| + | der Mikrocontroller auf einen bestimmen Anwendungsfall zugeschnitten und entwickelt ist. Dies | ||
| + | bringt den Vorteil, dass kleine Projekte, wie bspw. unser Hydroponisches Gewächshaus sehr günstig | ||
| + | “zum leben erweckt werden können”. Das liegt daran, dass die Mikrocontroller aufgrund ihrer | ||
| + | beschränkten Rechenleistung und Speicherkapazität sehr günstig sind, aber dennoch ausreichend | ||
| + | Funktionalität bieten, um ein etwas komplexeres Projekt zu realisieren. | ||
| + | {{ : | ||
| + | |||
| + | ===== ESP01-S ===== | ||
| + | {{ : | ||
| + | Der ESP01-S ist auch ein Mikrocontroller, | ||
| + | kann, um Steuerungsaufgaben zu übernehmen.\\ | ||
| + | Der Unterschied zwischen einem ESP01-S und einem Arduino liegt darin, dass der ESP01-S Mikrocontroller auf dem sogenannten ESP8266 Mikroprozessor basiert. Der Vorteil an dem ESP8266 Mikroprozessor ist, dass dieser einen | ||
| + | WLAN-Chip verbaut hat, mit dem der ESP01-S eine Verbindung zum Internet aufbauen kann. \\ | ||
| + | Der Nachteil am ESP01-S Mikrocontroller ist. Dass dieser nur 2 I/O Pins besitzt. Das bedeutet, dass man nur über 2 Signalleitungen (GPIO Pins) mit anderen Geräten kommunizieren kann. Somit eignet sich der ESP01-S meist nur für sehr kleine Projekte, wie z.B. ein Thermometer, | ||
| + | {{ : | ||
| + | ===== Relais Modul ===== | ||
| + | {{ : | ||
| + | Das Relais-Modul wird benötigt, damit der Arduino Höhere Spannungen und Höhere Ströme mit einem sehr kleinen Steuerungssignal steuern kann. | ||
| + | Wenn beispielsweise eine Handelsübliche LED-Glühlampe mit einer GU4-Fassung steuern möchte, fällt auf, dass die LED eine Spanung von 12 Volt braucht. Der Arduino hingegen hat aber nur eine Ausgangsspannung von 5V an den GPIO Pins und einen Ausgangsstrom von maximal 40mA (wobei max. 20mA empfohlen sind). Das reicht nicht aus, um die LED, oder Andere Geräte zu steuern, die entweder eine höhere Spannung oder eien größeren Strom brauchen zu betreiben. | ||
| + | In diesem Fall schafft unser Relais-Modul abhilfe. Dieses ist im Grunde eine mechanischer Schalter, der durch den Arduino gesteuert werden kann. | ||
| + | Der Arduino wird an die 3 (oder mehr) sogenannten " | ||
| + | Die Bezeichnungen der Anschlüsse lauten wie folgt: | ||
| + | * VCC -> ist die Versorgungsspannung und wird an den 5V Pin des Arduinos angeschlossen. | ||
| + | * GND -> ist der Ground bzw. Minus Anschluss und wird mit dem GND Anschluss des Arduinos verbunden | ||
| + | * IN1 bis INX -> sind die Signal Anschlüsse um die einzelnen Relais zu steuern. Wenn auf dem Modul 4 Relais verbaut sind, dann gibt es die Anschlüsse IN1, IN2, IN3, IN4. Wenn nur 1 Relais Verbaut ist, dann gibt es nur IN1 usw. | ||
| + | |||
| + | Jedes auf dem Relais-Modul verbaute, einzelne Relais verfügt zusätzlich über je 3 Anschlüsse, | ||
| + | * COM/CO/C -> ist der Hauptanschluss des Relais. An diesen sollte der Plus-Pol der Versorgungsspannung angeschlossen werden. | ||
| + | * NO -> ist der " | ||
| + | * NC -> ist der " | ||
| + | |||
| + | Möchte man nun eine Lampe mit einem Solchen Relais schalten, sieht der Aufbau wie folg aus: | ||
| + | {{: | ||
| + | ^ Relais-Pin | ||
| + | | VCC | 5V | | ||
| + | | GND | GND | | ||
| + | | IN1 | D3 | </ | ||
| + | Der Anschluss des Relais an den Arduino ist also relativ simpel und benötigt an sich nur 3 Kabel. beim Anschluss der Lampe an das Relais muss man jedoch ein wenig aufpassen. Erstens sollte man genauestens auf die maximalen Werte achten, die ein solches Relais schalten kann. Zweitens ist es nicht ratsam eine Lampe, die mit Netzspannung funktioniert (also direkt 220V aus der Steckdose) denn **bei unsachgemäßem Arbeiten mit Netzspannung besteht Lebensgefahr!**. | ||
| + | Es ist Ratsam sich ein Fertiges Netzteil zu besorgen, welches in die Steckdose gesteckt wird, und dann die Netzspannung in 12V Gleichspannung umwandelt. Nichtsdestotrotz ist hier immer noch Vorsicht geboten. Um die 12V aus dem Netzteil auf ein Breadboard zu bekommen bietet es sich an, eine passende Buchse für den Stecker des Netzteiles zu verwenden. | ||
| + | Nun kann der Plus-Anschluss der Buchse mit dem COM-Anschluss des Relais verbunden werden, der Minus-Anschluss wird mit dem Minus-Pul der Lampe verbunden. Um nun den Stromkreis zu vervollständigen muss der Plus-Pol der Lampe mit dem NO-Anschluss des relais verbunden werden. Somit ist der Aufbau der Hardware komplett und wenn nun ein Signal von Pin D3 zum Relais Modul gesedet wird, sollte die Lampe leuchten. Der Code um das zu realisieren ist denkbar einfach: | ||
| + | <code c> | ||
| + | int IN_PIN = 3; | ||
| + | void setup() { | ||
| + | pinMode(IN_PIN, | ||
| + | digitalWrite(IN_PIN, | ||
| + | Serial.begin(9600); | ||
| + | } | ||
| + | void loop() { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Der Codeblock sorgt jetzt dafür, dass das Relais alle 2,5 Sekunden (2500 Millisekunden) invertiert wird. Beudeutet, wenn das Relay an ist, dann wird es ausgeschaltet und anders herum. | ||
| + | In der ersten Zeile wird als erstes eine Variable definiert, die den Pin, an dem der In-Anschluss des Relais angeschlossen ist speichert, definiert. In dem Beispiel ist das Pin 3 des Arduinos. | ||
| + | In der Setup Funktion wird durch den Aufruf von | ||
| + | <code c> | ||
| + | der Pin " | ||
| + | In der Zeile darunter wird der Initiale Zustand des IN_PINs auf " | ||
| + | <code c> | ||
| + | aufgerufen wird. " | ||
| + | Anschließend wird in der Loop Funktion, die ja immer und immer wieder ausgeführt wird, der Input Pin alle 2,5 Sekunden auf " | ||
| + | |||
| + | ===== Temperatursensor BME/BMP280 ===== | ||
| + | {{ : | ||
| + | \\ | ||
| + | Der BME/BMP280 Tempratursensor ist ein Vollständiges Modul, das die Temperatur, die Luftfeuchtigkeit und den Lufdruck misst und die gemessenen Daten anschließend über eine [[https:// | ||
| + | Zusätzlich gibt es eine [[https:// | ||
| + | \\ | ||
| + | Für die Verbindung des BME/BMP280 Sensors mit dem Arduino werden 4 Kabel benötigt. Die Verbidnung sieht wie folgt aus: | ||
| + | {{: | ||
| + | ^ BME280 Pin ^ Arduino Pin ^ | ||
| + | | VCC | 5V | | ||
| + | | GND | GND | | ||
| + | | SCL | A5 | | ||
| + | | SDA | A4 |</ | ||
| + | Die Pins SCL und SDA sind die Anschlüsse des I²C Busses. Über diese Pins werden Datenpakete hin und her gesendet, wodurch der im Code des Arduinos die gemessenen Werte des Sensors angefragt werden können. | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | Um die Daten des BME/BMP280 einfach auszulesen gibt es die [[https:// | ||
| + | <code c> | ||
| + | /* | ||
| + | * Complete Project Details https:// | ||
| + | */ | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #define SEALEVELPRESSURE_HPA (1013.25) | ||
| + | |||
| + | Adafruit_BME280 bme; // I2C | ||
| + | |||
| + | unsigned long delayTime; | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | Serial.println(F(" | ||
| + | |||
| + | bool status; | ||
| + | | ||
| + | // default settings | ||
| + | // (you can also pass in a Wire library object like &Wire2) | ||
| + | status = bme.begin(); | ||
| + | if (!status) { | ||
| + | Serial.println(" | ||
| + | while (1); | ||
| + | } | ||
| + | | ||
| + | Serial.println(" | ||
| + | delayTime = 1000; | ||
| + | |||
| + | Serial.println(); | ||
| + | } | ||
| + | |||
| + | |||
| + | void loop() { | ||
| + | printValues(); | ||
| + | delay(delayTime); | ||
| + | } | ||
| + | |||
| + | |||
| + | void printValues() { | ||
| + | Serial.print(" | ||
| + | Serial.print(bme.readTemperature()); | ||
| + | Serial.println(" | ||
| + | | ||
| + | Serial.print(" | ||
| + | Serial.print(bme.readPressure() / 100.0F); | ||
| + | Serial.println(" | ||
| + | | ||
| + | Serial.print(" | ||
| + | Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); | ||
| + | Serial.println(" | ||
| + | | ||
| + | Serial.print(" | ||
| + | Serial.print(bme.readHumidity()); | ||
| + | Serial.println(" | ||
| + | | ||
| + | Serial.println(); | ||
| + | } | ||
| + | </ | ||
| + | Der Kern dieses Codeblocks liegt in den Zeilen | ||
| + | < | ||
| + | Adafruit_BME280 bme; // I2C | ||
| + | status = bme.begin(); | ||
| + | </ | ||
| + | mit der ersten Zeile wird eine Variable " | ||
| + | In der zweiten Zeile wird dann dann die Funktion " | ||
| + | Letztendlich sehr wichtig sind die Funktionen | ||
| + | < | ||
| + | bme.readHumidity() | ||
| + | bme.readTemperature() | ||
| + | </ | ||
| + | Diese Funktionen machen im Hintergrund alles nötige, um die Daten, die der BME/BMP280 Sensor misst, als einfache Zahl in den Arduino zu bekommen. In dem konkreten Fall sind das die Werte der Luftfeuchtigkeit in Prozent und die Temperatur in °C. | ||
| + | ==== Tauchpumpe ==== | ||
| + | |||
| + | {{: | ||
| + | ==== LED-Streifen für Pflanzen ==== | ||
| + | ==== Quellen ==== | ||
| + | | ||