ESP8266 dwa termometry - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w) +--- Wątek: ESP8266 dwa termometry (/watek-esp8266-dwa-termometry) |
ESP8266 dwa termometry - hpzzz - 09-04-2020 Witam mój pierwszy post. Posiadam płytkę ESP8266 .Do płytki chcę podłączyć dwa (2) termometry DS18B20 wodoodporny. Ale każdy pod inny pin . Problem mam taki ze pokazuje mi tylko wartość z jednego pina 15 . Jak pokazać wartości z drugiego termometru . Odczytuje mi tylko z pina 15 bez względu czy je zamiennie oba sa sprawne jak odczytać dane z pin 13 . Chodzi mi o opis pinu 13 czy dobrze podałem zmienne do odczytania z minu 13. Jak to zrobić . #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266HTTPClient.h> #include <OneWire.h> #include <DallasTemperature.h> const int oneWireBus = 15; const int oneWireBus_1 = 13; OneWire oneWire(oneWireBus); DallasTemperature sensors(&oneWire); OneWire oneWire_1(oneWireBus_1); DallasTemperature sensors_1(&oneWire_1); Pozdrawiam RE: ESP8266 dwa termometry - kaczakat - 09-04-2020 Twój zapis wygląda OK, ale nie pokazujesz całego kodu. W tej użytej bibliotece do DS jest przykład Multibus_Simple, otwórz zmień nr na 13 i 15, sprawdź czy działa. Jak nie działa na 13 to spróbuj innych pinów, może masz coś nie tak z płytką. RE: ESP8266 dwa termometry - hpzzz - 09-04-2020 Mam układ w pracy ale pamiętam ze tak sprawdzałem zamieniałem piny i termometry żeby sprawdzić czy działa i działał tylko na jednym . I na 13 i na 15 jak zamieniałem zawsze na pierwszej zmiennej. Drugi cały czas wysyłał stała temperaturę jak pamiętam -125 czy podobnie Wrzucanie do bazy działa . Moim zdaniem jest coś zle z pinem jak podaje drugim Cały kod przesyłam kolego #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266HTTPClient.h> #include <OneWire.h> #include <DallasTemperature.h> const int oneWireBus = 15; const int oneWireBus_1 = 13; OneWire oneWire(oneWireBus); DallasTemperature sensors(&oneWire); OneWire oneWire_1(oneWireBus_1); DallasTemperature sensors_1(&oneWire_1); int Led_OnBoard = 2; const char* ssid = "P"; const char* password = "p"; const char *host = "172.0.0.20"; void setup() { // put your setup code here, to run once: delay(1000); pinMode(Led_OnBoard, OUTPUT); Serial.begin(115200); WiFi.mode(WIFI_OFF); delay(1000); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); Serial.print("Connecting"); // Wait for connection while (WiFi.status() != WL_CONNECTED) { digitalWrite(Led_OnBoard, LOW); delay(250); Serial.print("."); digitalWrite(Led_OnBoard, HIGH); delay(250); } digitalWrite(Led_OnBoard, HIGH); Serial.println(""); Serial.println("Connected to Network/SSID"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { sensors.requestTemperatures(); float temperatureC = sensors.getTempCByIndex(0); float temperatureC_1 = sensors.getTempCByIndex(1); Serial.print(temperatureC); Serial.print(temperatureC_1); delay(5000); HTTPClient http; String LdrValueSend, postData; float ldrvalue=temperatureC; LdrValueSend = String(ldrvalue); //Post Data postData = "mq7val=" + LdrValueSend; http.begin("http://172.0.0.20/arduino/baza.php"); //Specify request destination http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header float httpCode = http.POST(postData); //Send the request String payload = http.getString(); //Get the response payload //Serial.println("LDR Value=" + ldrvalue); Serial.println(httpCode); //Print HTTP return code Serial.println(payload); //Print request response payload Serial.println("LDR Value=" + LdrValueSend); http.end(); delay(4000); digitalWrite(Led_OnBoard, LOW); delay(1000); digitalWrite(Led_OnBoard, HIGH); } RE: ESP8266 dwa termometry - Jarewa0606 - 09-04-2020 A czemu nie odczytujesz po adresie? A gdzie masz "sensors.begin();" RE: ESP8266 dwa termometry - hpzzz - 12-04-2020 Ok działa a teraz jeszcze jedno pytanie. Zasilanie termometrów mam z pinów od płytki ESP8266 . I jak jest podłączone płytka do prądu to się nie uruchamia dopóki nie wyciągnę plusa (+) od tremometrów. Jak by przy włączaniu prądu plusy z termometrów zawieszają płytkę. Dopiero jak bym je odłączył + potem podłączył jak zacznie płytka migać to będzie działać . Jaka może byc przyczyna . RE: ESP8266 dwa termometry - Jarewa0606 - 12-04-2020 Przyczyna zawsze jest jedna. Nie zapoznanie sie z dokumentacja układu... Zwolnij "PIN15" on słuzy do innych celów... RE: ESP8266 dwa termometry - hpzzz - 14-04-2020 Super forum i dzięki . Tak sprawdziłem zmieniłem pin i wszystko oki. Jeszcze jedno pytanie .Pokazuje mi temperaturę z 2 czujników .Wszystko oki . Potem wysyła post zmienne i w php odbieram i zapisuje do bazy . Problem jest taki ze wysyła tylko jedna zmienna jak wyłączę jeden pin prześle druga . Php dobrze odbiera zmienne bo raz zapisuje do bazy jedna taz druga jak wyłączę pin Jak przekazać wynik dwóch zmiennych post. Chodzi mi głownie o ten zapis bo mysle ze tu jest błąd postData = "mq7val=" + pierwszy; postData_1 ="mq4val=" + drugi ; żeby jednym post poszły wyniki z dwóch zmiennych void loop() { sensors.requestTemperatures(); sensors_1.requestTemperatures(); float temperatureC = sensors.getTempCByIndex(0); float temperatureC_1 = sensors_1.getTempCByIndex(0); Serial.print(temperatureC); Serial.print(temperatureC_1); delay(5000); // put your main code here, to run repeatedly: HTTPClient http; //Declare object of class HTTPClient String pierwszy, postData; float temp = temperatureC; //Read Analog value of LDR pierwszy = String(temp); //String to interger conversion String drugi, postData_1; float ldrvalue_1 = temperatureC_1; //Read Analog value of LDR drugi = String(ldrvalue_1); //String to interger conversion //Post Data postData = "mq7val=" + pierwszy; postData_1 ="mq4val=" + drugi ; http.begin("http://172.0.0.20/arduino/baza.php"); //Specify request destination http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header float httpCode = http.POST(postData); //Send the request float httpCode_1 = http.POST(postData_1); //druga wartosc String payload = http.getString(); //Get the response payload //Serial.println("LDR Value=" + ldrvalue); Serial.println(httpCode); //Print HTTP return code Serial.println(httpCode_1); //drugi Serial.println("Pierwszy=" + pierwszy); Serial.println("Drugi=" + drugi);//drugi http.end(); //Close connection delay(4000); //Here there is 4 seconds delay plus 1 second delay below, so Post Data at every 5 seconds digitalWrite(Led_OnBoard, LOW); delay(1000); digitalWrite(Led_OnBoard, HIGH); } |