Bonjour les forumeurs et les forumeuses ![]()
La question idiote du jour, au sujet de l'ESP8266 (format shield avec usb intégré type Wemos R1 D1 made in chinois), j'ai pas mal galéré mais j'ai réussi à me servir de mon ESP8266 pour piloter une LED (ou récupérer une température) avec le code suivant (pour piloter une led)
#include <ESP8266WiFi.h>
const char* ssid = "NOM DU RESEAU";
const char* password = "MP";
int ledPin = 16;
WiFiServer server(80);
void setup()
{
// initialisation de la communication série
Serial.begin(115200);
delay(100);
// initialisation de la sortie pour la led
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Connexion wifi
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// connection en cours ...
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// Wifi connecter
Serial.println("WiFi connecter");
// Démmarrage du serveur.
server.begin();
Serial.println("Serveur demarrer !");
// Affichage de l'adresse IP
Serial.print("Utiliser cette adresse URL pour la connexion :");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
WiFiClient client;
// Vérification si le client est connecter.
client = server.available();
if (!client)
{
return;
}
// Attendre si le client envoie des données ...
Serial.println("nouveau client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH); // allumer la led
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW); // éteindre la led
value = LOW;
}
// Réponse
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Etat de la led : ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("
");
client.println("<a href=\"/LED=ON\"\"><button>Allumer </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Eteindre </button></a>
");
client.println("</html>");
delay(1);
Serial.println("Client deconnecter");
Serial.println("");
}
Une fois le code téléverser, j’appuie sur le bouton reset de l'ESP (sinon ça ne marche pas).
Le code fonctionne bien, j'affiche la page avec l'adresse ip 192.168...... je pilote la led MAIS...
Au bout de quelques minutes, si je tente d’accéder de nouveau à l'adresse ip 192.168....., j'ai la page, échec de la connexion blablablabla.
Je fais un reset et là miracle, ça fonctionne pour x temps puis crash de nouveau.
Je précise que je teste avec la box sur mon bureau (moins d'un mètre donc pas de problème de wifi).
Si quelqu'un à une idée du pourquoi du comment...

