Hallo,
ich habe angefangen mit dem ESP8266 (konkret: Wemos D1 Mini von AZdelivery) rumzuexperimentieren. Mit Arduino, C++ und Elektronik habe ich jede Menge Erfahrung, nun reizt mich das Thema Webserver. Beim Thema Webserver und Webseitendesign sowie den zugehörigen Protokollen bin völliger Anfänger.
Mein Einsteigerprojekt ist ein Thermometer für mein Gewächshaus, um übers Handy die aktuellen Temperaturen sehen zu können. dazu sind einfach drei DS18B20 angeschlossen, das funktioniert auch soweit.
Nun wollte ich einen DHT22 mit dazu nehme, um die Relative Luftfeuchte mit zu messen. Dazu wollte ich die DS18B20 auf einen anderen Pin legen. ja, Pustekuchen. nichts geht mehr.
Um einen Fehler in meinem Sketch auszuschliessen habe ich das mit dem Beispielsketch "Tester.h" aus der DallasTemperature Library probiert.
Ergebnis: Nur wenn die Sensoren an GPIO2 (wie im Beispiel) oder GPIO0 angeschlossen sind, bekomme ich Sensorwerte. An allen anderen Pins (gut, an den meisten, habe nicht ALLE probiert) werden die Sensoren nicht erkannt.
Die drei Sensoren werden im 3-Leiter-System betrieben, werden mit 5V und Masse versorgt. Kabellänge ca. 4m , am Ende sitzt ein 100nF Block-C an der Versorgung.
Hat jemand eine Idee, warum das nur an diesen beiden Pins funktioniert?
Da du offensichtlich erst mit dem ESP8266 startest, lege ich dir die Seite von fips ans Herz. Der hat auch mit dem DS18B20 Beispiele dabei.
Und eins ist sicher, es funktioniert auch an anderen Pins. Ich vermute, du hast den Pullup-Widerstand am Datenpin vergessen.
Der ESP8266 ist ein 3.3V microcontroller. Dem gefällt das nicht wenn du da 5V auf die IO-pins gibst.
Ich habe bei mir 21 DS18B20 an einem 15m langen Bus an 3.3V laufen.
Ich musste den Pullup-Widerstand auf 1,8 kOhm reduzieren aber seit dem läuft das einwandfrei
Bei RNT (Random Nerd Tutorial) gibt es ein Tutorial das erklärt welcher IO-pin ist für was geeignet
Weit runterscrollen
Wenn man da in die Tabelle schaut sieht man, dass GPIO0 und GPIO2 einen Pullup-Widerstand haben.
Genau das ist der Grund weshalb es meist an den Pins funktioniert.
Wie ich schon schrieb, es fehlen die Pullups gegen 3,3 Volt.
Mit denen geht es bestimmt auch an den meisten anderen Pins.
Und ja, 5Volt Spannung ist natürlich zu viel.
Danke, die Seite von fips kenne ich selbstverständlich, auch von Randomnerdtutorials habe ich mir schon einige Anregungen geholt.
Die Ursache war tatsächlich - und ich versinke schier im Boden vor Scham - der fehlende Pullup.
Ich hatte zwar einen Pullup eingebaut, den auch mit Heißkleber und Schrumpfschlauch wasserdicht im Kabel beim Sensor verpackt, aber nicht mehr nachgemessen.
jedenfalls hatte er keine Verbindung.
Mit Pullup funktionieren die Sensoren nun an (fast) allen Pins.
An den Pins GPIO1 (TX), GPIO3(RX) und GPIO18 (D8) bekomme ich nach wie vor keine Werte, aber das ist mir nun egal.
Hallo Gunther,
freut mich, das es jetztfunktioniert.
Das mit GPIO1, 3 und 18 liegt daran, dass man die nicht als normalen GPIO nutzen sollte. Oder die hinweise In der Tabelle beachten sollte. Wobei du sicher GPIO15 meinst, nicht 18.