Skocz do zawartości

Problem z działaniem DS18B20 na esp8266


Pomocna odpowiedź

Napisano

Hej, ratujcie 😞

Na ESP8266 nie jestem w stanie odczytać temperatury z DS18b20. Cztery czujniki, różne piny w ESP i nie działa.

Podłączyłem do BlackPill (STM32F4) działa od razu, bez problemu.

Sprawdzone na dwóch ESP8266 - ta sama sytuacja.

WAŻNE: rezystor pullup dla DS18b20 JEST.

Zasilanie DS18b20 3.3V.

Nie znajduje w ogóle DS18b20.

Piny, do których podłączam w ESP - sprawdzane po kilka razy.

Kod z przykładów biblioteki:

// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>


#define ONE_WIRE_BUS 4 //pin D2 esp8266

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

/*
 * The setup function. We only start the sensors here
 */
void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

/*
 * Main function, get and show the temperature
 */
void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  delay(1000);
  Serial.println("DONE");
  // After we got the temperatures, we can print them here.
  // We use the function ByIndex, and as an example get the temperature from the first sensor only.
  float tempC = sensors.getTempCByIndex(0);

  // Check if reading was successful
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.print("Temperature for the device 1 (index 0) is: ");
    Serial.println(tempC);
  }
  else
  {
    Serial.println("Error: Could not read temperature data");
  }
}

 

@jand dokładnie Wemos D1 mini.

Podłączyłem drugiego DS18B20 i ta sama sytuacja, nawet adresu nie pobiera.

Podpinam się pod STM32F4 i ten czujnik działa.

Wziąłem na Wemosie w loop ustawiłem cykliczne przełączanie pinu aby sprawdzić czy nie jest uszkodzony - działa, zmienia swój stan.

Totalnie nie wiem o co kaman...

Powiem więcej, ten sam Wemos ma podłączony RTC DS2417+, który działa po onewire, jest podłączony do innego pinu i działa, działa pięknie. Ale DS18B20 nie chce współpracować..

56 minut temu, roz napisał:

dokładnie Wemos D1 mini.

Zauważ, że ma on nóżki opisane po swojemu - jeśli używasz nóżki opisanej na płytce jako D4, to jest to naprawdę GPIO 2. Tak ja tu pokazane.

Można zamiast

#define ONE_WIRE_BUS 4

Napisać

#define ONE_WIRE_BUS D2

ale musi być wybrana właściwa płytka.

 

Z całego kodu nie korzystałem tylko z tych ifów niby weryfikujących poprawność transmisji do DS, wywal je i od razu wydrukuj odczytaną temperaturę, to i tak tylko test dla Twoich oczu w wydruku na serial. Nie musisz czekać delay(1000), bez dodatkowych zabiegów biblioteka i tak każe funkcji zlecenia pomiaru czekać w tym miejscu na jej koniec.

Trafiłem kiedyś na 10 czujników z jednego zamówienia, które działały tylko pojedynczo poza tym odczyty były bardzo niestabilne, choć krążyły w okolicach prawdopodobnych wartości, raczej wszystkie z Ali po złotypindziesiąt to podróbki, ale te były wyjątkowo nieudane.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...