Decode Infrared Signals
With Precision

Professional infrared signal analysis suite for Arduino, ESP32 and embedded electronics development.

Download IRidium Explore Features View on GitHub

10+

IR Protocols

Live

Signal Capture

XLSX

Export Support

100%

Offline Tool

Application Preview

IRidium in action — live signal capture and protocol decoding.

IRidium Application Preview

Features

Everything needed for infrared analysis.

Protocol Decoder

Decode NEC, Sony, Samsung, RC5 and other common protocols automatically.

Pulse Analyzer

Analyze pulse timings and inspect raw infrared data with precision tools.

Real-Time Capture

Monitor incoming IR traffic instantly over serial with zero latency.

Excel Export

Export captured sessions directly to XLSX files for further analysis.

Getting Started

Up and running in four steps.

1
Install Arduino IDE and the IRremote library by Armin Joachimsmeyer.
2
Wire your IR receiver to the Arduino as shown in the circuit diagram below.
3
Upload the firmware sketch to your Arduino and connect via USB.
4
Open IRidium, select the correct COM port at 9600 baud, and hit Connect.

Circuit Diagram

Three wires. That's all it takes.

IRidium Application Preview
VCC
IR Receiver VCC → Arduino 5V
GND
IR Receiver GND → Arduino GND
OUT
IR Receiver OUT → Arduino Pin 2 (D2)

Device Firmware

Copy this sketch directly into your Arduino IDE.

IRidium.ino
#include <IRremote.hpp>

#define IR_PIN 2

void setup()
{
    Serial.begin(9600);

    IrReceiver.begin(
        IR_PIN,
        ENABLE_LED_FEEDBACK
    );
}

void loop()
{
    if (IrReceiver.decode())
    {
        Serial.print("Protocol=");
        Serial.print(
            getProtocolString(
                IrReceiver.decodedIRData.protocol
            )
        );

        Serial.print(";Address=0x");
        Serial.print(
            IrReceiver.decodedIRData.address,
            HEX
        );

        Serial.print(";Command=0x");
        Serial.print(
            IrReceiver.decodedIRData.command,
            HEX
        );

        Serial.print(";HEX=");
        Serial.print(
            IrReceiver.decodedIRData.decodedRawData,
            HEX
        );

        Serial.print(";Bits=");
        Serial.print(
            IrReceiver.decodedIRData.numberOfBits
        );

        Serial.print(";RAW=");

        for (
            uint16_t i = 1;
            i < IrReceiver.irparams.rawlen;
            i++
        )
        {
            Serial.print(
                IrReceiver.irparams.rawbuf[i]
            );

            if (
                i <
                IrReceiver.irparams.rawlen - 1
            )
            {
                Serial.print(",");
            }
        }

        Serial.println();

        IrReceiver.resume();
    }
}