Note

Bonjour, bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi & Arduino & ESP32 sur Facebook ! Plongez plus profondément dans 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 & 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 spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de fêtes.

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

7.2 Contrôle Bluetooth de LED RGB

Ce projet est une extension d’un projet précédent (7.1 Bluetooth), ajoutant des configurations de LED RGB et des commandes personnalisées telles que « led_off », « red », « green », etc. Ces commandes permettent de contrôler la LED RGB en envoyant des commandes depuis un appareil mobile utilisant LightBlue.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit de démarrage ESP32

320+

ESP32 Starter Kit

Vous pouvez également les acheter séparément aux liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

ESP32 carte

Acheter

Extension de caméra ESP32

ACHETER

Plaque d’essai

Acheter

Fils de connexion

Acheter

Résistance

Acheter

LED RVB

Acheter

Étapes de fonctionnement

  1. Construisez le circuit.

    ../../_images/rgb_pin.jpg

    La LED RGB a 4 broches : la broche longue est la cathode commune, qui est généralement connectée à la masse ; la broche gauche à côté de la broche la plus longue est le rouge ; et les deux broches à droite sont le vert et le bleu.

    ../../_images/2.3_color_light_bb.png
  2. Ouvrez le fichier 7.2_bluetooth_rgb_led.ino situé dans le répertoire esp32-starter-kit-main\c\codes\7.2_bluetooth_rgb_led, ou copiez le code dans l’IDE Arduino.

  3. Pour éviter les conflits de UUID, il est recommandé de générer aléatoirement trois nouveaux UUID en utilisant le Online UUID Generator fourni par le Bluetooth SIG, et de les remplir dans les lignes de code suivantes.

    Note

    Si vous avez déjà généré trois nouveaux UUID dans le projet 7.1 Bluetooth, alors vous pouvez continuer à les utiliser.

    #define SERVICE_UUID           "your_service_uuid_here"
    #define CHARACTERISTIC_UUID_RX "your_rx_characteristic_uuid_here"
    #define CHARACTERISTIC_UUID_TX "your_tx_characteristic_uuid_here"
    
    ../../_images/uuid_generate.png
  4. Sélectionnez la carte et le port corrects, puis cliquez sur le bouton Upload.

  5. Après avoir téléchargé le code avec succès, activez le Bluetooth sur votre appareil mobile et ouvrez l’application LightBlue.

    ../../_images/bluetooth_open.png
  6. Sur la page Scan, trouvez ESP32-Bluetooth et cliquez sur CONNECT. Si vous ne le voyez pas, essayez de rafraîchir la page plusieurs fois. Lorsque « Connected to device! » apparaît, la connexion Bluetooth est réussie. Faites défiler vers le bas pour voir les trois UUID définis dans le code.

    ../../_images/bluetooth_connect.png
  7. Appuyez sur l’UUID d’envoi, puis définissez le format des données sur « UTF-8 String ». Vous pouvez maintenant écrire ces commandes : « led_off », « red », « green », « blue », « yellow » et « purple » pour voir si la LED RGB répond à ces instructions.

    ../../_images/bluetooth_send_rgb.png

Comment ça marche ?

Ce code est une extension d’un projet précédent (7.1 Bluetooth), ajoutant des configurations de LED RGB et des commandes personnalisées telles que « led_off », « red », « green », etc. Ces commandes permettent de contrôler la LED RGB en envoyant des commandes depuis un appareil mobile utilisant LightBlue.

Analysons le code étape par étape :

  • Ajoutez de nouvelles variables globales pour les broches LED RGB, les canaux PWM, la fréquence et la résolution.

    ...
    
    // Définir les broches de la LED RGB
    const int redPin = 27;
    const int greenPin = 26;
    const int bluePin = 25;
    
    ...
    
  • Dans la fonction setup(), les canaux PWM sont initialisés avec la fréquence et la résolution prédéfinies. Les broches LED RGB sont ensuite attachées à leurs canaux PWM respectifs.

    void setup() {
        ...
    
        ledcAttach(redPin, freq, resolution);
        ledcAttach(greenPin, freq, resolution);
        ledcAttach(bluePin, freq, resolution);
    }
    
  • Modifiez la méthode onWrite dans la classe MyCharacteristicCallbacks. Cette fonction écoute les données provenant de la connexion Bluetooth. En fonction de la chaîne reçue (comme "led_off", "red", "green", etc.), elle contrôle la LED RGB.

    // Définir les callbacks de la caractéristique BLE
    class MyCharacteristicCallbacks : public BLECharacteristicCallbacks {
        void onWrite(BLECharacteristic *pCharacteristic) {
            std::string value = std::string(pCharacteristic->getValue().c_str());
            if (value == "led_off") {
                setColor(0, 0, 0); // éteindre la LED RGB
                Serial.println("RGB LED turned off");
            } else if (value == "red") {
                setColor(255, 0, 0); // Rouge
                Serial.println("red");
            }
            else if (value == "green") {
                setColor(0, 255, 0); // Vert
                Serial.println("green");
            }
            else if (value == "blue") {
                setColor(0, 0, 255); // Bleu
                Serial.println("blue");
            }
            else if (value == "yellow") {
                setColor(255, 150, 0); // Jaune
                Serial.println("yellow");
            }
            else if (value == "purple") {
                setColor(80, 0, 80); // Violet
                Serial.println("purple");
            }
        }
    };
    
  • Enfin, une fonction est ajoutée pour définir la couleur de la LED RGB.

    void setColor(int red, int green, int blue) {
        // Pour les LEDs RGB à anode commune, utilisez 255 moins la valeur de la couleur
        ledcWrite(redPin, red);
        ledcWrite(greenPin, green);
        ledcWrite(bluePin, blue);
    }
    

En résumé, ce script permet un modèle d’interaction de contrôle à distance, où l’ESP32 fonctionne comme un serveur Bluetooth Low Energy (BLE).

Le client BLE connecté (comme un smartphone) peut envoyer des commandes sous forme de chaînes pour changer la couleur d’une LED RGB. L’ESP32 renvoie également la chaîne reçue au client, permettant à ce dernier de savoir quelle opération a été effectuée.