XIAO-ESP32S3 Wi-Fi LED Code

From
Jump to: navigation, search

ESP32[edit]

https://www.raspberryme.com/fonctions-utiles-de-la-bibliotheque-wi-fi-esp32-arduino-ide/

ESP32 LED user[edit]

Variante avec clignotement
Allumer & éteindre la LED user (orange)

#define USER_LED 21

void setup() {
  pinMode(USER_LED, OUTPUT);
}

void loop() {
  digitalWrite(USER_LED, LOW);  // Allume la LED
  delay(1000);                  // Attendre 1 seconde
  digitalWrite(USER_LED, HIGH); // Éteint la LED
  delay(1000);                  // Attendre 1 seconde
}

La LED s’allume lorsque la broche est mise à **LOW** (niveau bas) et s’éteint lorsqu’elle est mise à **HIGH**.

⚠️ Petite subtilité : sur le XIAO ESP32S3, la LED s’allume quand on écrit LOW et s’éteint avec HIGH (logique inversée).

// Définir la broche de la LED utilisateur
#define USER_LED 21  // GPIO21 est généralement utilisé pour la LED utilisateur

void setup() {
  pinMode(USER_LED, OUTPUT);  // Définir la broche comme sortie
  digitalWrite(USER_LED, LOW); // Allumer la LED (LOW = ON)
}

void loop() {
  // La LED reste allumée
}

ESP32 Code variante 1[edit]

#include <WiFi.h>

const char* ssid = "monsid";
const char* password = "monpass";

WiFiServer server(80);

// Broche de la LED utilisateur sur XIAO ESP32S3
#define USER_LED 21

void setup()
{
    Serial.begin(115200);
    pinMode(USER_LED, OUTPUT);      // Définir la broche LED comme sortie
    digitalWrite(USER_LED, HIGH);   // Éteindre la LED au démarrage

    delay(10);

    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
    server.begin();
}

void loop(){
    WiFiClient client = server.available();

    if (client) {
        Serial.println("New Client.");
        String currentLine = "";

        while (client.connected()) {
            if (client.available()) {
                char c = client.read();
                Serial.write(c);

                if (c == '\n') {
                    if (currentLine.length() == 0) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-type:text/html");
                        client.println();

                        client.print("Click <a href=\"/H\">here</a> to turn the LED ON.<br>");
                        client.print("Click <a href=\"/L\">here</a> to turn the LED OFF.<br>");
                        client.println();
                        break;
                    } else {
                        currentLine = "";
                    }
                } else if (c != '\r') {
                    currentLine += c;
                }

                if (currentLine.endsWith("GET /H")) {
                    digitalWrite(USER_LED, LOW);   // Allumer la LED
                }
                if (currentLine.endsWith("GET /L")) {
                    digitalWrite(USER_LED, HIGH);  // Éteindre la LED
                }
            }
        }
        client.stop();
        Serial.println("Client Disconnected.");
    }
}

Nouveau contenu HTML stylisé
Remplace la partie où tu envoies la réponse HTTP dans ton code par ceci :

Quand tu accèdes à l’adresse IP de ton XIAO ESP32S3, tu verras une page avec :
Un fond clair
Un titre centré
Deux boutons bleus modernes pour allumer/éteindre la LED

client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();

client.println("<!DOCTYPE html>");
client.println("<html lang='fr'>");
client.println("<head>");
client.println("<meta charset='UTF-8'>");
client.println("<meta name='viewport' content='width=device-width, initial-scale=1.0'>");
client.println("<title>Contrôle LED XIAO</title>");
client.println("<style>");
client.println("body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding-top: 50px; }");
client.println("h1 { color: #333; }");
client.println(".button { display: inline-block; padding: 15px 30px; margin: 20px; font-size: 18px; color: white; background-color: #007BFF; border: none; border-radius: 8px; text-decoration: none; transition: background-color 0.3s ease; }");
client.println(".button:hover { background-color: #0056b3; }");
client.println("</style>");
client.println("</head>");
client.println("<body>");
client.println("<h1>Contrôle de la LED utilisateur</h1>");
client.println("<a href=\"/H\" class=\"button\">Allumer la LED</a>");
client.println("<a href=\"/L\" class=\"button\">Éteindre la LED</a>");
client.println("</body>");
client.println("</html>");

client.println(); // Fin de la réponse

ESP32 XIAO-ESP32S3[edit]

version amélioré

Grove Base for XIAO 1.PNG XIAO-ESP32S3 1.PNG

Grove Base for XIAO
XIAO-ESP32S3 🛜


LED utilisateur via Wi-Fi.png page html qui permet d'allumer ou éteindre la LED utilisateur de couleur orange

#include <WiFi.h>

const char* ssid = "monsid";
const char* password = "monpass";

WiFiServer server(80);

// Broche de la LED utilisateur sur XIAO ESP32S3
#define USER_LED 21

void setup()
{
    Serial.begin(115200);
    pinMode(USER_LED, OUTPUT);      // Définir la broche LED comme sortie
    digitalWrite(USER_LED, HIGH);   // Éteindre la LED au démarrage

    delay(10);

    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
    server.begin();
}

void loop(){
    WiFiClient client = server.available();

    if (client) {
        Serial.println("New Client.");
        String currentLine = "";

        while (client.connected()) {
            if (client.available()) {
                char c = client.read();
                Serial.write(c);

                if (c == '\n') {
                    if (currentLine.length() == 0) {

                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-type:text/html");
                        client.println();

                        client.println("<!DOCTYPE html>");
                        client.println("<html lang='fr'>");
                        client.println("<head>");
                        client.println("<meta charset='UTF-8'>");
                        client.println("<meta name='viewport' content='width=device-width, initial-scale=1.0'>");
                        client.println("<title>Contrôle LED XIAO</title>");
                        client.println("<style>");
                        client.println("body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding-top: 50px; }");
                        client.println("h1 { color: #333; }");
                        client.println(".button { display: inline-block; padding: 15px 30px; margin: 20px; font-size: 18px; color: white; background-color: #007BFF; border: none; border-radius: 8px; text-decoration: none; transition: background-color 0.3s ease; }");
                        client.println(".button:hover { background-color: #0056b3; }");
                        client.println("</style>");
                        client.println("</head>");
                        client.println("<body>");
                        client.println("<h1>Contrôle de la LED utilisateur</h1>");
                        client.println("<a href=\"/H\" class=\"button\">Allumer la LED</a>");
                        client.println("<a href=\"/L\" class=\"button\">Éteindre la LED</a>");
                        client.println("</body>");
                        client.println("</html>");

                        client.println(); // Fin de la réponse

                        break;
                    } else {
                        currentLine = "";
                    }
                } else if (c != '\r') {
                    currentLine += c;
                }

                if (currentLine.endsWith("GET /H")) {
                    digitalWrite(USER_LED, LOW);   // Allumer la LED
                }
                if (currentLine.endsWith("GET /L")) {
                    digitalWrite(USER_LED, HIGH);  // Éteindre la LED
                }
            }
        }
        client.stop();
        Serial.println("Client Disconnected.");
    }
}