Go Down

Topic: aide pour esp8266 (esp12) (Read 1 time) previous topic - next topic

al1fch

#30
Sep 13, 2018, 05:36 pm Last Edit: Sep 13, 2018, 05:37 pm by al1fch
Bonjour

Quote
J'ai le BME280 qui est en sortie (D3, D4) et le BH1750 en (D1, D2) sur mon ESP12E.

J'ai mis :
Code: [Select]
Code: [Select]
wire.begin(D1, D2, D3, D4)
pas étonnant que ça ne lui plaise pas  !!

voir içi wire.begin()  pour l'ESP8266 sous IDE Arduino

wire .begin() attends 2 paramètres , (pas 4 !)
-la broche d'entrée/sortie pour les données , SDA
-la broche de sortie pour l'horloge, SCL

I2C est un BUS, les divers composants raccordés à ce bus utilisent une ligne commune SDA, une ligne commune SCL, chacun d'eux a une adresse définie par son constructeur, adresse permettant à tout moment de selectionner un  des composants I2C raccordé au bus.

mecamaniack

Donc je dois câbler mes deux capteurs sur les memes sorties (D1, D2) , mais comment faire pour que l'Esp puisse différencier les deux infos sur les mêmes bornes?

al1fch

#32
Sep 14, 2018, 04:29 pm Last Edit: Sep 14, 2018, 04:35 pm by al1fch
le lignes
Code: [Select]

#include <BH1750.h>
#include <Adafruit_BME280.h>

Permettent à la carte Arduino de connaître les adresses individuelles prédéterminées des 2 composants I2C.

Ceux ci ont été conçus pour ne réagir que lorsqu'ils sont désignés, le reste du temps ils n'interfèrent pas avec le bus.

(le bus I2C a ét créé par Philips pour relier plusieurs composants dans un téléviseur, magnétoscope.... avec une économie de liaisons)

mecamaniack

Bonjour a tous,

Voila, j'ai essayé de compiler les deux codes, mais j'ai une erreur lors de du test.

Voici mon code:

Code: [Select]
  Project: BME Weather Web server using NodeMCU
  Implements Adafruit's sensor libraries.
  Complete project is at: http://embedded-lab.com/blog/making-a-simple-weather-web-server-using-esp8266-and-bme280/
 
  Modified code from Rui Santos' Temperature Weather Server posted on http://randomnerdtutorials.com 
*********/

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <BH1750.h>
Adafruit_BME280 bme; // I2C

// Replace with your network details
const char* ssid = "nelmatt";
const char* password = "NELMATT2018";
float h, t, p, pin, dp;
char temperatureFString[6];
char dpString[6];
char humidityString[6];
char pressureString[7];
char pressureInchString[6];

// Web Server on port 80
WiFiServer server(80);
BH1750 lightMeter;
// only runs once on boot
void setup() {
  // Initializing serial port for debugging purposes
  Serial.begin(9600);
  delay(10);
  Wire.begin(D1, D2);
  Wire.setClock(10000);
  // Connecting to WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Starting the web server
  server.begin();
  Serial.println("Web server running. Waiting for the ESP IP...");
  delay(10000);
 
  // Printing the ESP IP address
  Serial.println(WiFi.localIP());
  Serial.println(F("BME280 test"));
  Serial.println(F("BH1750 Test begin"));
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

void getWeather() {
 
    h = bme.readHumidity();
    t = bme.readTemperature();
    t = t;
    dp = t-0.36*(100.0-h);
   
    p = bme.readPressure()/100.0F;
    pin = 0.02953*p;
    dtostrf(t, 5, 1, temperatureFString);
    dtostrf(h, 5, 1, humidityString);
    dtostrf(p, 6, 1, pressureString);
    dtostrf(pin, 5, 2, pressureInchString);
    dtostrf(dp, 5, 1, dpString);
    delay(100);
 
}

// runs over and over again
void loop() {
  // Listenning for new clients
  WiFiClient client = server.available();
 
  if (client) {
    Serial.println("New client");
    // bolean to locate when the http request ends
    boolean blank_line = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
       
        if (c == '\n' && blank_line) {
            getWeather();
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            client.println();
            // your actual web page that displays temperature
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
            client.println("<body><h1>SERVEUR METEO ARMOIRE </h1>");
            client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
            client.println("<h3>Temperature = ");
            client.println(temperatureFString);
            client.println("&deg;C</h3><h3>Humidity = ");
            client.println(humidityString);
            client.println("%</h3><h3>Approx. Dew Point = ");
            client.println(dpString);
            client.println("&deg;C</h3><h3>Pressure = ");
            client.println(pressureString);
            client.println("hPa (");
            client.println(pressureInchString);
            client.println("Inch)</h3></td></tr></tbody></table></body></html>");
            Serial.print("Light: ");
            Serial.print(lux);
            Serial.println(" lx"); 
            break;
        }
        if (c == '\n') {
          // when starts reading a new line
          blank_line = true;
        }
        else if (c != '\r') {
          // when finds a character on the current line
          blank_line = false;
        }
      }
    } 
    // closing the client connection
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");
  }
}


