ESP8266 - OneWire Werte auf I2C OLED Display anzeigen

#6410611
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
Angehängte Dateien:
#6410645
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
}
#6410647
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.
Angehängte Dateien:
#6410658
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 ?
Gast #6410727
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.
Gast #6410729
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.
Gast #6410743
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren