mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DHT11 Sensor automatisieren auf Raspberry Pi


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan309 (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Hallo liebes Forum,

ich habe bisher mit Python ein Script geschrieben, welches die 
Luftfeuchte und Temperatur durch den DHT11 Sensor ermittelt. Mein 
nächstes Ziel ist es den DHT11 Sensor Plug & Play fähig zu machen. Ich 
hab im Internet gelesen das der DHT11 Sensor eine 1-Wire Komponente ist. 
Falls ich mich nicht irre sollte der Sensor doch eine eindeutige ID 
besitzen. Ich weiß aber nicht wie man diese ermitteln kann. Bitte um 
Unterstützung. Denn wenn ich die ID habe denke ich, dass ich den 
Raspberry PI sagen kann, dass sobald dieser Sensor angeschlossen ist 
mein Skript automatisch starten soll.

Beste Grüße

Stefan

von 50c (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Stefan309 schrieb:
> Ich
> hab im Internet gelesen das der DHT11 Sensor eine 1-Wire Komponente ist.
...halte ich für ein Gerücht! Es ist keine 1wire-Schnittstelle (und auch 
kein I2C), lasse mich aber auch gern belehren, wenn du die entsprechende 
Textstelle im Manual präsentierst...

von Rainer U. (r-u)


Bewertung
-2 lesenswert
nicht lesenswert

von 50c (Gast)


Bewertung
0 lesenswert
nicht lesenswert
50c schrieb:
> (und auch kein I2C)

Rainer U. schrieb:
> Lies mal hier:
>
> https://www.mikrocontroller.net/articles/AVR_TWI

warum?

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo 50c,

link: 
https://www.laub-home.de/wiki/Sensorino_-_Auslesen_verschiedener_Sensoren_mit_Arduino 
ist der DHT11 aufgelistet. Dort steht unter Vorteile : 1-Wire Bus 
(Sensor ID, Reihenschaltung möglich). Hab ich etwas falsch verstanden? 
Um welche Schnittstelle handelt es sich denn dann? Ich lasse mich 
ebenfalls gerne von euch belehren! Ich bin noch ein Anfänger in dem 
Gebiet.

Beste Grüße

Stefan

von 50c (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Stefan309 schrieb:
> Dort steht unter Vorteile : 1-Wire Bus
> (Sensor ID, Reihenschaltung möglich). Hab ich etwas falsch verstanden?

...jupp, die Tabelle, die du hier zitierst gilt für den DS1820! Für den 
DHT11 steht da genau das Gegenteil. Oder sehe ich es falsch...?

von spess53 (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hi

>Dort steht unter Vorteile : 1-Wire Bus
>(Sensor ID, Reihenschaltung möglich). Hab ich etwas falsch verstanden?

Ja. Das was du gelesen hast, steht beim DS1820.

Abgesehen davon würde ich nur den Original Datenblättern trauen.

MfG Spess

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mein Fehler ihr habt Recht.. Handelt es sich denn jetzt um ein TWO Wire 
Interface Rainer Unsinn? Wisst ihr worum es sich handelt bei dem DHT11?

von 50c (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan309 schrieb:
> Handelt es sich denn jetzt um ein TWO Wire
> Interface


50c schrieb:
> (und auch kein I2C)

Was ist daran jetzt nicht zu verstehen?

spess53 schrieb:
> Abgesehen davon würde ich nur den Original Datenblättern trauen.

korrekt, da steht es genau drin!

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
immer freundlich bleiben ok :-) Ja ist ja gut da steht Communication 
Process: Serial Interface (Single-Wire Two-Way). So und was machen wir 
nu in Richtung automatisieren?

von 50c (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan309 schrieb:
> immer freundlich bleiben ok :-) Ja ist ja gut da steht Communication
> Process: Serial Interface (Single-Wire Two-Way). So und was machen wir
> nu in Richtung automatisieren?

gar nichts, denn, wie weiter im Datenblatt nicht (zu finden ist), würde 
man dazu eine eineindeutige ID benötigen...

Bin doch freundlich und versuche dich in die richtige Vorgehensweise zu 
"schubsen" --> RTFM

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Alles klar Meister. Hmm also ein anderer Gedanke.. Ist es möglich den 
Raspberry Pi beizubringen, dass sobald gewisse GPIO Pins belegt sind 
eine Aktion ausgeführt wird? Dazu müsste man ja nur die Belegung einmal 
abscannen und tadaaa Problem gelöst :-) ... Meinungen und Kritik??

von Lothar (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Mit direkter Programmierung der GPIO Register z.B. in BASIC kein 
Problem:

Risc OS pico BASIC

https://www.riscosopen.org/content/downloads/raspberry-pi

https://cdn-shop.adafruit.com/product-files/2885/BCM2835Datasheet.pdf

von 50c (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan309 schrieb:
> Ist es möglich den
> Raspberry Pi beizubringen, dass sobald gewisse GPIO Pins belegt sind
> eine Aktion ausgeführt wird? Dazu müsste man ja nur die Belegung einmal
> abscannen und tadaaa Problem gelöst :-) ... Meinungen und Kritik??

...und warum nicht einen Temperatur-/Luftfeuchtigkeits-Sensor verwenden, 
der busfähig ist?

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Weil ich hier den SunfounderKit mit Anzahl > 30 Sensoren hab und so wie 
es aussieht diese alle nicht Bus Fähig sind :-) Also eine Alternative 
wäre da sehr gut. Ja ich weiß ich hätte mich besser informieren sollen 
aber damals wollte ich das ja noch gar nicht um Plug & Play 
erweitern....

@Lothar ich glaub das bringt mich jetzt aus dem Konzept gibt es da 
Beispiele für??
Niemals geb ich auf!!

von Mikro 7. (mikro77)


Bewertung
0 lesenswert
nicht lesenswert
> Ist es möglich den
> Raspberry Pi beizubringen, dass sobald gewisse GPIO Pins belegt sind
> eine Aktion ausgeführt wird? Dazu müsste man ja nur die Belegung einmal
> abscannen und tadaaa Problem gelöst :-) ... Meinungen und Kritik??

Dein Sensor unterstützt eine Checksum. Du könntest also periodisch eine 
Liste von Pins abfragen (d.h. den im Datasheet spezifizierten 40-bit 
Dialog ausführen) und die Checksum prüfen.

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also die Checksum abfragen in Ordnung ich schau mir das mal an Danke!

von Stefan309 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also hat jemand vlt. ein Beispiel dafür wie man das mit der Checksum 
ermittelt? Danke

von Mikro 7. (mikro77)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du auf DHT11 klickst geht ein Fenster auf mit Link zum 
Datenblatt...

http://www.aosong.com/asp_bin/Products/en/DHT11.pdf

...in dem du auch Beispiele für die Checksum findest.

von 50c (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mikro 7. schrieb:
> ...in dem du auch Beispiele für die Checksum findest.

:-), sage ich doch --> RTFM

von formel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
bei den sunfounder sensoren sind cds mit beispielen dabei, dort ist auch 
die checksumme dabei...

von Lothar (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan309 schrieb:
> Also hat jemand vlt. ein Beispiel dafür wie man das mit der Checksum

Ist in C musst Du also in Python oder BASIC umschreiben. Wobei es sein 
kann dass es in Python nicht geht wegen der Latenz.

https://www.robot-r-us.com/vmchk/sensor-temp/humid/dht11-temperature-and-humidity-sensor.html

von 51c (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Lothar schrieb:
> Ist in C musst Du also in Python oder BASIC umschreiben. Wobei es sein
> kann dass es in Python nicht geht wegen der Latenz.

...wusste gar nicht, dass man keine C-Programme für einen Raspberry 
schreiben kann, wieder etwas dazugelernt ;-)

von Lothar (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
51c schrieb:
> ...wusste gar nicht, dass man keine C-Programme für einen Raspberry
> schreiben kann, wieder etwas dazugelernt ;-)

Der Frager hat es aber doch in Python angefangen, vermutlich auf Linux 
:-)

Wobei wohl das Linux für Latenz sorgen wird, egal ob in Python oder in C

von Mikro 7. (mikro77)


Bewertung
0 lesenswert
nicht lesenswert
Bit-Banging für das langsame und kurze DHT11-Protokoll sollte mit C 
(Userland) völlig unkritisch sein.

Bit-Banging auf dem Pi wird ab ca. 1us Signalen (pro Level) und mit 
zunehmender Länge der Signalfolge kritisch. Timerabfrage und 
Leveländerunge benötigen im Mittel ca. 100ns. Man benötigt aber mehrere 
(mindestens 2) Timerabfragen pro Edge und ein bisschen C-Code (der auch 
mal auf einen 160ns Cache Fault laufen kann).

Sollte es einmal zu Verzögerungen kommen, kann man bei vielen 
Protokollen den Dialog einfach wiederholen. Das gleich gilt, wenn das OS 
dazwischenfunkt. Die Grenze ist bspw. bei der WS2812b  Ansteuerung 
erreicht (ein paar LEDs geht gerade noch so, wobei da schon viele Retrys 
notwendig sind).

von Lothar (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Mikro 7. schrieb:
> Bit-Banging auf dem Pi wird ab ca. 1us Signalen

Unter Linux. Daher wurde ja schon auf ein RTOS BASIC verwiesen (pico: 
ziemlich verbreitet, ähnlich BASCOM, sehr einfach). Es gibt auch noch 
ein Bare Metal Pascal (Ultibo). Bare Metal in C ist hingegen schon ein 
ziemlicher Aufwand. Damit treten aber z.B. auch keine PWM Glitches auf.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.