M5stack jednotka IR senzor a vysílač

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ů.

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.

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

Další podobné články