Programmer ESP8266 en fonctionnement seul

Le module ESP8266 fonctionne avec un arduino, mais il peut également fonctionner de manière autonome grâce à ses deux GPIO.

On peut aisément imaginer qu’un arduino même nano soit bien trop gros pour de petit projet nécessitant le wifi et n’utilisant un nombre limité de GPIO.

Cet article va juste montrer la méthode pour programmer l’ESP8266. Vous allez avoir besoin :

Initialisation du module ESP8266

Dans un précédent article, j’ai traité de la manière d’initialiser le module ESP8266, je vous invite donc à suivre ce lien.

Câblage pour le test

Réaliser le câblage suivant :

programmation esp8266
programmation esp8266

L’alimentation du convertisseur se fait par le port USB lors de la connexion au PC. Pensez à mettre la masse en commun. N’oubliez de mettre à la masse le GPIO0 pour rentrer dans le mode de programmation avant d’alimenter le module, sinon vous allez avoir une erreur de communication lors du reversement.

[table id=14 /]

Une fois les branchement fait, alimenter le module ESP8266.

Programmation de l’ESP8266

Commencer par brancher le convertisseur au PC et démarrer le logiciel Arduino.

Sélection de la carte ESP8266

Sélectionner la carte ESP8266, si elle n’apparaît pas, il faut l’ajouter.

Aller dans Fichier/Préférences et ajouter comme sur la photo : http://arduino.esp8266.com/staging/package_esp8266com_index.json

ajout carte
ajout carte

Aller ensuite dans Outils/Type de carte/Gestionnaire de carte et dans la barre de recherche taper ESP8266 et faite Installer.

ajout nouvelle carte
ajout nouvelle carte

Maintenant que votre carte est installée, dans Outils/Type de carte, sélectionner le module ESP8266 et le port qui correspond à votre convertisseur.

Ajout du script dans le module ESP8266

Pour cet exemple, nous allons utiliser un exemple fourni dans Exemple/ESP8266Wifi/WifiWebServer , cet exemple va permettre d’allumer une led via un navigateur web d’un poste sur le réseau:

/*
 *  This sketch demonstrates how to set up a simple HTTP-like server.
 *  The server will set a GPIO pin depending on the request
 *    http://server_ip/gpio/0 will set the GPIO2 low,
 *    http://server_ip/gpio/1 will set the GPIO2 high
 *  server_ip is the IP address of the ESP8266 module, will be 
 *  printed to Serial when the module is connected.
 */
#include <ESP8266WiFi.h>
const char* ssid = "votre ssid";
const char* password = "votre mot de passe";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // Connect to WiFi network
  Serial.println();
  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");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  
  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  
  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

Téléverser le sketch.

Il se peut que la vitesse ne soit pas 115200, en fonction du module, si la communication ne se fait, changer la vitesse dans Serial.begin(votre vitesse) .

Ouvrez un terminal série, vous allez voir apparaître l’adresse IP, notez la précieusement.

Câblage pour l’utilisation

Pour le câblage du test, rien de bien compliqué :

câblage ESP8266 pour test
câblage ESP8266 pour test

Alimenter la platine.

Utilisation du montage

Dans un navigateur, saisir dans la barre d’adresse (c’est maintenant que vous allez utiliser l’adresse IP notée plus haut) :

  • http://votre_adresse_ip/gpio/0 -> va éteindre la LED
  • http://votre_adresse_ip/gpio/1 -> va allumer la LED

Voila pour ce petit tutoriel, n’hésitez pas à partager, aimer et commenter.

Laisser un commentaire