electronique:esp:esp32-commander-led-wifi

Commander une LED Wifi

Commander la LED intégrer aux boards basées sur ESP866 par une page HTML via une connexion Wifi.

Nous avons vu dans le chapitre [..] comment la carte ESP 8266 peut se connecter à un point d'accès Wifi. Nous nous fixons comme objectif de connecter l'ESP 8266 au même réseau qu’un smartphone ou un ordinateur pour commander une LED. Pour ce faire, nous allons configurer l'ESP 8266 afin d'offrir un service. Dans un premier temps nous offrirons une page Web à l'utilisateur. Elle permettra de commander la LED incorporée sur votre plaque de développement ESP 8266.

 Carte ESP-12F avec la LED BUILT IN allumée

Sur la carte de développement, comme l'ESP-12F, est soudée une LED. Cette LED est celle qui clignote faiblement quand vous téléversez une programme. C'est également celle qui clignote avec le programme blink led. Techniquement parlant, cette LED est branchée sur le port GPIO 16. Mais il n'est pas forcément nécessaire de connaître cette valeur par cœur car nous utiliserons dans le code la constante (mot clé défini dans l'IDE ARDUINO) LED_BUILTIN.

..

Jusqu'à présent nous avons utiliser l'ESP pour présenter une page Web, fournir un moyen de commander la LED et informer de l'état de la LED. Dans les objets connectés il n'est pas nécessaire de présenter une page Web car celle-ci est fournie par un service centralisé comme Domoticz ou OpenHAB.

#include <ESP8266WiFi.h>
 
const char* ssid = "MON-REZO-WIFI";
const char* password = "leMotDePasseDuRezoWifi";
 
int ledPin = 16;
 
// Déclaration du Server sur le port 80
WiFiServer server(80);
 
void setup() 
{
  // initialisation de la communication série
  Serial.begin(115200);
 
  delay(100);
 
  // initialisation de la sortie pour la LED 
  int valeurLED = HIGH;
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, valeurLED);
 
  // Connexion wifi
  Serial.println();
  Serial.print("Connexion au réseau Wifi ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  // connexion  en cours ...
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
 
  // Wifi connecter
  Serial.println("Réseau WIFI connecté");
 
  // Démmarrage du serveur.
  server.begin();
  Serial.println("Serveur démarré !");
 
  // 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() {
 
  // Attente de connexion d'un client
  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();
 
  if (request.indexOf("/LED=ON") != -1)  {
    valeurLED = LOW;
    digitalWrite(ledPin, valeurLED); // allumer la led
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    valeurLED = HIGH;
    digitalWrite(ledPin, valeurLED); // éteindre la led
  }
 
 
  // Réponse
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: application/json");
  client.println("");
 
  if(valeurLED == LOW) {
    client.println("{\"LED\": \"on\"}");
  } else {
    client.println("{\"LED\": \"off\"}");
  }
 
  Serial.println("Client déconnecté");
  Serial.println("");
 
}
  • electronique/esp/esp32-commander-led-wifi.txt
  • Dernière modification : 2022/03/25 19:52
  • de Cédric ABONNEL