Forum: Mikrocontroller und Digitale Elektronik ESP8266 - OneWire Werte auf I2C OLED Display anzeigen


von Thomas P. (vtp_tp)


Angehängte Dateien:

Lesenswert?

Liebe Kollegen der Elektronik,

nachdem ich vor einiger Zeit ein kleines Projekt mit einem ESP8266 
realisiert habe bin ich gerade beim nächsten, leider komme ich da gerade 
nicht weiter.

Ich komme eigentlich aus der Elektrotechnik und mein Arbeitsalltag 
starte normal im 3stelligen Amperebereich, also Grundkenntnisse sind da 
aber mehr auch nicht ;-)

Kurz zum Projekt:
Ein ESP8266 soll regelmäßig die Temperaturwerte auf zwei OneWire 
Tauchhülsenfühler auslesen und auf einem I2C OLED 0,96" Display 
abbilden.

Das Display habe ich mit div. Musterprogrammen zum laufen gebracht, 
Anschluss laut (google) Bild im Anhang.Es zeigt bis auf die Werte auch 
schon alles an was es anzeigen soll, wobei hier zugegebenermaßen sicher 
auch Glück im Spiel war ;-).

Jedoch bei den One Wire Fühler stehe ich auf der Leitung.

Angeschlossen sind bei parallel folgendermaßen:
GND - GND
5V - VCC
D4 - DQ
4,7kOhm Pullup zwischen GND+5V


Die OneWire "Initialisierung" ala Google:
1
 #include <OneWire.h>
2
 
3
// OneWire DS18S20, DS18B20, DS1822 Temperature Example
4
 
5
OneWire  ds(D4);  // on pin D4 (a 4.7K resistor is necessary)
6
 
7
void setup(void) 
8
{
9
  Serial.begin(9600);
10
}

Wie geht es nun weiter ? Wie kann ich zwischen den beiden OneWire Fühler 
unterscheiden und wie kann ich die Werte am Display abbilden ?

Ich bin im Voraus schon wirklich dankbar für jede Hilfestellung und 
Antwort!

Danke und BG Tom

von jo mei (Gast)


Lesenswert?

Thomas P. schrieb:
> Ich bin im Voraus schon wirklich dankbar für jede Hilfestellung und
> Antwort!

Zeichen einen vollständigen Schaltplan. Sonst wissen wir nicht
was du eventuell alles falsch machst.

Nach diesem Prosa-Schaltplan-Auszug macht der Pullup keinen Sinn:

Thomas P. schrieb:
> 4,7kOhm Pullup zwischen GND+5V

Warum das so ist solltest du selbst merken.

von Heinz R. (heijz)


Lesenswert?

Thomas P. schrieb:
> 4,7kOhm Pullup zwischen GND+5V

Der gehört zwischen +5V und D4/DQ

Beim ESPEasy-Projekt gibt es übrigens das was Du machen willst quasi fix 
und fertig (also die Software)

von Helmut -. (dc3yc)


Lesenswert?

Das Netz gibt ja jede Menge an Beispielen. Z.b. so:
1
/* YourDuino Example: Find Address of a DS18B20 Temperature Sensor
2
 Cut and paste the address to a text file for later use.
3
 V1.1 01/17/2013
4
 Questions: terry@yourduino.com 
5
 
6
 Connections:
7
 DS18B20 Pinout (Left to Right, pins down, flat side toward you)
8
 - Left   = Ground
9
 - Center = Signal (Pin 2):  (with 3.3K to 4.7K resistor to +5 or 3.3 )
10
 - Right  = +5 or +3.3 V   
11
 This sketch looks for 1-wire devices and  prints their addresses (serial number)
12
 to the Serial Monitor in a format that is useful in Arduino sketches.
13
 Based on example at: 
14
 http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
15
 */
16
17
/*-----( Import needed libraries )-----*/
18
#include <OneWire.h>
19
20
/*-----( Declare Constants and Pin Numbers )-----*/
21
#define SENSOR_PIN 2  // Any pin 2 to 12 (not 13) and A0 to A5
22
23
/*-----( Declare objects )-----*/
24
OneWire  ourBus(SENSOR_PIN);  // Create a 1-wire object
25
26
void setup()  /****** SETUP: RUNS ONCE ******/
27
{
28
  Serial.begin(115200);
29
 
30
  discoverOneWireDevices();  // Everything happens here!
31
}//--(end setup )---
32
33
void loop()   /****** LOOP: RUNS CONSTANTLY ******/
34
{
35
  // Nothing happening here
36
}
37
38
/*-----( Declare User-written Functions )-----*/
39
void discoverOneWireDevices(void) {
40
  byte i;
41
  byte present = 0;
42
  byte data[12];
43
  byte addr[8];
44
45
  Serial.print("Looking for 1-Wire devices...\n\r");// "\n\r" is NewLine 
46
  while(ourBus.search(addr)) {
47
    Serial.print("\n\r\n\rFound \'1-Wire\' device with address:\n\r");
48
    for( i = 0; i < 8; i++) {
49
      Serial.print("0x");
50
      if (addr[i] < 16) {
51
        Serial.print('0');
52
      }
53
      Serial.print(addr[i], HEX);
54
      if (i < 7) {
55
        Serial.print(", ");
56
      }
57
    }
58
    if ( OneWire::crc8( addr, 7) != addr[7]) {
59
      Serial.print("CRC is not valid!\n\r");
60
      return;
61
    }
62
  }
63
  Serial.println();
64
  Serial.print("Done");
65
  ourBus.reset_search();
66
  return;
67
}

