DHT22 hängt immer nach Arduino Firmware Reset

Der gute Rob Tillaart versorgt die Arduino-Gemeinde unermüdlich mit Bibliotheken für die DHTs, @clemens und andere beforschen und planen hier downstream schon seit längerem den richtigen Weg.

Er schreibt bei DHT22 with ESP8266 seeing eventual timeout errors – #102:

Unabhängig davon will ich hier nochmals die Bibliotheken aus der Feder von Rob Tillaart (hoffentlich!) chronologisch sinnvoll auflisten und die Unterschiede auf Basis der README-Inhalte beschreiben.

Canonical Arduino libraries for the DHT

Worth a look

DHTlib 0.1.13

DHTlib 0.2.3

DHTNEW 0.1.5

Seitenblicke

However, also might be worth a look.

DHT12 library

Arduino/libraries/DHT12 at master · RobTillaart/Arduino · GitHub

DHT2PIN library

This library is an experimental version of the DHT library that uses 2 pins instead of 1. One pin for all read actions and one pin for write actions.

Arduino/libraries/DHT2pin at master · RobTillaart/Arduino · GitHub

Halleluja.


I wanted to emphasize this in the spirit of Use realtime systems for reading digital sensors and Protect code when accessing shared resources.

meinst du “Heureka” und empfiehlst mir diese bibliothek auszuprobieren?

bei mir laufen die mit 5V.

(ich leide so darunter, dass ich das fritzing meiner schaltung noch nicht hingekriegt habe. zwei anläufe sind daran gescheitert, dass ich die ganzen verwendeten bauteile nicht als fritzing-bilder gefunden habe. aber eine fritzing-tutorial wäre wohl ein eigenes thema wert…)


Bayerische Lösung: Humor.


Das tut mir echt leid – nervt ja auch voll. Demgegenüber ist der Humor natürlich nicht spöttisch gemeint, nur mal so zwischendrin zur Auflockerung.

Die sieht mir nach “result of many years of intensive research” aus. Ich würde sie definitiv ausprobieren, solange man noch nicht von den DHTs wegkommt.

und was soll ich mit dem Halleluja anfangen?

Soll es witzig sein? “zur Auflockerung” dann versteh ich Deinen Humor nicht.

Ja: Endlich hat sich auch bei dieser Bibliothek der Autor der bisher im Arduino-Umfeld oft vergessenen Interruptbehandlung gewidmet à la “da war ja noch was”. Dafür gibt es zu jeder Zeit ein großes Hosianna-artiges Halleluja.

Bevor das bibliotheksseitig nicht ordentlich gelöst ist, braucht man sich über sporadisch auftretende Glitches aufgrund von Timing-Problemen nicht wundern, gerade wenn man nicht mehr selbst exklusiv auf dem Eisen läuft – also die Firmware [1]. Siehe auch Use realtime systems for reading digital sensors und Protect code when accessing shared resources.


  1. Das wiederum ist seit der Ankunft der immer populärer werdenden günstigen 32-Bit MCUs immanent, wo meist noch ein (Echtzeit-)OS drauf läuft und darauf erst die gewohnte Arduino-Umgebung. Sobald also irgendwo ein ESP32 (Dual Core!) aber auch schon ein ESP8266 unter der Haube ist oder man auch klassisch auf dem AVR schon Dinge wie LMIC an Bord holt, ist das Laufzeitverhalten ein grundlegend anderes als von früher gewohnt.

    Das fällt aktuell oft erst dann auf, sobald man ausgewachsenere Dinge auf andere Hardware portiert, während es bei einfachen Beispielsketches oft gerade noch so funktioniert. Ich bin heilfroh, dass das nun immer öfters schon upstream von den Hauptautoren erledigt wird, weil sonst die Gefahr hoch ist, dass das Ökosystem fragmentiert, wenn die notwendigen Patches wild zwischen Brennesseln wachsen und nicht wieder zurückgeführt werden. Bei Spring cleaning with multiarch support for the HX711 hatten wir richtig viel Freude – diesmal ironisch ;]. ↩︎

1 Like

Das mit dem Relais war mein Ernst. Fotobeweis:

Ist aber schon auch ein bisschen lustig. Geb ich zu.

Im Lösungsbeitrag diskutiere ich die Automatisierung der Relais-Steuerung.

1 Like

Makes my day. Turtles all the way…

Du hast jetzt aber nicht deine Lösung auf diesem Testboard oder ?
Das war nur ein kurzfristiger Testaufbau ?
Die Dinger können einen nämlich in den Wahnsinn treiben … habe ich mal bei nem Portexpander gehabt …

1 Like

Ich denke Modus ist sich dem durchaus bewusst.

Also eher ein provisorischer Testaufbau, im Langzeitbetrieb.

Wenn du möchtest @mois, kann ich mich mal an deiner Schaltung versuchen und sie gleich ätzen und verzinnen (oldshool).
Müsstest mir nur eine Skizze vom Schaltplan und die verwendeten Bauformen irgendwie zukommen lassen. Würde das dann allerdings mit Eagle und nicht mit fritzing machen.

