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");
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

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