IR Receivers - johnosbb/Automation GitHub Wiki

IR Receivers

HX1838

Silver Model

Key Code
PWR FF629D
CH FFE21D
|<< FF22DD
>| FFC23D
>>| FF02FD
- FFE01F
Plus FFA857
EQ FF906F
0 FF6897
100 FF9867
200 FFB04F
1 FF30CF
2 FF18E7
3 FF7A85
4 FF10EF
5 FF38C7
6 FF5AA5
7 FF42BD
8 FF48B5
9 FF52AD

Black Model

Key Code
PWR FD00FF
VOL FD807F
FUNC/STOP FD40BF
|<< FD20DF
>| FDA05F
>>| FD609F
DOWN FD10EF
VOL FD906F
UP FD50AF
0 FD30CF
EQ FDB04F
ST/REPT FD708F
1 FD08F7
2 FD8877
3 FD48B7
4 FD28D7
5 FDA857
6 FD6897
7 FD18E7
8 FD9867
9 FD58A7

image

image

Pinout

  • Pin 1 is signal
  • Pin 2 positive power
  • Pin 3 is ground

Different Models have different pinouts. The raw vs18388 part has

Pinout Reminder (for VS1838B):

image

References

Simple Code Example

#include <Arduino.h>
#include <IRremote.h>

#define IR_RECEIVE_PIN 36

IRrecv IRReceiver(R_RECEIVE_PIN);
decode_results results;

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


}

void loop() {
   if(IRReceiver.decode(&results)) {
      Serial.println(results.value, HEX);
      IRReceiver.resume();
   }

}

image

00000000111111110110100010010

00000000111111110110

Expected NEC Signal for 0xFD08F7

The NEC protocol follows a specific timing pattern:

Header:

MARK: ~9000µs
SPACE: ~4500µs
32-bit Data (8-bit Address, 8-bit Inverted Address, 8-bit Command, 8-bit Inverted Command):

Each bit consists of:
MARK (~560µs)
SPACE (~560µs for 0, ~1600µs for 1)
End Signal:

MARK (~560µs)
Final SPACE (~40ms, if the key is held, FFFFFFFF is sent)

Observed pattern on Oscilliscope

Signal Type Low Duration (µs) High Duration (µs)
Start (Leader Code) ~9200 ~4500
Bit Start (for each bit) ~600 Varies
First 8 Bits (Address?) ~600 ~500
Following Bits (Data?) ~600 ~1500

Leader Code (Start Frame)

LOW for ~9200µs, then HIGH for ~4500µs Indicates the start of an IR transmission.

Bit Encoding

Every bit starts with a LOW pulse (~560-600µs). The following HIGH pulse determines if the bit is 0 or 1: Short HIGH (~500-600µs) → 0 Long HIGH (~1500-1700µs) → 1

00000000 11111111 01101000 10010111

Byte Binary Hex Meaning
Address 00000000 0x00 Address Byte
Address Inverse 11111111 0xFF Address Complement
Command 01101000 0x68 Command Byte
Command Inverse 10010111 0x97 Command Complement
Holding the Key
Instead of repeating the full command, the remote sends a repeat signal every 108ms.
The repeat signal consists of:
9ms LOW (MARK)
2.25ms HIGH (SPACE)
560µs LOW (MARK)
97ms HIGH (SPACE)
Key Release
No further signals are sent after the final repeat signal.
⚠️ **GitHub.com Fallback** ⚠️