1 Like

Ätzt Du die Leiterplatten komplett selbst ? Belichtung etc.?
Was hast Du für eine Ausrüstung?
Ich bin da noch auf den Lochstreifen … da habe ich aber keine Lust mehr drauf…

Vor 2 Jahren habe ich am RaspberryPi auch mit bis zu 10 DHT22 = AM1302 experimentiert und versucht, sie abzugleichen mit verschiedenen Salzlösungen.
Fazit: selten zeigen sie gleiche oder sehr ähnliche Werte an. Ausserdem können sie ganz einfach kaputt gehen und ergeben seltsame Ergebnisse.
Seit Okt. 2018 nutze ich den BME280 an verschiedenen ESP32 und FiPy mit Arduino-IDE und Micropython.
Fazit: Immer saubere Messwerte.
Empfehlung: von DHT22 auf BME280 wechseln

2 Likes

Nicht ganz, Belichtungsgerät usw. hätte ich zwar da. Benutze für kleine Einzelanfertigungen aber meist die Toner Transfer Methode, da ich noch einige Platten habe, wo der Fotolack zu alt ist.
Da mir der ganze Aufwand mit dem Lötstoplack oder Folie zu groß ist, verzinne ich sie anschließend mit Fittinglötpaste. Ist auch damit sie sich anschließend besser löten lassen. Galvanisch geht auch, wird aber nicht ganz so schön und ist wieder viel Chemie.
Geht super. Eine Platine ist nach dem Druck in ca. 20-30 Min fertig geätzt und verzinnt.
Allerdings mache ich hauptsächlich nur Einseitige Platinen, da die Durchkontaktierungen wieder ein Fall für viel Aufwand und Chemie sind.
Also im Layout ein bisschen mehr Hirnschmalz reinstecken.

Benötigt wird eigentlich nicht viel:
Zum Ätzen:

  • Laserdrucker
  • Katalogseiten oder Etikettenpapier(Wachspapier)
  • Bügeleisen oder Laminiergerät
  • Atzmittel z.B. Natriumpersulfat
  • Azeton ( zum reinigen vom Toner)
  • Dremel oder Kl. Standbohrmaschine

zum Verzinnen (muß nicht gemacht werden, empfehle ich aber):

  • Fittinglötpaste
  • Heißluftfön

Wer dann noch Langeweile hat kann dann ebenfalls mit der Transfermethode noch auf der Oberseite die Beschriftung aufbringen.

Will zum Wochenende eh noch eine Develop BoB Platine machen. falls Interesse besteht kann ich ja mal meinen Fotoapparat daneben legen.

1 Like

das ist ja ein tolles angebot. das nehme ich gerne zum anlass, meine schaltung aufzuzeichnen:

hier nochmal die pinbelegungen am arduino:
5V → Steckbrett
GND → Steckbrett
GND ← Power In
Vin <–Power In

A0 - Relais
A1 - not connected
A2 - not connected
A3 - not connected
A4 - TSL2591 SDA
A5 - TSL2591 SCL

14 - GND LED Pausenschaltung
D13 - Widerstand - LED Pausenschaltung
D12 - not connected
D11 - 100Ohm - Schalter Pausenschaltung
D10 - PDWN Waage1
D9 - PDWN Waage2
D8 - SCLK Waage2
D7 - SCLK Waage1
D6 - DRDY/DOUT Waage1
D5 - DRDY/DOUT Waage2
D4 - 1Wire DS18B20
D3 - DHT22 (über Relais)
D2 - DHT22
D1 - not connected
D0 - not connected

Bauformen?

  • Die DHT sind auf breakouts mit drei kabeln.
  • TSL2591 hat auch ein langes kabel, 4-adrig
  • einer der DS18B20 sitzt direkt auf dem breadboard, soll die temperatur in der messbox messen, der andere hat ein langes kabel, 3adrig.
  • die ADS1231 sehen so aus wie hier auf dem foto.
  • das relais sieht so aus.

für rückfragen bin ich noch diese woche da. dann bin ich erstmal wieder drei wochen weg.

2 Likes

Gut, damit sollte Ich klar kommen. Du willst du die Platine dann sicher ebenfalls als HAT auf den UNO Stecken oder?
Die Trägerplatine für die ADS1231 kann ich auch mit einzeichnen so das Du entweder Löten oder aufstecken kannst.

Hier gibt es ja schon ein shield im Arduino-Format, falls das hilft, ist allerdings Fritzing: Open Hive Shield for Seeeduino Stalker / Arduino Pro (3.3 V) and Yun / Uno (5 V)

Danke, habe alles, zur Not Bau ich mir selbst ein bis 2 Bauteile. Die Trägerplatine ist sicher ein Kandidat dafür, ist sicher schneller in die Lib gebastelt, als in der Bucht gesucht.