← Retour au portfolio

Projet n°7

Projet 7 – Bandeau LED piloté avec HomeKit (ESP32)

Mon projet est de connecter une bande LED à HomeKit à l'aide d'un ESP32, le service de maison intelligente d'Apple qui vous permet de contrôler les appareils depuis votre iPhone, où que vous soyez. J'ai divisé le projet en trois parties pour tester et mettre en œuvre progressivement le système.
D'abord, je vais tester le code et les connexions avec une seule LED (contrôle on/off). Ensuite, j'implémenterai le PWM (Pulse width Modulation) pour contrôler la luminosité de la LED (de 0 à 100 %).
Deuxième, j'utiliserai une LED RVB, qui est plus complexe puisqu'elle nécessite de contrôler chaque canal de couleur avec PWM via HomeKit.
Final (Plus tard) : Je vais câbler la véritable bande LED. Pour cela, je devrai comprendre précisément ses exigences en matière de tension et de puissance.

J'inclurai toute la documentation, les schémas et le code que j'ai utilisés pour terminer le projet.

Exigences:

  • ESP32-D (pour moi mais vous pouvez utiliser beaucoup d'autres ESP32)
  • Led (pour moi bleue)
  • Résistance 220 Ω
  • 2 fils

1. Essayez avec 1 led (On/Off + PWM)

Schéma ESP32 Avec 1 led Bleue

1. Connexion

Nous connectons la Led (la broche la plus longue de la led est l'anode, le + vous devez la connecter à une résistance de 220 Ω car nous voulons du courant, pas de la tension. et l'autre broche la cathode (-) doit être GND. J'ai branché le (+) sur D15 car il a le PWM.

2. Coder

Pour écrire le code, nous utilisons le AccueilSpan bibliothèque, ce qui simplifie considérablement le développement. Lorsque vous téléchargez le code sur votre ESP32, vous devrez le connecter à votre réseau Wi-Fi. Ouvrez le Moniteur série, tapez « W », puis sélectionnez votre réseau par son numéro et saisissez votre Mot de passe Wi-Fi (SSID). Cette étape est essentielle car l'ESP32 utilisera votre Wi-Fi pour communiquer avec votre iPhone via HomeKit, vous permettant ainsi de contrôler la LED (marche/arrêt, luminosité, couleur, etc.).

#include <Arduino.h>

struct LED : Service::LightBulb {

  int ledPin;
  SpanCharacteristic *power;
  SpanCharacteristic *brightness;

  LED(int ledPin) : Service::LightBulb() {

    power = new Characteristic::On();
    brightness = new Characteristic::Brightness(100);

    this->ledPin = ledPin;

    pinMode(ledPin, OUTPUT);

    // PWM (We need to use ledcAttach it combine ledcAttachPin and ledcSetup with an update)
    ledcAttach(ledPin, 5000, 8);  // 5 kHz, 8 bits

    ledcWrite(ledPin, 255);       // Max power (LED ON)
  }

  boolean update() override {
    if (power->getNewVal()) {
      int level = brightness->getNewVal();  // 0 to 100
      int pwm = map(level, 0, 100, 0, 255); //  0–255
      ledcWrite(ledPin, pwm);
    } else {
      ledcWrite(ledPin, 0);  // LED OFF
    }

    return true;
  }
};

Les principaux fichiers qui contiennent le Bridge (pour permettre à la Led de se connecter à l'application Home)

le code est très strict et suit AccueilSpan règles et LED

#include "HomeSpan.h" 
#include "LED.h"

void setup() {
  // Setup code here, to run once:
  Serial.begin(115200);

  homeSpan.setPairingCode("11122333");
  homeSpan.setQRID("111-22-333");

  homeSpan.begin(Category::Bridges, "HomeSpan Bridge");
       

  new SpanAccessory();
    new Service::AccessoryInformation();
      new Characteristic::Identify();
    new LED(15); 

}

void loop() {
  // Main code here, to run repeatedly:
  homeSpan.poll();
}

🗂️ Télécharger

3. Résultat

2. Essayez avec la LED RVB (On/Off + PWM + Couleurs)

Schéma avec LED RVB

1. Connexion

Chaque couleur de la LED RVB (rouge, vert et bleu) nécessite sa propre résistance. Puisqu'il s'agit d'une LED à cathode commune, la broche commune doit être connectée à GND et je connecte R -> D15, G -> D16, B -> D17 pour rendre plus fluide le code.

2. Coder

C'est presque la même chose, mais nous devons inclure les deux autres couleurs (rouge et vert), attribuer un canal PWM à chacune et faire savoir à HomeKit que cette LED prend en charge le contrôle des couleurs. Je ne montrerai pas un extrait de. je vais juste mettre le lien de téléchargement Ici

3. Résultat

3. Testez avec la bande LED

J'ai reçu la bande LED, le câble d'alimentation à 3 fils (bleu, marron, jaune/vert), et l'alimentation 220V → 5V 8A.

Comme ma bande LED comporte 120 LED, j'ai calculé une consommation électrique maximale d'environ 33,5 W à 5 V. Une alimentation de 8A est donc largement suffisante, ce qui est parfait.

1. Câblez et vérifiez 5V

⚠️ Avertissement de sécurité :

  1. Faire pas connectez les fils 220 V sans connecteurs appropriés.
  2. Utilisez toujours des bornes isolées ou des connecteurs à vis. La manipulation directe de fils nus est extrêmement dangereuse et peut être mortelle.

Pour le câblage :

Connecter +V de l'alimentation électrique au +5V de la bande LED WS2812B.

Connecter V- de l'alimentation électrique à GND de l’ESP32/Arduino et au GND de la bande (généralement le fil blanc).

💡 Conseil: Si vous disposez d'un multimètre, vous devez mesurer la tension de sortie en mode DC : placez la sonde noire sur V- et la sonde rouge allumée V+. Tu devrais lire autour 5V de l’alimentation électrique.

2. Code et Lumière !

Vous pouvez utiliser la librairie FastLED, car elle est simple à utiliser !

#include <FastLED.h>

#define NUM_LEDS 60
#define DATA_PIN 9
#define BRIGHTNESS 170  // 50% brightness (0-255)

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(BRIGHTNESS);

  // Put on every led on the Colors 
  for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Red;
  }

  FastLED.show(); // Put the color 
}

void loop() {
  //Nothing here because the light stay on 
}

3. Ajouter la bibliothèque Homespan

Nous pouvons maintenant voir que le WS2812B fonctionne parfaitement et que le câblage est correct. L'étape suivante consiste à télécharger le AccueilSpan codez la bande LED, ce que je ferai ce week-end !

4. Utilisez Wled natif

J'ai essayé tellement de fois d'ajouter le WS2812B sur HomeKit et après pas mal d'essais j'ai trouvé Wled natif, qu'un outil que vous pouvez installer dans votre ESP32 il suffit d'aller sur ce site et de brancher votre ESP32 sur votre ordinateur portable et c'est fait ! Il vous suffit de connecter votre ESP à Internet et d'installer l'application sur votre téléphone pour contrôler la led !

Installer WLED (vous devez utiliser Chrome)

(C'est l'une des nombreuses animations que vous pouvez réaliser avec .. !)