Skip to content

Commit b1a934e

Browse files
authored
Merge pull request #12 from FHNW-IP5-IP6/feat/dht11
Feature: DHT11 Sensor Docs
2 parents 2a1bd2f + b036e3e commit b1a934e

File tree

3 files changed

+85
-21
lines changed

3 files changed

+85
-21
lines changed

content/german/basics/crowpi.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,28 +45,30 @@ angesprochen werden können. Es kommen hierbei unterschiedliche Protokolle und S
4545
entsprechenden Komponenten-Klassen dieses Tutorials abstrahiert und vereinfacht werden. Nachfolgend ist eine Übersicht aller vorhandenen
4646
Komponenten aufgeführt:
4747

48-
| Komponente | Einsatzzweck | Schnittstelle | Position von DIP Switches |
49-
|:-------------------------------------------------------------------------|:---------------------------------------------------|:--------------|:-------------------------------------|
50-
| [7-Segment Anzeige]({{< ref "components/seven-segment" >}}) | Anzeigen von bis zu 4 Ziffern | I²C | {{< dip-switches >}} |
51-
| [Button]({{< ref "components/button" >}}) | Abfragen von vier unabhängigen Knöpfen | GPIO | {{< dip-switches 5 6 7 8 >}} |
52-
| [Button Matrix]({{< ref "components/button-matrix" >}}) | Abfragen von Matrix aus 4 × 4 Knöpfen | GPIO | {{< dip-switches 1 2 3 4 5 6 7 8 >}} |
53-
| [Buzzer]({{< ref "components/buzzer" >}}) | Abspielen von verschiedenen Tönen | PWM | {{< dip-switches >}} |
54-
| [Infrarot Empfänger]({{< ref "components/ir-receiver" >}}) | Empfangen von Infrarot-Signalen | GPIO | {{< dip-switches >}} |
55-
| [LCD Display]({{< ref "components/lcd-display" >}}) | Anzeige von Text und Zahlen | I²C, GPIO | {{< dip-switches >}} |
56-
| [LED Matrix]({{< ref "components/led-matrix" >}}) | Darstellen von beliebigen Symbolen | SPI | {{< dip-switches >}} |
57-
| [Lichtsensor]({{< ref "components/light-sensor" >}}) | Erkennen von aktueller Lichtstärke | I²C | {{< dip-switches >}} |
58-
| [PIR Motion Sensor]({{< ref "components/pir-motion-sensor" >}}) | Erkennen von Bewegung mit passivem Infrarot | GPIO | {{< dip-switches >}} |
59-
| [Relais]({{< ref "components/relay" >}}) | Schaltung eines elektrischen Kontakts | GPIO | {{< dip-switches >}} |
60-
| [RFID]({{< ref "components/rfid" >}}) | Kontaktloses Lesen und Schreiben von Karten | SPI | {{< dip-switches >}} |
61-
| [Schrittmotor]({{< ref "components/step-motor" >}}) | Bewegen eines Schrittmotors | GPIO | {{< dip-switches 11 12 13 14>}} |
62-
| [Servomotor]({{< ref "components/servo-motor" >}}) | Bewegen eines Servomotors | PWM | {{< dip-switches 15 16 >}} |
63-
| [Sound Sensor]({{< ref "components/sound-sensor" >}}) | Erkennen von Lärm oder Stille | GPIO | {{< dip-switches >}} |
64-
| [Tilt Sensor]({{< ref "components/tilt-sensor" >}}) | Erkennt aktuelle Neigung (links/rechts) von CrowPi | GPIO | {{< dip-switches 10 >}} |
65-
| [Touch Sensor]({{< ref "components/touch-sensor" >}}) | Erkennen von Berührungen | GPIO | {{< dip-switches >}} |
66-
| [Ultraschall Distanz Sensor]({{< ref "components/ultrasonic-sensor" >}}) | Messung von Distanzen mit Ultraschall | GPIO | {{< dip-switches >}} |
67-
| [Vibrationsmotor]({{< ref "components/vibration-motor" >}}) | Erzeugen eines Vibrationsalarms | GPIO | {{< dip-switches 9 >}} |
48+
| Komponente | Einsatzzweck | Schnittstelle | Position von DIP Switches |
49+
|:-------------------------------------------------------------------------------------|:---------------------------------------------------|:--------------|:-------------------------------------|
50+
| [7-Segment Anzeige]({{< ref "components/seven-segment" >}}) | Anzeigen von bis zu 4 Ziffern | I²C | {{< dip-switches >}} |
51+
| [Button]({{< ref "components/button" >}}) | Abfragen von vier unabhängigen Knöpfen | GPIO | {{< dip-switches 5 6 7 8 >}} |
52+
| [Button Matrix]({{< ref "components/button-matrix" >}}) | Abfragen von Matrix aus 4 × 4 Knöpfen | GPIO | {{< dip-switches 1 2 3 4 5 6 7 8 >}} |
53+
| [Buzzer]({{< ref "components/buzzer" >}}) | Abspielen von verschiedenen Tönen | PWM | {{< dip-switches >}} |
54+
| [Infrarot Empfänger]({{< ref "components/ir-receiver" >}}) | Empfangen von Infrarot-Signalen | GPIO | {{< dip-switches >}} |
55+
| [LCD Display]({{< ref "components/lcd-display" >}}) | Anzeige von Text und Zahlen | I²C, GPIO | {{< dip-switches >}} |
56+
| [LED Matrix]({{< ref "components/led-matrix" >}}) | Darstellen von beliebigen Symbolen | SPI | {{< dip-switches >}} |
57+
| [Lichtsensor]({{< ref "components/light-sensor" >}}) | Erkennen von aktueller Lichtstärke | I²C | {{< dip-switches >}} |
58+
| [PIR Motion Sensor]({{< ref "components/pir-motion-sensor" >}}) | Erkennen von Bewegung mit passivem Infrarot | GPIO | {{< dip-switches >}} |
59+
| [Relais]({{< ref "components/relay" >}}) | Schaltung eines elektrischen Kontakts | GPIO | {{< dip-switches >}} |
60+
| [RFID]({{< ref "components/rfid" >}}) | Kontaktloses Lesen und Schreiben von Karten | SPI | {{< dip-switches >}} |
61+
| [Schrittmotor]({{< ref "components/step-motor" >}}) | Bewegen eines Schrittmotors | GPIO | {{< dip-switches 11 12 13 14>}} |
62+
| [Servomotor]({{< ref "components/servo-motor" >}}) | Bewegen eines Servomotors | PWM | {{< dip-switches 15 16 >}} |
63+
| [Sound Sensor]({{< ref "components/sound-sensor" >}}) | Erkennen von Lärm oder Stille | GPIO | {{< dip-switches >}} |
64+
| [Temperatur- und Luftfeuchtigkeitssensor]({{< ref "components/humi-temp-sensor" >}}) | Messen von Temperatur und Luftfeuchtigkeit | GPIO | {{< dip-switches >}} |
65+
| [Tilt Sensor]({{< ref "components/tilt-sensor" >}}) | Erkennt aktuelle Neigung (links/rechts) von CrowPi | GPIO | {{< dip-switches 10 >}} |
66+
| [Touch Sensor]({{< ref "components/touch-sensor" >}}) | Erkennen von Berührungen | GPIO | {{< dip-switches >}} |
67+
| [Ultraschall Distanz Sensor]({{< ref "components/ultrasonic-sensor" >}}) | Messung von Distanzen mit Ultraschall | GPIO | {{< dip-switches >}} |
68+
| [Vibrationsmotor]({{< ref "components/vibration-motor" >}}) | Erzeugen eines Vibrationsalarms | GPIO | {{< dip-switches 9 >}} |
6869

