Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním ze základních je IR. Tento modul obsahuje 2 IR diody, kdy jedná slouží k příjmu a druhá k vysílání signálů.

M5stack jednotka IR senzor a vysílač

Pro jeho spojení s M5stack deskou stačí propojit 4 vodiče. Připojíme GND s GND, OUT s pinem D36, IN s pinem D35 a VCC s pinem 5V. Piny IN a OUT můžete připojit i na jiné volné GPIO piny, jen je nutné provést změnu také na začátku programu.

M5stack jednotka IR senzor a vysílač schéma

Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu. Je v něm uvedena ukázka dekódování přijímaného signálu z ovladače na televizi:

// M5 stack a jednotka IR
// Jednotka s IR vysílačem a přijímačem
// navody.dratek.cz

// připojení potřebných knihoven
#include <M5Stack.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
// nastavení propojovacího pinu vstupu
#define irIn 35
// vytvoření objektu přijímače z knihovny
IRrecv irrecv(irIn);
// vytvoření objektu pro dekódování příkazů z knihovny
decode_results results;

void setup() {
  // zahájení komunikace s M5 stack
  M5.begin();
  // zahájení komunikace s napájecím čipem
  M5.Power.begin();
  // vypnutí reproduktoru
  dacWrite(25, 0);
  // povolení příjmu IR signálu
  irrecv.enableIRIn();
  // výpis informace na displej
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.print("Test pro IR prijimac: ");
}

void loop() {
  // kontrola příchozího signálu
  if (irrecv.decode(&results)) {
    // vymazání předchozího tisku
    M5.Lcd.setCursor(0, 25);
    M5.Lcd.fillRect(0, 25, 150, 25, BLACK);
    // načtení výsledku ve formě textu
    String vysledek = uint64ToString(results.value, HEX);
    // dekódování známých kódů na tlačítka
    // a jejich výpis na displej
    if (vysledek.indexOf("E0E020DF") != -1) {
      M5.Lcd.print(" 1");
    }
    else if (vysledek.indexOf("E0E0A05F") != -1) {
      M5.Lcd.print(" 2");
    }
    else if (vysledek.indexOf("E0E0609F") != -1) {
      M5.Lcd.print(" 3");
    }
    else if (vysledek.indexOf("E0E0E01F") != -1) {
      M5.Lcd.print(" Vol Up");
    }
    else if (vysledek.indexOf("E0E0D02F") != -1) {
      M5.Lcd.print(" Vol Down");
    }
    // vytištění celého příchozího kódu, pokud je neznamý
    else {
      M5.Lcd.print(vysledek);
    }
    // obnovení příjmu signálu
    irrecv.resume();
  }
  // krátká pauza před novým během smyčky
  delay(100);
}

Sestřih ze streamu:

Celý záznam:

Na eshopu můžete tento M5stack modul zakoupit zde:
https://dratek.cz/arduino/20928-m5stack-ir-senzor.html

FB tw

Další podobné články