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