Enabling IRda on Serial 2



  • I'm trying to enable IRda TX and RX in the configuration for my M5core in Arduino. I saw in the documentation that this is possible: https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/uart.html#api-reference

    However, I don't know what library functions in Arduino I need to call to enable this.

    Here's my code so far:

    #include <M5Stack.h>

    void setup() {

    M5.begin();

    Serial.begin(115200);

    // Serial2.begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin, bool invert)
    Serial2.begin(115200, SERIAL_8N1, 22, 21,0);
    }

    Any pointers on how to enable IRda tx and rx would be much appreciated! OR please show me where to look for the right configuration keyboard/syntax!

    Thank you!



  • @quangan
    Hi Maybe you can refer to this article.

    https://www.esp32.com/viewtopic.php?t=276

    /* IRda transmitter */
    
    //HardwareSerial Serial1(1);
    HardwareSerial Serial2(2); // GPIO 17: TXD U2  +  GPIO 16: RXD U2
    
    void setup() {
        Serial.begin (115200); // (USB + TX/RX) to check
        Serial2.begin(115200); // GPIO 17: TXD U2  +  GPIO 16: RXD U2
    
        //UART_CONF0_REG  Configuration register 0
        //UART0: 0x3FF40020
        //UART1: 0x3FF50020
        //UART2: 0x3FF6E020
    
        WRITE_PERI_REG( 0x3FF6E020 , READ_PERI_REG(0x3FF6E020) | (1<<16 ) | (1<<10 ) );  //UART_IRDA_EN + UART_IRDA_TX_EN  "Let there be light"
        //Serial.print("Reg: "); Serial.println(READ_PERI_REG(0x3FF6E020),BIN);  //For Debug only
    }//setup
    
    void loop() {
        Serial.println("Hello");
        Serial2.println("Hello");
        delay(1000);
    } //loop
    


  • @m5-docs The link should be https://esp32.com/viewtopic.php?t=2766
    (add one 6 to the end)



  • Does anyone know how to 'redirect' the UART on Pin 17 for sending to Pin 9. This since the IR-Led on the M5StickC and others within the M5-Family is build connected to Pin 9. It would be interesting to have that light use the irDA protocol, since it is already available inside it.