38KHz IR Transmitter & Receiver | Arduino Remote Control Modules
38KHz IR Transmitter & Receiver Modules - Remote-Control Building Blocks for Arduino, Robots, and Smart Devices The 38KHz IR Transmitter and Receiver modules are compact infrared c ommunication boards for learning, prototyping, and adding simple remote-control links to embedded projects. The transmitter variant sends modulated infrared light, while the receiver variant uses a 1838-style 38KHz IR receiver to detect remote-control signals and output a digital logic signal for a microcontroller. These modules are useful for Arduino lessons, robot control, appliance-style remote inputs, object-triggered experiments, and quick IR communication demos. They work well with compact controller boards such as the ELAB Nano V3, breadboard setups built around the MB 102 Breadboard Kit, and classroom builds that use an UNO R3 Prototype Expansion Board. For a small wireless-control lab, you can also pair the receiver with LEDs, relays, buzzers, or motor-driver circuits to turn remote button presses into visible actions. The receiver module listed on this page operates from 5V, provides a digital data output, includes a data indicator, and has two mounting holes for easier installation. The transmitter SKU, TB-IR-Transmitter, is sold as the IR transmitter option on the same product page and is intended to generate 38KHz IR output under microcontroller control. For MicroPython and compact-host experiments, the Raspberry Pi Pico W is another practical controller choice. Technical Specifications Parameter Value Product Type 38KHz infrared transmitter and receiver module variants Requested SKU TB-IR-Transmitter Available Variants IR Transmitter x2; IR Receiver x2 Receiver Sensor Type 1838-style 38KHz remote-control receiver Receiver Working Voltage 5V DC Receiver Output Type Digital output Receiver Pins DAT, VCC, GND Carrier Frequency 38KHz nominal IR remote-control carrier Transmitter Function IR LED output for 38KHz modulated control signals Indicator Receiver data indicator listed on current product page Mounting Two fixing holes on receiver module Mounting-Hole Aperture Approx. 3.1mm, per current listing Compatible Controllers Arduino-compatible boards, RP2040 boards, ESP32 boards, and other 5V/logic-compatible hosts Typical Software Arduino IRremote, MicroPython pulse timing, custom timer/PWM code Typical Applications IR remote decoding, robot control, smart-home demos, short-range device commands Board Layout & Label Guide DAT - Digital receiver output pin. Connect this pin to a microcontroller GPIO input when using the receiver module. VCC - 5V DC positive supply input for the receiver module. GND - Ground reference for the module and host controller. 1838 Receiver Window - Front-facing IR detection area for 38KHz remote-control signals. IR Transmitter LED - Infrared emitting element on the transmitter variant, intended to face the target receiver. Data Indicator - Receiver-side indicator that helps show incoming signal activity during testing. Mounting Holes - Two fixing holes make it easier to secure the receiver board in a robot chassis, test fixture, or panel. Signal Direction - Keep the transmitter LED pointed toward the receiver window for the best communication range. Power Note - Share a common ground between the module and host microcontroller before reading or driving signal pins. Logic-Level Note - Confirm input-voltage tolerance if pairing a 5V-powered receiver module with a 3.3V-only controller. Application Scenarios 1. Decode an IR Remote Button with Arduino This Arduino example uses the IRremote library to read a 38KHz remote-control signal from the receiver module and print the decoded command. #include const int receiverPin = 2; void setup() { Serial.begin(115200); IrReceiver.begin(receiverPin, ENABLE_LED_FEEDBACK); } void loop() { if (IrReceiver.decode()) { Serial.print("Command: 0x"); Serial.println(IrReceiver.decodedIRData.command, HEX); IrReceiver.resume(); } } 2. Send a NEC-Style IR Command from Arduino Connect the IR transmitter module signal input to a PWM-capable Arduino pin, then use the IRremote library to send a repeatable command for testing. #include const int transmitterPin = 3; void setup() { IrSender.begin(transmitterPin); } void loop() { IrSender.sendNEC(0x00FF, 0x45, 0); delay(1000); } 3. Remote-Controlled LED Output This sketch turns a visible LED on or off when a selected IR command is received, which is handy for a first remote-control lab. #include const int receiverPin = 2; const int ledPin = 13; const uint8_t toggleCommand = 0x45; bool ledState = false; void setup() { pinMode(ledPin, OUTPUT); IrReceiver.begin(receiverPin, ENABLE_LED_FEEDBACK); } void loop() { if (IrReceiver.decode()) { if (IrReceiver.decodedIRData.command == toggleCommand) { ledState = !ledState; digitalWrite(ledPin, ledState ? HIGH : LOW); } IrReceiver.resume(); } } 4. MicroPython Pulse Detection on RP2040 This simple MicroPython routine watches the receiver output and reports falling edges, which is useful when checking wiring before writing a full decoder. from machine import Pin import time ir_pin = Pin(15, Pin.IN) last = ir_pin.value() while True: current = ir_pin.value() if last == 1 and current == 0: print("IR activity detected") last = current time.sleep_ms(1) 5. IR Beam Break Trigger Point the transmitter toward the receiver and use the receiver output as a basic beam-break input for robot lanes, counting demos, or simple alarm prototypes. const int irInput = 2; const int alarmLed = 13; void setup() { pinMode(irInput, INPUT); pinMode(alarmLed, OUTPUT); } void loop() { int signal = digitalRead(irInput); digitalWrite(alarmLed, signal == LOW ? HIGH : LOW); delay(10); } 6. Serial Event Logger for Remote Testing Use this minimal sketch during enclosure testing to see whether remote commands are still detected after the module is mounted. #include const int receiverPin = 2; void setup() { Serial.begin(115200); IrReceiver.begin(receiverPin); } void loop() { if (IrReceiver.decode()) { Serial.print("Protocol="); Serial.print(IrReceiver.decodedIRData.protocol); Serial.print(" Address=0x"); Serial.print(IrReceiver.decodedIRData.address, HEX); Serial.print(" Command=0x"); Serial.println(IrReceiver.decodedIRData.command, HEX); IrReceiver.resume(); } } Packing List 2 x IR Transmitter Module when SKU TB-IR-Transmitter / variant IR Transmitter x2 is selected 2 x IR Receiver Module when SKU TB-IR-Receiver / variant IR Receiver x2 is selected FAQ Q: What does SKU TB-IR-Transmitter include?A: It corresponds to the IR Transmitter x2 variant on this product page. Q: Is this page for both transmitter and receiver modules?A: Yes. The product page contains both IR transmitter and IR receiver variants, so choose the variant that matches your project. Q: What carrier frequency is this module intended for?A: It is intended for common 38KHz infrared remote-control communication. Q: What voltage does the receiver module use?A: The current listing specifies 5V DC for the receiver module. Q: What pins are used on the receiver module?A: The receiver wiring is DAT for digital output, VCC for 5V positive supply, and GND for ground. Q: Can I use it with Arduino?A: Yes. Arduino-compatible boards can decode receiver output or drive the transmitter with libraries such as IRremote. Q: Can I connect the receiver directly to a 3.3V microcontroller?A: Check the controller input tolerance first. If the module is powered at 5V, use level shifting when the host GPIO is not 5V tolerant. Q: Why is my IR receiver not detecting commands?A: Check VCC/GND wiring, DAT pin assignment, remote-control battery, line of sight, carrier frequency, and whether the transmitter is facing the receiver window.
More you might like
Related
360° IR Transceiver Module: 38kHz Infrared Transmitter & Rec
Related
IR Infrared Transmitter & Receiver Module – 38kHz Digital Se
Related
IR Infrared Transmitter & Receiver Module – 38kHz Digital Se
Related