• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ESP8266 dwa termometry
#1
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
 
Odpowiedź
#2
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ą.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
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);
}
 
Odpowiedź
#4
A czemu nie odczytujesz po adresie?

A gdzie masz "sensors.begin();"
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
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 .
 
Odpowiedź
#6
Przyczyna zawsze jest jedna. Nie zapoznanie sie z dokumentacja układu...


Zwolnij "PIN15" on słuzy do innych celów...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#7
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);
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości