aide pour esp8266 (esp12)

Bonjour a tous,

Je souhaite commencer la programmation et j'ai acheté un nodemcu esp8266.
J'ai réussi a réaliser les programmes de base (faire clignoter la led bleu intégré et une led déporté).
Lorsque je veut crée le programme pour pouvoir interroger l'esp8266 a distance (avec adresse IP), je n'y arrive pas.
Arduino me donne bien l'adresse IP de l'esp8266 mais quand je souhaite l’interroger en tapant cette adresse sur mon navigateur internet, il ne le trouve pas.
il doit y avoir quelque chose que je ne doit pas faire, mais je ne sais pas quoi.
Pourriez-vous m'aider?
merci d'avance
Cordialement

Voici le code injecter dans mon esp8266:

#include <ESP8266WiFi.h>

WiFiServer server(80);

void setup()
{
Serial.begin(9600);
WiFi.disconnect();
delay(3000);
Serial.println("START");
WiFi.begin(" nom de ma box","mots de passe");
while ((!(WiFi.status() == WL_CONNECTED))){
delay(300);
Serial.print("..");

}
Serial.println("Connected");
Serial.println("Your IP is");
Serial.println((WiFi.localIP().toString()));
server.begin();

}

void loop()
{

WiFiClient client = server.available();
if (!client) { return; }
while(!client.available()){ delay(1); }
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("");
client.println("");
client.println("BIENVENUE DANS CE SERVEUR");
client.println("");
client.stop();
delay(1);
client.flush();

Tu as essayé un exemple de base ?
WifiWebServer par exemple.

@+

Merci de lire aussi comment utiliser le forum et poster du code

Il faudrait savoir comment vous essayez de vous connecter

Bonsoir hbachetti

Ce code fait partie de la base "exemple wifiwebserver" d'arduino.

j'ai mis a jour le firmware de l'ESP8266 ESP-12E en version 0.9.6, mais ce ne fonctionne toujours pas.
le code ce téléverse correctement, il m'envoie l'adresse IP de l'ESP8266, il est bien reconnue sur mon réseau local avec cette même adresse IP.
Mais impossible d’accès a distance a cette adresse IP.

Bonsoir

Mais impossible d'accès a distance a cette adresse IP.

'à distance' ...à partir d'une machine sur le même réseau local ou pas ?

mecamaniack:
Bonsoir hbachetti

Ce code fait partie de la base "exemple wifiwebserver" d'arduino.

j'ai mis a jour le firmware de l'ESP8266 ESP-12E en version 0.9.6, mais ce ne fonctionne toujours pas.
le code ce téléverse correctement, il m'envoie l'adresse IP de l'ESP8266, il est bien reconnue sur mon réseau local avec cette même adresse IP.
Mais impossible d’accès a distance a cette adresse IP.

Bonsoir
tu t'es basé sur quoi pour mettre à jour 'le firmware en V 0.9.6" ?
Sauf erreur de ma part l'esp8266 est géré au travers de l'IDE arduino actuellement avec la version 2.4.2

oui, j'essaie de me connecté a partir d'un appareil sur le même réseau local.

donc l'esp8266 n'as pas la bonne mise a jour. mince le tuto que j'ai suivi ne devais pas être tous jeune!!!!

avez-vous une procédure et le fichier afin de mettre a jours correctement mon ESP

Bonsoir

firmware 0.96 ?? (firmware NodeMCU ? firmware AT ?)

Je pense qu'il y a une confusion : pour utiliser une ESP8266 sous IDE Arduino il n'y a pas de firmware a charger préalablement dans l'ESP8266, la fonctionTéléverser se chargera d'envoyer le bon firmware avec le résultat de compilation de ton code.
Tout firmware est écrasé . pas de mise à jour de l'ESP8266 à faire, un ESP8266 'vierge , sorti d'usine, convient.

Artouste fait référence à la version de l'outil additionnel permettant la prise en charge de l'ESP8266 par l'IDE Arduino, c'est la vesion qui apparait dans le gestionnaire de cartes de l'IDE Arduino.

al1fch:
Je pense qu'il y a une confusion : pour utiliser une ESP8266 sous IDE Arduino il n'y a pas de firmware a charger préalablement dans l'ESP8266,

Euh il faut s’assurer d’avoir le bon environnement (OS) sur son ESP quand même

Euh il faut s'assurer d'avoir le bon environnement (OS) sur son ESP quand même

Non, je ne pense pas , l'IDE Arduino avec les outils ESP embarque ce qu'il faut dans l'ensemble des binaires flashés.. d'ou la taille...
(on pourrait dire que le firmware est inclus dans le 'paquet' transmis par Téléversement)

On peut faire l'essai en effaçant préalablement totalement (toutes zones) un ESP avant utilisation sous IDE Arduino (je l'ai fait plusieurs fois) , voire (je n'ai pas fait l'essai) en soudant une puce Flash SPI neuve.
Le code de base est figé en ROM (premier étage de bootloader + qq fonctions)

Avec l'ESP8266 sous IDE Arduino tout est rechargé , reflashé à chaque fois , sur cette base inamovible

donc en gros je n'ai pas besoin de mettre a jours mon ESP8266!le firmware est toujours vérifié a chaque téléversement
je ne sais toujours pas pourquoi je n'arrive pas a me connecter a mon ESP12E a distance?
pourtant j'ai essayer avec des codes différents mais toujours le même résultat.

al1fch:
Non, je ne pense pas , l'IDE Arduino avec les outils ESP embarque ce qu'il faut dans l'ensemble des binaires flashés.. d'ou la taille...

Oui je suis d'accord que le binaire généré intègre tout mais si vous avez flashé avec un OS diff&rent (genre commandes AT ou LUA) pouvez vous directement uploader depuis l'IDE (le boot loader ne fonctionne pas de la même façon ??)

j'avoue ne jamais avoir essayé...

Un ESP préalablement flashé avec un firmware AT, LUA (NodeMCU, µPython.....est traité sans aucune difficulté par l'IDE Arduino.
Peu importent les flashages antérieurs puisque on fait appel au bootloader primaire inamovible présent en 'mémoire morte' dans l'ESP8266.
Les choses sont içi initiées à un niveau inférieur à ce qu'içi on appelle firmware
Le bootlader de bas niveau est unique , 'universel' pour toutes les exploitations de l'ESP, figé en ROM il n'y a pas à craindre d'effacement.
Sur ce plan là on ne peut pas 'briquer' eun ESP8266.
Il suffit d'une bonne combinaison de GPIOs au reset pour activer ce bootloader toujours disponible.
L'IDE fait cela et , mis à part des zones spécifiques type NVRAM que l'on peut désirer préserver, tout est effacé et reflaché

Très bien - j’avais jamais essayé !

Merci pour vos information, ça y est j'ai réussi a faire fonctionner mon ESP12E avec un capteur BME280 en serveur!!!!! :slight_smile: :slight_smile: :slight_smile:

Maintenant j'aimerais savoir comment compiler deux codes différent car je souhaite ajouter un capteur BH1750 en plus du BME280.

merci d'avance

Cordialement

mecamaniack:
Maintenant j'aimerais savoir comment compiler deux codes différent car je souhaite ajouter un capteur BH1750 en plus du BME280.

il n'y a qu'un code qui tourne... faut que ce code prenne en charge le BH1750 et le BME280...

j'ai ce code pour mon BME280:

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme; // I2C

// Replace with your network details
const char* ssid = "SSID";
const char* password = "mots de passe";
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);

// 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"));

 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>");  
           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.");
 }
}

Je voudrais incorporer le code pour mon BH1750:

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;


void setup(){

 Serial.begin(9600);

 // Initialize the I2C bus (BH1750 library doesn't do this automatically)
 Wire.begin(D1, D2);
 // On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);

 lightMeter.begin();

 Serial.println(F("BH1750 Test begin"));

}


void loop() {

 uint16_t lux = lightMeter.readLightLevel();
 Serial.print("Light: ");
 Serial.print(lux);
 Serial.println(" lx");
 delay(1000);

}

.

pourriez-vous m'expliquer comment compiler les deux.

Merci d'avance

corrigez votre post ci dessus et rajoutez les code tags autour du code:
[code]`` [color=blue]// votre code ici[/color] ``[/code].

ça doit ressembler à cela:// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l’IDE avant de copier le code pour qu’il soit indenté correctement)

Je voulais , mais l'onglet "code" n'apparaît pas au niveau de la fenêtre de réponse rapide.

mecamaniack:
Je voulais , mais l'onglet "code" n'apparaît pas au niveau de la fenêtre de réponse rapide.

Et ça vous empêche de les taper sur votre clavier ?...