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


von Stefan309 (Gast)


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)


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)


Lesenswert?


von 50c (Gast)


Lesenswert?

50c schrieb:
> (und auch kein I2C)

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

warum?

von Stefan309 (Gast)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?

Also die Checksum abfragen in Ordnung ich schau mir das mal an Danke!

von Stefan309 (Gast)


Lesenswert?

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

von Mikro 7. (mikro77)


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)


Lesenswert?

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

:-), sage ich doch --> RTFM

von formel (Gast)


Lesenswert?

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

von Lothar (Gast)


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)


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)


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)


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)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.