von Thomas P. (vtp_tp)


Angehängte Dateien:

Lesenswert?

jo mei schrieb:
> Thomas P. schrieb:
>> Ich bin im Voraus schon wirklich dankbar für jede Hilfestellung und
>> Antwort!
>
> Zeichen einen vollständigen Schaltplan. Sonst wissen wir nicht
> was du eventuell alles falsch machst.

ist angehängt.

> Nach diesem Prosa-Schaltplan-Auszug macht der Pullup keinen Sinn:
>
> Thomas P. schrieb:
>> 4,7kOhm Pullup zwischen GND+5V
>
> Warum das so ist solltest du selbst merken.

habe mich verschrieben, natürlich zwischen Vcc und DQ.

von Helmut -. (dc3yc)


Lesenswert?

Und bitte den Widerstand zwischen 3.3V und DQ! Sonst macht der ESP 
schnell die Grätsche! Die IOs sind nämlich nur 3.3V-kompatibel!

von Thomas P. (vtp_tp)


Lesenswert?

Heinz R. schrieb:
> Thomas P. schrieb:
>> 4,7kOhm Pullup zwischen GND+5V
>
> Der gehört zwischen +5V und D4/DQ
>
> Beim ESPEasy-Projekt gibt es übrigens das was Du machen willst quasi fix
> und fertig (also die Software)

schau ich mir mal an ! Danke !

von Thomas P. (vtp_tp)


Lesenswert?

Helmut -. schrieb:
> Das Netz gibt ja jede Menge an Beispielen. Z.b. so:
>
> [code]
> /* YourDuino Example: Find Address of a DS18B20 Temperature Sensor
>  Cut and paste the address to a text file for later use.
>  V1.1 01/17/2013
>  Questions: terry@yourduino.com

Ja so weit war ich schon (zumindest einigermaßen), aber wie bekomme ich 
den Wert aufs Display ? Mit Serial.print schickt er es ja nur in den 
Software Monitor ?

von Thomas P. (vtp_tp)


Angehängte Dateien:

Lesenswert?

> Zeichen einen vollständigen Schaltplan. Sonst wissen wir nicht
> was du eventuell alles falsch machst.

Hier nochmals als JPEG, weiß nicht warum der Mac so ein komische Format 
aus dem Bild macht.

von jo mei (Gast)


Lesenswert?

Thomas P. schrieb:
> Hier nochmals als JPEG

Nö, das ist ein Blockschaltbild. In einem Schaltplan sieht man
jeden einzelnen Pin eines jeden Bauteils und die Verschaltung dazu.

Wir wollen nicht verarscht werden, daher bitte einen Schaltplan.

von Helmut -. (dc3yc)


Lesenswert?

Thomas P. schrieb:
> aber wie bekomme ich
> den Wert aufs Display ? Mit Serial.print schickt er es ja nur in den
> Software Monitor ?

Indem du eine für dein Display passende Lib einbindest und den 
entsprchenden Ausgabebefehl benutzt!

Ach, und den 4.7k-Widerstand brauchst du nur einmal an DQ, nicht pro 
Sensor!
Und der sollte zwischen 3.3V und DQ sein!

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Thomas P. schrieb:
> Wie kann ich zwischen den beiden OneWire Fühler unterscheiden

Indem du sie unter ihrer Seriennummer ansprichst - zumindest zum 
Auslesen. Starten kannst du die Wandlung bei beiden gleichzeitig mit 
einem Broadcast-Kommando. Guck einfach mal ins Datenblatt.

> GND - GND
> 5V - VCC

Alternativ:
GND - GND
GND - VCC
D4 - DQ

steht auch im Datenblatt.

von Brain 2.0 (Gast)


Lesenswert?

jo mei schrieb:
>
> Nö, das ist ein Blockschaltbild. In einem Schaltplan sieht man
> jeden einzelnen Pin eines jeden Bauteils und die Verschaltung dazu.
>
> Wir wollen nicht verarscht werden, daher bitte einen Schaltplan.

Auch ein Blockschaltbild reicht hier völlig aus.

Wenn du es nicht lesen kannst, dein Problem.

von Wolfgang (Gast)


Lesenswert?

Helmut -. schrieb:
> Und bitte den Widerstand zwischen 3.3V und DQ! Sonst macht der ESP
> schnell die Grätsche! Die IOs sind nämlich nur 3.3V-kompatibel!

Da macht niemand die Grätsche!

Bei 4.7kΩ fließen rund 300µA durch die Eingangsschutzdioden. Das ist nun 
wirklich kein Problem. Die 5V kämen nie beim Pin an.

von Helmut -. (dc3yc)


Lesenswert?

Wolfgang schrieb:
> Da macht niemand die Grätsche!
>
> Bei 4.7kΩ fließen rund 300µA durch die Eingangsschutzdioden. Das ist nun
> wirklich kein Problem. Die 5V kämen nie beim Pin an.

Aber ein sauberes Design ist was anderes! Vom Frickler für'n Bastler. 
Kann man das nicht gleich richtig machen, woher sollen es denn sonst die 
Leute lernen?

von Wolfgang (Gast)


Lesenswert?

Helmut -. schrieb:
> Aber ein sauberes Design ist was anderes!

"Grätsche" ist schlicht und einfach falsch - egal welchen Reinheitsgrad 
du dem Design zubilligst.

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.