Skocz do zawartości
jakub51996

ESP32 z DS18B20 oraz FC-28

Pomocna odpowiedź

Witam. Mam problem z czujnikami a dokładnie wyświetlają fikcyjne dane. Na razie opisze problem z DS18B20 wgrałem przykład z biblioteki ale wyniki na porcie wynoszą  -127.00ºC
oraz -196.60ºF. Mam esp32 devkit v1 i podpinam do pinu 4 z rezystorem. Może ktoś miał podobny problem?

#include <OneWire.h>
#include <DallasTemperature.h>

// GPIO where the DS18B20 is connected to
const int oneWireBus = 4;     

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);

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

void setup() {
  // Start the Serial Monitor
  Serial.begin(115200);
  // Start the DS18B20 sensor
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures(); 
  float temperatureC = sensors.getTempCByIndex(0);
  float temperatureF = sensors.getTempFByIndex(0);
  Serial.print(temperatureC);
  Serial.println("ºC");
  Serial.print(temperatureF);
  Serial.println("ºF");
  delay(5000);
}

 

Udostępnij ten post


Link to post
Share on other sites

Wygląda na to, że masz coś źle podłączone a ten wynik to nie temperatura tylko kod błędu. Zapoznaj się z plikiem DallasTemperature.h


// Error Codes
#define DEVICE_DISCONNECTED_C -127
#define DEVICE_DISCONNECTED_F -196.6
#define DEVICE_DISCONNECTED_RAW -7040

Zobacz też przykłady dołączone do biblioteki. To podstawowe czynności jakie powinno się wykonać jeszcze przed skorzystaniem z nowej biblioteki. Myślę, że sobie z tym poradzisz, zachęcam jednocześnie do opublikowania rozwiązania na forum aby ktoś zmagający się z podobnym problemem w przyszłości mógł go rozwiązać dzięki Tobie. Pozdrawiam i życzę powodzenia z hardware debuging. 

--

Wygląda na to, że pin nie jest skonfigurowany.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Dzięki za odpowiedz. Dodałem konfiguracje pinu i jeszcze raz wszystko podłączyłem i zadziałał. Teraz mam problem z czujnikiem wilgotność gleby FC-28 który wskazuje wynik 4095 i nie reaguje na wodę. Podłączam do pinu 35 oraz zasilanie 5v. Czy powinnem zastosować jakąś bibliotekę? 

int sensor_pin = 35;
int value ;

void setup()
{
  Serial.begin(115200);
  Serial.println("Reading");
  delay(2000);
   pinMode(sensor_pin, INPUT);
}

void loop()
{

  value= analogRead(sensor_pin);

  Serial.print("Moisture : ");
  Serial.print(value);
  Serial.println("%");
  delay(1000);
}

 

Edytowano przez jakub51996

Udostępnij ten post


Link to post
Share on other sites

Dlaczego zasilasz czujnik z 5V zamiast 3.3V? Masę w ogóle podłączyleś? Czy na pewno podłączasz pin do odpowiedniego wyjścia (analog a nie digital)? Po co pinMode jeśli używasz analogRead? Czy wejście w ogóle reaguje na jakieś zmiany napięcia (podłącz tam potencjometr i sprawdź czy reaguje, bo 5V mogło je uwalić). 4095 to znaczy, że na wejściu jest 3.3V albo więcej (zakres analogRead jest od 0 do 4095).

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Oczywiście że może być. Tyle że piny w ESP32 nie lubią podłączania do nich 5V.

Udostępnij ten post


Link to post
Share on other sites

Znów był problem z podłączeniem znaczy podłączyłem pod pin 32 oraz zasilanie pod 3,3V masę oczywiście miałem podłączoną. Teraz mam pytanie jak dobrać odpowiedni zakres aby wilgotność była wyświetlana w %? Wiem że służy do tego rozkaz output_value = map(output_value,550,0,0,100) czy jaką maksymalną wartość ma dać 4095?  

Udostępnij ten post


Link to post
Share on other sites

Takie coś to Ci raczej nie wyjdzie. Owszem - możesz przeskalować wartość odczytaną z analogRead właśnie za pomocą map, ale z rzeczywistymi procentami nie będzie to miało wiele wspólnego.

Podejrzewam że ten "map" to z jakiejś arduinowej aplikacji? No to pomyśl: w Arduino analogRead ma zakres 1024, tutaj 4096. Cztery razy więcej, prawda?. Więc jeśli w Arduino odczytana wartością byłoby 550, to tutaj... no ile? Zgadniesz czy policzysz?

 A może zajrzysz do opisu funkcjo map na arduino.cc? Bo tak nie rozumiejąć o co chodzi to skończysz ten program za jakieś siedem kilometrów...[1]

--

[1] Każda pięciolatka to krok naprzód

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Dziękuję za pomoc. Osiągnąłem wystarczającą dokładność. Mam ostatnie pytanie w sprawie czujników czy podłączenie ich dwóch pod zasilanie 3.3V w ESP32 nie spali płytki?   

Udostępnij ten post


Link to post
Share on other sites

Nie powinno - biorąc pod uwagę możliwości stabilizatora 1117 na płytce. Jeśli jednak chcesz mieć stuprocentową pewność - po prostu zmierz prąd jaki pobiera moduł przy zwartych elektrodach (powinienem co prawda taki moduł mieć po nieudanym eksperymencie z kwiatkami ale gdzieś się zapodział). Z tego co wyszperałem w sieci sam ESP32 w porywach ciągnie do 240 mA (nadawanie WiFi), czyli trochę zapasu jeszcze zostanie...

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...