ir-tv.ino

M5StickC Plus2 (M5Stack) — kit portable « stick » ESP32-PICO-V3-02 (SKU K016-P2) · Fichier : ir-tv.ino · Langage : Arduino · Usage : Éteindre un téléviseur avec la LED infrarouge

La LED émettrice IR du stick (G19) remplace les télécommandes : après avoir capté le code NEC de votre télé, le stick envoie POWER à chaque appui. Le couteau suisse du domotique non connectée.

Matériel requis

Un M5StickC Plus2 (ESP32-PICO-V3-02, écran 135×240, boutons A/B/C, buzzer passif G2, IR + LED rouge G19, IMU MPU6886, micro, batterie 200 mAh). Aucun pour émettre ; un récepteur IR (TSOP) sur G35 pour capter vos propres codes.

Branchement

LED IR interne sur G19, viser le capteur du télé (portée ~5 m). Pour la capture : TSOP1838 sur G35, pull-up interne.

Fonctionnement

IRremoteESP8266 module la trame NEC (9 ms + bursts 562 µs) en bit-bang piloté par interrupt sur la LED. sendNEC(code, 32) rejoue le code exact capté. Dans l'Arduino IDE (paquet esp32), carte « M5StickCPlus2 » ; bibliothèque « M5StickCPlus2 » ou M5Unified. Sur la v2 sans PMIC, maintenez le bouton C > 2 s pour allumer ; HOLD (G4) maintient l'alimentation.

Pour aller plus loin

Menu de 6 macros (TV, box, chaîne hi-fi) navigable au bouton B, ou répétition automatique en deep sleep.

ir-tv.ino

// LED IR (G19) — bibliotheque IRremoteESP8266 portee ESP32.
// Envoyer POWER NEC : capter d'abord sa telecommande avec le sketch
// IRrecvDumpV2 (recepteur sur G35 en entree) pour les codes reels.
#include <M5Unified.h>
#include <IRremoteESP8266.h>
#include <ir_Send.h>

IRsend irsend(19);            // G19 = LED IR du stick

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  irsend.begin();
  M5.Display.setRotation(1);
  M5.Display.drawString("A = POWER TV", 20, 50, 2);
}

void loop() {
  M5.update();
  if (M5.BtnA.wasPressed()) {
    // Exemple NEC : 0xFFE01F (POWER generique TV) — a remplacer par
    // le code capte sur VOTRE telecommande.
    uint32_t code = 0xFFE01F;
    irsend.sendNEC(code, 32);
    M5.Spk.tone(880, 60);
    M5.Display.fillScreen(TFT_BLACK);
    M5.Display.printf("NEC %06X envoye", (unsigned)code);
  }
  delay(30);
}

← Retour à la fiche