38KHz IR Transmitter & Receiver | Arduino Remote Control Modules
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 communication 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 <IRremote.hpp>
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 <IRremote.hpp>
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 <IRremote.hpp>
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 <IRremote.hpp>
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.
1. General Shipping Information
- We provide premium shipping methods with a tracking number for each order.
- Shipping addresses must be entered in English without special symbols to help the courier company recognize your address in the system. We will ship strictly according to the shipping address you provided. Please notify us of any address change before your order is marked "Shipped" to avoid parcel loss.
- Please contact our customer service staff immediately if you need to cancel or change an order. Once your order has reached "Shipped" status, it can no longer be canceled or changed in any way. To avoid complications, please recheck your shopping cart before checkout.
- We can ship all in-stock orders within 1 business day after your order has been confirmed.
- All items are inspected before dispatch and are carefully hand-packed.
- With standard courier practice, you need to check the contents of the parcel before signing for your goods. Otherwise, we will not be held responsible for any damage that may have occurred in transit.
🚀 Need Faster Shipping?
If you require expedited shipping (Express), please contact our customer support team at info@openelab.io for a customized quote tailored to your location.
2. Shipping Rates & Options
Our shipping rates are calculated based on the order value and destination. Please refer to the tables below for details.
2.1 Germany (Domestic)
| Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|
| Deutsche Post | €0 - €50.00 | €4.95 | 2-4 Business Days |
| Deutsche Post | Over €50.00 | Free | 2-4 Business Days |
|
DHL Paket (Faster Delivery) |
€0 - €50.00 | €6.95 | 1-3 Business Days |
|
DHL Paket (Faster Delivery) |
€50.00 - €100.00 | €2.00 | 1-3 Business Days |
|
DHL Paket (Faster Delivery) |
Over €100.00 | Free | 1-3 Business Days |
2.2 European Union (EU)*
*Including:
| Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|
| Deutsche Post | €0 - €100.00 | €7.95 | 5-9 Business Days |
| Deutsche Post | Over €100.00 | Free | 5-9 Business Days |
|
DHL Paket (Faster Delivery) |
€0 - €100.00 | €15.95 | 3-7 Business Days |
|
DHL Paket (Faster Delivery) |
€100.00 - €250.00 | €7.95 | 3-7 Business Days |
|
DHL Paket (Faster Delivery) |
Over €250.00 | Free | 3-7 Business Days |
2.3 United States
| Region | Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|---|
|
Continental U.S. (50 States) |
USPS Ground Advantage | €0 - €45.00 | €5.95 | 3-7 Business Days |
| USPS Ground Advantage | Over €45.00 | Free | 3-7 Business Days | |
| USPS Priority Mail | €0 - €45.00 | €16.95 | 1-4 Business Days | |
| USPS Priority Mail | Over €45.00 | €14.95 | 1-4 Business Days | |
|
Non-Continental U.S. (AK, HI, PR, etc.) |
USPS Ground Advantage | €0 - €60.00 | €6.95 | 5-9 Business Days |
| USPS Ground Advantage | Over €60.00 | Free | 5-9 Business Days |
* The regions in the Non-Continental U.S. include: Alaska, American Samoa, Guam, Hawaii, the Marshall Islands, the Northern Mariana Islands, Palau, Puerto Rico, the U.S. Virgin Islands, and all U.S. Armed Forces addresses. The shipping and delivery to these areas are subject to the Non-Continental U.S. shipping rules.
2.4 International (Outside EU)
For specific international destinations, including Switzerland, United Kingdom, and Norway.
| Order Amount | Shipping Cost |
|---|---|
| €0 - €300.00 | €19.95 |
| Over €300.00 | Free |
Important Notice:
- Inventory Status: Please check the inventory status on the product page. Our system displays real-time stock for our Munich and Arlington warehouses. If an item is out of stock in these locations, it will be marked as "Pre-order". You can still place an order for these items.
- Pre-order Fulfillment: For "Pre-order" items, we arrange the most efficient logistics solution to ensure you receive your goods as quickly as possible. Your package may be shipped directly from our Shenzhen warehouse. Alternatively, as part of our standard restocking process, we may transport the goods to our Munich or Arlington warehouse first (typically taking 5-10 business days) before dispatching them to you.
- Split Shipments: If your order contains both in-stock and Pre-order items, we will prioritize shipping the in-stock items from the local warehouse immediately. The remaining Pre-order items will be sent to you in a separate shipment once they are ready.
3. International Warehouse
Our products are stored in our Munich, Arlington, and Shenzhen warehouses to provide more flexible logistics solutions tailored to different regions and customer needs. On each product's description page, we indicate the specific warehouse location to help you better plan your purchase and delivery schedule.
3.1 German Warehouse
For products stored in our warehouse in Munich, we use either Deutsche Post or DHL for shipping, depending on the size of the package. Logistics within Germany are very efficient, with an estimated delivery time of 2-4 business days, ensuring you receive your order quickly and conveniently. For Western EU countries, the estimated delivery time is 4-6 business days. For Eastern EU countries, the estimated delivery time is 6-8 business days.
3.2 US Warehouse
For products stored in our warehouse in Arlington, we use either USPS or UPS for shipping, depending on the size of the package. Logistics within U.S. are very efficient, with an estimated delivery time of 3-7 business days, ensuring you receive your order quickly and conveniently.
3.3 Chinese Warehouse
For Pre-order items or orders fulfilled directly from our Shenzhen warehouse, we utilize YunExpress for reliable international shipping. Given the complexities of international shipping, the estimated delivery time for these packages is around 10 business days, though this may vary slightly due to customs processes or other uncontrollable factors. Otherwise, products will be restocked to our Munich or US warehouses before final delivery, as detailed in the "Important Notice" above.
4. Customs and Taxes
4.1 How are customs handled by OpenELAB for import or export?
For EU Member States: Whether shipped from Germany or China, we cover all import duties and taxes (DDP), ensuring that you receive your package without any additional costs or hassle with customs.
For countries outside of the European Union, such as Switzerland and Norway, you may be subject to import duties, taxes, and/or customs fees charged upon delivery. These fees vary from country to country and are the sole responsibility of the recipient.
⚠️ Refusal of Delivery: If you refuse to pay these fees upon delivery and the package is returned to us, the refund amount will be calculated after deducting the original shipping costs, return shipping costs, and any applicable customs or storage fees.
4.2 How is VAT charged when the Customer places an order from OpenELAB?
In accordance with the newest VAT e-commerce rules in the EU, OpenELAB shall have the right to charge the amount of VAT at checkout. The standard rate of actual VAT applied is subject to the destination country's regulations. No additional VAT will be charged upon delivery for these orders.






