Home Top Ad

KY-022 Infrared Receiver Module Circuit Working Explanation


The KY-022 module is an infrared receiver that reacts to 38kHz IR light. It can be used to receive commands from IR remote controllers for TVs, stereos, and other IR transmitter devices. The module provides digital output signals that can be easily interfaced and read by microcontrollers such as Arduino, Raspberry Pi, ESP32, etc.

KY-022 Infrared Receiver Module Specifications

The quick specifications of this IR module is given below:

  • Type: Digital
  • Module: Infrared Receiver
  • Operating Voltage: DC 2.7V to 5.5V
  • Operating Current: 0.4mA to 1.5mA
  • Pulse Duration: 400µs to 800µs
  • Reception Distance: 18m
  • Reception Angle: ±45°
  • Wavelength: 940 nm
  • Ambient Light Filter: up to 500LUX
  • Carrier Frequency: 38KHz
  • Low Level Voltage: 0.4V
  • High Level Voltage: 4.5V
  • Board Dimantions (L x W x H): 24.5mm x 16mm x 7mm
  • Weight: 5gm

Working Principle of KY-022 Infrared Receiver Module

Schematic of ky-022 inferared receiver module circuit is shown below. This module consists of a VS1838 IR receiver, a 1kΩ resistor, an LED and 3 male header pins.

Schematic of KY-022 Infrared Receiver Module Circuit

An IR remote control emits infrared light pulses when a button is pressed. These pulses are modulated at a specific frequency (typically around 38 kHz) to differentiate the signl from ambient infrared light.

The IR receiver module is tuned to detect this specific frequency. It has a photodiode that senses the infrared light and converts it into electrical signals. The receiver module includes a demodulator that filters out the modulated frequency, isolating the signal from ambient IR noise.

The demodulated signal is a series of electrical pulses corresponding to the on-off pattern of the infrared light. These electrical pulses represent the binary data transmitted by the remote control. The IR receiver's output signal pin (S) sends the digital signal to a digital input pin on the Arduino.

The Arduino, using the IRremote library, reads the incoming pulse train on the designated pin. The library processes the pulse timing to decode the binary data, which corresponds to a specific button press on the remote control. The decoded binary data is typically converted to a hexadecimal value. The arduino can then use this value to determine which button was pressed and execute corresponding actions.

KY-022 Infrared Receiver Module - Top and Bottom View

Get high-quality custom-designed Infrared Receiver boards with PCBWay.com! For just $5, you can create five custom boards by specifying your PCB requirements and submitting this Gerber file. Enjoy professional online PCB services and swift delivery within days or weeks, depending on your chosen service level.

KY-022 Infrared Receiver Module Pinout

KY-022 Infrared Receiver Module Pinout
The module has 3 male header pins those are -
  1. Pin (S): Digital Signal
  2. Pin (Middle): DC +5V
  3. Pin (-): GND

Interface KY-022 Infrared Receiver Module with Arduino

Connection diagram of the KY-022 Infrared Receiver module with an Arduino is shown below.

Arduino KY-022 Infrared Receiver Module Connection Diagram

Connect the power pin (middle) and ground pin (-) of the IR receiver module to +5V and GND on the Arduino, respectively. The module signal pin (S) connect to digital pin D3 on the Arduino board.

Here’s a simple example code to get you started. This code will read the infrared signals received by the KY-022 module and print the corresponding hexadecimal values to the Serial Monitor.

#include <IRremote.h>

const int RECV_PIN = 3; // Pin where the KY-022 is connected
IRrecv irrecv(RECV_PIN); // Create an IRrecv object
decode_results results;  // Create a results object

void setup() {
  Serial.begin(9600);    // Initialize serial communication at 9600 baud rate
  irrecv.enableIRIn();   // Start the receiver

void loop() {
  if (irrecv.decode(&results)) {  // Check if we have received an IR signal
    Serial.print("Received IR signal: ");
    Serial.println(results.value, HEX); // Print the value in hexadecimal format
    irrecv.resume();  // Receive the next value

Once you upload the code to your Arduino board, open the Serial Monitor in the Arduino IDE at a baud rate of 9600. You should see the measured ambient temperature printed every second in the Serial Monitor.

No comments

If you have any doubts or questions, please let me know. Don't add links as it goes to spam. Share your valuable feedback. Thanks