Note

Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez au cœur de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux avant-premières.

  • Réductions exclusives : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des concours et des promotions festives.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

LED Contrôlée par Wi-Fi (Point d’Accès)

Ce projet vous permet de contrôler une LED via une interface web. La carte Arduino agit comme un point d’accès Wi-Fi, créant son propre réseau local auquel vous pouvez vous connecter avec un navigateur web. Une fois connecté, vous pouvez naviguer vers l’adresse IP de l’appareil en utilisant le navigateur web, où vous trouverez des options pour allumer et éteindre une LED (connectée à la broche 13 de la carte). Le projet fournit un retour en temps réel sur l’état de la LED via le moniteur série, ce qui facilite le débogage et la compréhension du flux des opérations.

1. Téléchargez le code

Ouvrez le fichier 01-wifi_ap.ino sous le chemin elite-explorer-kit-main\r4_new_feature\01-wifi_ap, ou copiez ce code dans Arduino IDE.

Note

Le support Wi-Fi® est activé via la bibliothèque intégrée WiFiS3 qui est fournie avec l’Arduino UNO R4 Core. L’installation du core installe automatiquement la bibliothèque WiFiS3.

Vous devez encore créer ou modifier arduino_secrets.h, remplacez SECRET_SSID et SECRET_PASS par le nom et le mot de passe de votre point d’accès Wi-Fi. Le fichier doit contenir :

//fichier d'en-tête arduino_secrets.h
#define SECRET_SSID "votrereseau"
#define SECRET_PASS "votremotdepasse"

2. Explication du code

  1. Importation des bibliothèques nécessaires

    Importation de la bibliothèque WiFiS3 pour les fonctionnalités Wi-Fi et de arduino_secrets.h pour les données sensibles comme les mots de passe.

    #include "WiFiS3.h"
    #include "arduino_secrets.h"
    
  2. Configuration et initialisation des variables

    Définir le SSID Wi-Fi, le mot de passe et l’index de clé ainsi que la broche LED et l’état Wi-Fi.

    char ssid[] = SECRET_SSID;
    char pass[] = SECRET_PASS;
    int keyIndex = 0;
    int led =  LED_BUILTIN;
    int status = WL_IDLE_STATUS;
    WiFiServer server(80);
    
  3. Fonction setup()

    Initialiser la communication série et configurer le module Wi-Fi.

    void setup() {
    
      // ... code d'installation ...
      // Créer un point d'accès
      status = WiFi.beginAP(ssid, pass);
      // ... gestion des erreurs ...
      // démarrer le serveur web sur le port 80
      server.begin();
    }
    

    Nous vérifions également si la version du firmware de l’Uno R4 Wi-Fi est à jour. Si ce n’est pas la version la plus récente, une invite de mise à niveau sera affichée. Vous pouvez vous référer à Mettre à jour le firmware du module radio sur votre carte UNO R4 WiFi pour la mise à niveau du firmware.

    ...
    String fv = WiFi.firmwareVersion();
    if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
        Serial.println("Veuillez mettre à jour le firmware");
    }
    ...
    

    Vous pouvez modifier le code suivant afin de pouvoir changer l’adresse IP par défaut d’Arduino.

    WiFi.config(IPAddress(192,48,56,2));
    
  4. Fonction principale loop()

    La fonction loop() dans le code Arduino effectue plusieurs opérations clés, spécifiquement :

    1. Vérification si un appareil s’est connecté ou déconnecté du point d’accès.

    2. Écoute des clients entrants qui font des requêtes HTTP.

    3. Lecture des données du client et exécution des actions basées sur ces données, comme allumer ou éteindre une LED.

    Décomposons la fonction loop() pour rendre ces étapes plus compréhensibles.

    1. Vérification de l’état du Wi-Fi

      Le code vérifie d’abord si l’état du Wi-Fi a changé. Si un appareil s’est connecté ou déconnecté, le moniteur série affichera l’information en conséquence.

      if (status != WiFi.status()) {
        status = WiFi.status();
        if (status == WL_AP_CONNECTED) {
          Serial.println("Device connected to AP");
        } else {
          Serial.println("Device disconnected from AP");
        }
      }
      
    2. Écoute des clients entrants

      WiFiClient client = server.available(); attend les clients entrants.

      WiFiClient client = server.available();
      
    3. Gestion des requêtes clients

      Écoute des clients entrants et leur sert la page web HTML. Lorsque l’utilisateur clique sur les liens « Cliquez ici pour allumer la LED » ou « Cliquez ici pour éteindre la LED » sur la page web servie, une requête HTTP GET est envoyée au serveur Arduino. Spécifiquement, les URL « http://votreAdresse/H » pour allumer la LED et « http://votreAdresse/L » pour l’éteindre seront accédées.

      WiFiClient client = server.available();
      if (client) {
        // ...
        client.println("HTTP/1.1 200 OK");
        client.println("Content-type:text/html");
        client.println();
        client.print("<p style=\"font-size:7vw;\">Click <a href=\"/H\">here</a> turn the LED on<br></p>");
        client.print("<p style=\"font-size:7vw;\">Click <a href=\"/L\">here</a> turn the LED off<br></p>");
        // ...
      }
      

      Le code Arduino écoute ces requêtes GET entrantes. Lorsqu’il détecte GET /H à la fin d’une ligne de texte entrante (en-tête HTTP), il règle la LED connectée à la broche 13 sur HIGH, la allumant effectivement. De même, s’il détecte GET /L, il règle la LED sur LOW, l’éteignant.

      while (client.connected()) {            // boucle tant que le client est connecté
        delayMicroseconds(10);                // Cela est requis pour l'Arduino Nano RP2040 Connect - sinon il bouclera si vite que le SPI ne sera jamais servi.
        if (client.available()) {             // s'il y a des octets à lire du client,
          char c = client.read();             // lire un octet, puis
          Serial.write(c);                    // l'afficher sur le moniteur série
          if (c == '\n') {                    // si l'octet est un caractère de nouvelle ligne
            ...
            }
            else {      // si vous avez une nouvelle ligne, alors effacez currentLine:
              currentLine = "";
            }
          }
          else if (c != '\r') {    // si vous avez autre chose qu'un caractère de retour chariot,
            currentLine += c;      // ajoutez-le à la fin de currentLine
          }
      
          // Vérifiez si la requête client était "GET /H" ou "GET /L":
          if (currentLine.endsWith("GET /H")) {
            digitalWrite(led, HIGH);               // GET /H allume la LED
          }
          if (currentLine.endsWith("GET /L")) {
            digitalWrite(led, LOW);                // GET /L éteint la LED
          }
        }
      

Référence