Voici l'erreur lors du test de compilation:

Code: [Select]
exit status 1
'lux' was not declared in this scope


Savez-vous ce que signifie cette erreur?
Merci d'avance
Cordialement

J-M-L

#34
Sep 22, 2018, 02:16 pm Last Edit: Sep 22, 2018, 02:17 pm by J-M-L
le compilateur vous dit que la variable lux est utilisée alors qu'elle est inconnue

c'est quand vous faites
Code: [Select]
          Serial.print("Light: ");
          Serial.print(lux);  // <<=== QUÉSACO ????
          Serial.println(" lx");
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

mecamaniack

Bonsoir a tous,

Ça y est, après des heures de recherche (et d'arrachage de cheveux!!!!!), j'ai réussi à faire ce que je voulais.

Je mets mon code WebServer (fonctionnel) à disposition pour ceux que ça intéresse:

Pour infos matériel ESP8266 (ESP12E) + BME280 + BH1750

Code: [Select]
/*********
  Project: BME Weather Web server using NodeMCU
  Implements Adafruit's sensor libraries.
  Complete project is at: http://embedded-lab.com/blog/making-a-simple-weather-web-server-using-esp8266-and-bme280/
 
  Modified code from Rui Santos' Temperature Weather Server posted on http://randomnerdtutorials.com 
*********/

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <BH1750.h>
Adafruit_BME280 bme; // I2C
BH1750 lightMeter;
// Replace with your network details
const char* ssid = "nom de votre reseau";
const char* password = "mot de passe reseau";
float h, t, p, pin, dp, lux;
char temperatureFString[6];
char dpString[6];
char humidityString[6];
char pressureString[7];
char pressureInchString[6];
char luminositeString[6];
// Web Server on port 80
WiFiServer server(80);

// only runs once on boot
void setup() {
  // Initializing serial port for debugging purposes
  Serial.begin(9600);
  delay(10);
  Wire.begin(D3, D4);
  Wire.setClock(100000);
  // Connecting to WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Starting the web server
  server.begin();
  Serial.println("Web server running. Waiting for the ESP IP...");
  delay(10000);
 
  // Printing the ESP IP address
  Serial.println(WiFi.localIP());
  Serial.println(F("BME280 test"));
  lightMeter.begin();
  Serial.println(F("BH1750 Test begin"));
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

void getWeather() {
 
    h = bme.readHumidity();
    t = bme.readTemperature();
    lux = lightMeter.readLightLevel();
    t = t;
    dp = t-0.36*(100.0-h);
   
    p = bme.readPressure()/100.0F;
    pin = 0.02953*p;
    dtostrf(t, 5, 1, temperatureFString);
    dtostrf(h, 5, 1, humidityString);
    dtostrf(p, 6, 1, pressureString);
    dtostrf(pin, 5, 2, pressureInchString);
    dtostrf(dp, 5, 1, dpString);
    dtostrf(lux, 5, 1, luminositeString);
    delay(100);
 
}

// runs over and over again
void loop() {
  // Listenning for new clients
  WiFiClient client = server.available();
 
  if (client) {
    Serial.println("New client");
    // bolean to locate when the http request ends
    boolean blank_line = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
       
        if (c == '\n' && blank_line) {
            getWeather();
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            client.println();
            // your actual web page that displays temperature
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
            client.println("<body><h1>Bienvenue sur mon serveur meteo</h1>");
            client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
            client.println("<h3>Temperature = ");
            client.println(temperatureFString);
            client.println("&deg;C</h3><h3>Humidite = ");
            client.println(humidityString);
            client.println("%</h3><h3>Approx. Point de rose = ");
            client.println(dpString);
            client.println("&deg;C</h3><h3>Luminosite = ");
            client.println(luminositeString);
            client.println("Lux</h3><h3>Pressure = ");
            client.println(pressureString);
            client.println("hPa (");
            client.println(pressureInchString);
            client.println("Inch)</h3></td></tr></tbody></table></body></html>"); 
           
            break;
        }
        if (c == '\n') {
          // when starts reading a new line
          blank_line = true;
        }
        else if (c != '\r') {
          // when finds a character on the current line
          blank_line = false;
        }
      }
    } 
    // closing the client connection
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");
  }
}


Merci encore pour vos renseignements

Cordialement

Go Up