ir-tv.ino

M5StickC Plus2 (M5Stack) — kit vestible "stick" con ESP32-PICO-V3-02 (SKU K016-P2) · Archivo : ir-tv.ino · Lenguaje : Arduino · Uso : Éteindre un téléviseur avec la LED infrarouge

El LED IR emisor del stick (G19) sustituye mandos: tras captar el código NEC de su tele, el stick lanza POWER en cada pulsación. La navaja suiza de la domótica no conectada.

Hardware necesario

Un M5StickC Plus2 (ESP32-PICO-V3-02, pantalla de 135×240, botones A/B/C, zumbador pasivo en G2, IR + LED rojo en G19, IMU MPU6886, micrófono, batería de 200 mAh). Ninguno para emitir; un receptor IR (TSOP) en G35 para captar sus propios códigos.

Cableado

LED IR interna en G19, apuntar al sensor de la tele (alcance ~5 m). Para capturar: TSOP1838 en G35, pull-up interna.

Funcionamiento

IRremoteESP8266 modula la trama NEC (9 ms + ráfagas de 562 µs) en bit-bang por interrupción sobre el LED. sendNEC(code, 32) reproduce el código exacto capturado. En el Arduino IDE (paquete esp32), placa « M5StickCPlus2 »; biblioteca « M5StickCPlus2 » o M5Unified. En la v2 sin PMIC, mantenga el botón C más de 2 s para encender; HOLD (G4) mantiene la alimentación.

Para ir más lejos

Menú de 6 macros (tele, descodificador, cadena de música) navegado con el botón B, o repetición automática en sueño profundo.

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);
}

← Volver a la ficha