6970
## Weitere Ressourcen
7071

7172
- [Offizielle Anleitung von Hersteller (Englisch)](https://www.elecrow.com/download/product/SES14002K/CrowPi_User_Manual.pdf)
7273
- [Ursprüngliche Kickstarter-Kampagne für CrowPi (Englisch)](https://www.kickstarter.com/projects/elecrow/crowpi-lead-you-go-from-zero-to-hero-with-raspberr)
74+
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
title: Temperatur- / Luftfeuchtigkeitssensor
3+
tags: ["gpio"]
4+
---
5+
6+
## Funktionsweise
7+
8+
Der im CrowPi benutzte DHT11 Temperatur- und Luftfeuchtigkeitssensor arbeitet für die Messung der Temperatur mit einem NTC-Temperatursensor.
9+
Dies ist ein temperaturabhängiger elektrischer Widerstand. Je nach Umgebungstemperatur leitet dieser den Strom besser oder schlechter. Diese
10+
Differenzen lassen sich messen und anhand von Referenzwerten kann die Temperatur ausgewertet werden. Das ist ein sehr einfaches Prinzip,
11+
welches häufig zum Einsatz kommt bei der Messung von Temperaturen. Für die Feuchtigkeit liegt zwischen zwei Elektroden ein spezielles
12+
Granulat. Je mehr Feuchte in diesem Granulat festgehalten wird, desto einfacher kann der Strom fliessen. Es ändert sich also auch hier der
13+
elektrische Widerstand. Die Übertragung der Messdaten erfolgt dann etwas speziell über einen einzelnen digitalen Ausgang am Sensor. Dieser
14+
wird in kurzen Pulsen im Mikrosekundenbereich angesteuert.
15+
16+
Java mit Pi4J ist leider nicht in der Lage diese Pulse genügend schnell zu verarbeiten. Die Verzögerungen durch die vielen Schichten einer
17+
Applikation bis zur Hardware benötigen einfach zu viel Zeit. Deshalb wurde in diesem Beispiel ein Linux Treiber verwendet, welcher die
18+
Messwerte des Sensors in eine Datei schreibt. Diese wird von Java ausgelesen und so kann dennoch mit dem Sensor gearbeitet werden. Das ist
19+
keine optimale Lösung aber es ermöglicht immerhin die Arbeit mit dem Sensor innerhalb des CrowPi. Besser wäre eine separate Ansteuerung
20+
mittels eines Mikrocontrollers. Diese können aufgrund der Einfachheit ihres Aufbaus viel schneller auf die eingehenden Impulse reagieren
21+
und sind so in der Lage zuverlässigere Resultate als der Raspberry Pi zu liefern.
22+
23+
## Voraussetzungen
24+
25+
### DIP Switches
26+
27+
Für diese Komponente werden keine spezifischen DIP-Switches benötigt, so dass diese in der Standardkonfiguration belassen werden können:
28+
29+
{{< dip-switches >}}
30+
31+
## Verwendung
32+
33+
Nachfolgend wird die Verwendung der Klasse {{< javadoc class="com.pi4j.crowpi.components.HumiTempComponent" >}} beschrieben.
34+
35+
### Konstruktoren
36+
37+
| Konstruktor | Bemerkung |
38+
|:--------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
39+
| `HumiTempComponent()` | Initialisiert einen Temperatur- und Luftfeuchtigkeitssensor mit den Standardeinstellungen für den CrowPi. |
40+
| `HumiTempComponent(int pollingDelayMs)` | Initialisiert einen Temperatur- und Luftfeuchtigkeitssensor mit den Standard Dateipfaden für den CrowPi. Die Polling-Zeit in welcher neue Sensordaten gelesen werden wird jedoch manuell überschrieben. |
41+
| `HumiTempComponent(String humiPath, String tempPath, int pollingDelayMs)` | Initialisiert einen Temperatur- und Luftfeuchtigkeitssensor mit benutzerdefinierten Pfaden zu den Messwert Dateien. Die Polling-Zeit wird ebenfalls manuell überschrieben. |
42+
43+
### Methoden
44+
45+
| Methode | Bemerkung |
46+
|:--------------------------|:--------------------------------------------------------|
47+
| `double getTemperature()` | Gibt den letzten Temperaturmesswert in °C zurück. |
48+
| `double getHumidity()` | Gibt den letzten Luftfeuchtigkeitsmesswert in % zurück. |
49+
50+
51+
## Beispielapplikation
52+
53+
Die sehr simple Beispielapplikation misst mithilfe eines `for-loops` einige Male die Temperatur und Luftfeuchtigkeit und gibt diese auf der
54+
Konsole aus. Verwendet werden dazu die Methoden `getHumidity()` und `getTemperature()` welche jeweils den aktuellen Messwert als `double`
55+
retournieren. Dieser Messwert könnte nun in weiteren Schritte wie gewünscht verarbeitet werden.
56+
57+
{{< code file="src/main/java/com/pi4j/crowpi/applications/HumiTempApp.java" language="java">}}
58+
59+
## Weitere Möglichkeiten
60+
61+
- Anzeige der Messwerte auf einem Display
62+
- Schaltung des Relais abhängig von gemessenen Temperaturen.

0 commit comments

Comments
 (0)