Данные сразу с 2-х датчиков ina 219

mixail120
Offline
Зарегистрирован: 10.01.2020


 

Добрый день.

Имею пару датчиков напряжения ina 219 и хочу получать данные от них на веб сервер.

Проблем с написанием скетча под один датчик нет-все работает. Подскажите пожалуйста-как изменить код для 2-х датчик Адрес I2c второго датчика изменил перемычкой. 

 

mixail120
Offline
Зарегистрирован: 10.01.2020
#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.");
             
}
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016
Adafruit_INA219 ina219_01(сюда_писать_I2C_адрес_первого_датчика);
Adafruit_INA219 ina219_02(сюда_писать_I2C_адрес_второго_датчика);

...
busvoltage1 = ina219_01.getBusVoltage_V();
busvoltage2 = ina219_02.getBusVoltage_V();
...

 

mixail120
Offline
Зарегистрирован: 10.01.2020

Спасибо ,сейчас попробую .

mixail120
Offline
Зарегистрирован: 10.01.2020

В СОМ выводить .

А для веб - надо наверное HTML страничку подправить .

Спасибо большое.

mixail120
Offline
Зарегистрирован: 10.01.2020

Добрый день. 

Подскажите пожалуйста: есть 2 датчика DS18B20 и ESP8266  ,хочу получать данные  веб сервер от них поочередно,т.е набираю в браузере ip/sensor1 -температура от первого датчика ,затем ip/sensor2-температура от второго датчика .Как мне изменить код для получения данных таким образом.

Заранее спасибо.

 

mixail120
Offline
Зарегистрирован: 10.01.2020

#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){  
}
  
  
  

 

  
  



  





mixail120
Offline
Зарегистрирован: 10.01.2020

Данные от одного датчика по этому коду получаю .

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Точно так же как и первый.

Вы же уже подобное спрашивали в этой теме выше.