Skip to product information
1 of 4

IR Transmitter

IR Transmitter

SKU:AX22-0038

This AX22-sized board carries a high-efficiency IR26-61C/L302/TR8 940 nm infrared LED on a compact 22 × 22 mm PCB. Designed for 38 kHz modulated signal output, it enables your microcontroller to send commands to TVs, audio systems, projectors, and other IR-controlled devices using standard protocols. An onboard current-limiting resistor and visible TX status LED make it plug-and-play with Arduino IDE, MicroPython PWM output, or MicroBlocks IR blocks. Ideal for DIY remotes, learning systems, or sending simple commands between AX22 boards.
Regular price $3.46
Regular price Sale price $3.46
Sale Sold out
View full details

Technical Details

- 22 mm × 22 mm square
- 4× ⌀2.7 mm Mounting Holes
- Onboard TX status LED
- IR26-61C/L302/TR8 940 nm infrared LED
- 3.3 V, 5.0 V
- Arduino IDE Compatible
- MicroPython Compatible
- MicroBlocks Compatible

Material Datasheet →

Pinout

Technical Resources

IR Transmitter - (AX22-0038)
🖱️ Click & drag to rotate
#include "esp32-rmt-ir.h"  //by junkfix

#define TX_PIN 14

// Set your IR protocol and hex code here
#define IR_BRAND NEC        // Options: NEC, SONY, SAM, RC5, RC6, etc.
#define IR_CODE 0xC1AAFC03  // Your hex code
#define IR_BITS 32          // Number of bits (typically 32 for NEC, 20 for SONY)
#define SEND_INTERVAL 1000  // Milliseconds between sends

void irReceived(irproto brand, uint32_t code, size_t len, rmt_symbol_word_t *item) {
  if (code) {
    Serial.printf("IR %s, code: %#x, bits: %d\n", proto[brand].name, code, len);
  }

  if (true) {  // debug
    Serial.printf("Rx%d: ", len);
    for (uint8_t i = 0; i < len; i++) {
      int d0 = item[i].duration0;
      if (!item[i].level0) { d0 *= -1; }
      int d1 = item[i].duration1;
      if (!item[i].level1) { d1 *= -1; }
      Serial.printf("%d,%d ", d0, d1);
    }
    Serial.println();
  }
}

void setup() {
  Serial.begin(115200);
  irTxPin = TX_PIN;

  Serial.println("IR Transmitter Started");
  Serial.printf("Sending %s code: %#x every %d ms\n",
                proto[IR_BRAND].name, IR_CODE, SEND_INTERVAL);
}

void loop() {
  sendIR(IR_BRAND, IR_CODE, IR_BITS, 1, 1);
  delay(SEND_INTERVAL);
}