Skocz do zawartości

ESP32 z DS18B20 oraz FC-28


jakub51996

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);
}

 

Link do komentarza
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.

Link do komentarza
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
Link do komentarza
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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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?  

Link do komentarza
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
Link do komentarza
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
Link do komentarza
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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.