Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy mezi komunikační jednotky patří právě Laser TX a RX. Tyto moduly jsou samostatné prodejné, kdy jedna slouží k příjmu a druhá k vysílání signálů formou viditelného červeného laserového paprsku.

M5stack Laser TX a RX moduly

Pro jeho spojení s M5stack deskou stačí propojit 3 vodiče u každého z modulů se samostatnou M5stack či ESP32 jednotkou/vývojovou deskou, kdy piny GND a VCC jsou stejně zapojeny na obou stranách. Připojíme GND s GND, IN s pinem D36, OUT s pinem D32 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 Laser
// Bezdrátová komunikace laserovým paprskem
// navody.dratek.cz

// připojení potřebné knihovny
#include <M5Stack.h>
// proměnná pro uložení přijatého znaku
char ch;
// nastavení typu připojeného modulu
#define TX
//#define RX

// nastavení čísel propojovacích pinů
#define TX_PIN 32
#define RX_PIN 36

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);
  // nastavení druhé sériové linky, na které bude probíhat komunikace
  Serial2.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
  // vypsání informací o typu zařízení na displej
  M5.Lcd.setTextSize(4);
  M5.Lcd.setTextColor(GREEN);
  M5.Lcd.setCursor(60, 50);
#ifdef RX
  M5.Lcd.print("LASER RX");
#elif defined TX
  M5.Lcd.print("LASER TX");
#endif
  M5.Lcd.setCursor(0, 100);
}

void loop() {
  // část kódu pro RX část
#ifdef RX
  // aktualizace M5 obvodů
  M5.update();
  // kontrola příchozích dat
  if (Serial2.available()) {
    // načtení příchozího znaku
    char ch = Serial2.read();
    // vytištění příchozího znaku na displej
    M5.Lcd.print(ch);
  }
  // kontrola stisknutí tlačítka A
  if (M5.BtnA.wasReleased()) {
    // vymazání displeje a nastavení kurzoru na začátek
    M5.Lcd.clear();
    M5.Lcd.setCursor(0, 0);
  }
  // část kódu pro TX část
#elif defined TX
  // poslání zprávy přes Laser modul,
  // lze použít write i print:
  // Serial2.write('A');
  Serial2.print("Ahoj ");
  // krátká pauza
  delay(50);
#endif
}

Sestřih ze streamu:

Celý záznam:

Na eshopu můžete tento M5stack modul zakoupit zde:
https://dratek.cz/arduino/20939-m5stack-rx-laserovy-prijimac.html
https://dratek.cz/arduino/20940-m5stack-tx-laserovy-vysilac.html

FB tw

Další podobné články