Данные сразу с 2-х датчиков ina 219
- Войдите на сайт для отправки комментариев
Чт, 23/04/2020 - 18:23
Добрый день.
Имею пару датчиков напряжения ina 219 и хочу получать данные от них на веб сервер.
Проблем с написанием скетча под один датчик нет-все работает. Подскажите пожалуйста-как изменить код для 2-х датчик Адрес I2c второго датчика изменил перемычкой.
#include <ESP8266WiFi.h> #include <Wire.h> #include <Adafruit_INA219.h> const char* ssid = "mywifi"; const char* password = "0503694629"; Adafruit_INA219 ina219; float busvoltage = 0; WiFiServer server(80); void setup(void) { Serial.begin(115200); while (!Serial) { delay(1); } uint32_t currentFrequency; Serial.println("Hello!"); ina219.begin(); Serial.println(); Serial.print("Connecting to "); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); server.begin(); Serial.println("Web server running. Waiting for the ESP IP..."); delay(10000); Serial.println(WiFi.localIP()); Serial.print("MAC: "); Serial.println(WiFi.macAddress()); } void loop() { WiFiClient client = server.available(); if (client) { Serial.println("New client"); // boolean blank_line = true; while (client.connected()) { if (client.available()) { char c = client.read(); void getBusVoltage() { busvoltage = ina219.getBusVoltage_V(); Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V"); Serial.println(""); delay(2000); if (c == '\n' && blank_line) { getBusVoltage(); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head></head><body><h1>ESP8266 - BusVoltage </h1><h3>BusVoltage in Volt: "); client.println(voltageVString); client.println("*V</h3></body></html>"); client.print("MAC: "); client.println(WiFi.macAddress()); break; } if (c == '\n') { blank_line = true; } else if (c != '\r') { blank_line = false; } } } delay(1); client.stop(); Serial.println("Client disconnected."); } }Спасибо ,сейчас попробую .
В СОМ выводить .
А для веб - надо наверное HTML страничку подправить .
Спасибо большое.
Добрый день.
Подскажите пожалуйста: есть 2 датчика DS18B20 и ESP8266 ,хочу получать данные веб сервер от них поочередно,т.е набираю в браузере ip/sensor1 -температура от первого датчика ,затем ip/sensor2-температура от второго датчика .Как мне изменить код для получения данных таким образом.
Заранее спасибо.
#ifdef ESP32 #include <WiFi.h> #include <ESPAsyncWebServer.h> #else #include <Arduino.h> #include <ESP8266WiFi.h> #include <Hash.h> #include <ESPAsyncTCP.h> #include <ESPAsyncWebServer.h> #include <ESP8266mDNS.h> #endif #include <OneWire.h> #include <DallasTemperature.h> const char* ssid = "mywifi"; const char* password = "0503694629"; #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors (&oneWire);; DeviceAddress Term01 = {0x28, 0xAA, 0x2B, 0xC3, 0x49, 0x14, 0x01, 0x82}; DeviceAddress Term02 = {0x28, 0xAA, 0x1B, 0x36, 0x4A, 0x14, 0x01, 0x12}; AsyncWebServer server(80); String readDSTemperatureC() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); if(tempC == -127.00) { return "--"; } else { } return String(tempC); } const char index_html[] PROGMEM = R"rawliteral( <!DOCTYPE HTML><html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <p> <span id="temperaturec">%TEMPERATUREC%</span> <p> <script> setInterval(function ( ) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("temperaturec").innerHTML = this.responseText; } }; xhttp.open("GET", "/temperaturec", true); xhttp.send(); }, 10000) ; </script> </html>)rawliteral"; String processor(const String& var){ if(var == "TEMPERATUREC"){ return readDSTemperatureC(); } return String(); } void setup(){ Serial.begin(115200); Serial.println(); sensors.begin(); WiFi.begin(ssid, password); Serial.println("Connecting to WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println(WiFi.localIP()); server.on("/sensor1", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html",index_html, processor); }); server.on("/temperaturec", HTTP_GET, [](AsyncWebServerRequest *request){ }); server.begin(); Serial.println("HTTP server started"); } void loop(void){ }Данные от одного датчика по этому коду получаю .
Точно так же как и первый.
Вы же уже подобное спрашивали в этой теме выше.