Programmer un ESP8266 avec Arduino IDE !

Portrait de Anonyme

Avec l'autorisation de brossden qui est l'auteur de ce code !

Il est possible de programmer un ESP8266 ou même une Wemos D1 R1 ou encore tout autre module wifi à base de cette puce comme un autre Arduino. Pour ce faire il faut modifier les préférences de l'IDE Arduino.

Dans "Fichier" puis "Préférences" "Paramêtres"

Au bout de la ligne "URL de gestionnaire des cartes supplémentaires il y a une Icône représentant des fenêtres !

Cliquez sur cette Icône

Un Champs de saisie apparaît, faire un "copier / coller" du texte ci-dessous dans ce champs de saisie

http://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json

Cliquez sur "OK"

Dans "Outils" "Type de Carte" puis tout en haut "gestionnaire de cartes"

attendre quelques instants

Tout en haut dans le deuxième champs après "Type" saisir "ESP8266" puis validez

En dessous un paragraphe commençant pas ESP8266 by ESP8266 ...

Cliquez sur installé, une fois installer vous pouvez programmer ce type de puce comme tout autre carte Arduino !

Le code : Modifiez le SSID et le PASSWORD suivant votre réseau wifi !!

/*  Le serveur affectera les sorties GPIO0 et GPIO2 selon les requètes du client :
 *    http://server_ip/1F affectera GPIO0 à l'état bas  (LED 1 éteinte)
 *    http://server_ip/1O affectera GPIO0 à l'état haut (LED 1 Allumée)
 *    http://server_ip/2F affectera GPIO2 à l'état bas  (LED 2 éteinte)
 *    http://server_ip/2O affectera GPIO2 à l'état haut (LED 2 Allumée)
 *    http://server_ip/?    lecture de l'état des sorties( GPIO0 et GPIO2)
 *    
 *  L'adresse Ip du module ESP8266 sera envoyée sur la sortie série du module
 *  dès que celui-ci sera connecté
 */

#include <ESP8266WiFi.h>
//Définition des varaibles globales et constantes
 int val0;
 int val2;
 const char* ssid = "wolfram69"; // Le nom de votre réseau Wifi
const char* password = "3SL9N0171W";
int Deb,Fin;
String txt;
// Creation d'un serveur Web sur le port standard 100

WiFiServer server(100); /*si vous ne savez pas attribuer un port sur votre BOX internet remplacez 100 par 80*/

void setup() {
  delay(500);
  // Création d'un port série à 115200 bauds
  Serial.begin(115200);
  delay(10);
 
  // Affectations des port GPIO0 et GPIO2 en sorties et à l'état bas
  pinMode(16, OUTPUT);
  digitalWrite(16, 0);
 
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  // Connection au réseau WiFi
  Serial.println();
  Serial.println();
  Serial.print("Connection au réseau Wifi :");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connectee");
 
  // Démarrage du Serveur
  server.begin();
  Serial.println("Serveur demarre");

  // Envoie de l'adresse IP sur le port série
  Serial.println("Adresse Ip du serveur :");
  Serial.println(WiFi.localIP());
  }

void loop() {
  // Vérification de la connection d'un client
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Attente des datas du client
 
  while(!client.available()){
   // delay(10);
  }
 
  // Lecture de la requête du client
  String req = client.readStringUntil('\r');
 // Serial.println(req);
//GET /tata HTTP/1.1
Deb = req.indexOf("GET /")+5;
Fin = req.indexOf(" HTTP/");
txt = req.substring(Deb,Fin);
txt.replace("%20"," ");
Serial.print(txt);

 
  // Interprétation de la requète
 
  if (req.indexOf("1F") != -1)
    {val0 = 1;}
  if (req.indexOf("1O") != -1)
    {val0 = 0;}
  if (req.indexOf("2F") != -1)
    {val2 = 1;}
  if (req.indexOf("2O") != -1)
    {val2 = 0;}

    // Affectation des variables aux sorties correspondantes
   digitalWrite(2, val2);
   digitalWrite(16, val0);

   //Lecture de l'état des sorties
  if (req.indexOf("/?") != -1)
  {
     val0 == digitalRead(16);
     val2 == digitalRead(2);  
  }

  // Création de la page HTML en réponse à la requête
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n ";
  String Retour ="La led1 est ";//nGPIO is now ";
  Retour += (val0)?"Eteinte   ":"Allumee   ";
  Retour += " et La led2 est ";
  Retour += (val2)?"Eteinte   ":"Allumee   ";
  s+=Retour;
  client.print(s);
  Retour = " Reçu "+ Retour;
  Serial.println(Retour);
  client.flush();
  client.flush();
}

Téléversez ce code dans votre module en utilisant le bon type de carte le bon port Com et avec une vitesse de 921600 bauds, si vous rencontrez des problèmes réduisez à  512000 bauds.

Enfin faire un Reset de la carte

la suite sur YouTube !