Infrared Remote Control Protocols: Part 1

As I was perusing the SB-Projects site on the different IR protocol formats, I decided to make a summary but later found out that it was a pretty standard thing, as documented by a Vishay document “Data Formats for IR Remote Control” (pdf).

The infrared remote control signals are layered on top of a carrier signal of 36 or 38kHz, therefore the signal can only be “on” or “off”. A transmission typically starts with an a burst (“on” state) that is used for the Automatic Gain Control (AGC) circuitry in the receiver, followed by the “off” state and the actual data transmission.

There are 3 basic types of data transmission formats, which are illustrated in the following diagram. Protocols can be based on these transmission formats, but need not necessarily conform to them.

Illustration of IR data transmission protocols: manchester encoding, pulse distance coding and pulse length coding.

So how do you know what your remote control uses? And how do you capture the sequence so that you can re-transmit it from an IR diode?

Continue reading

My First Arduino

I finally bought myself an Arduino Uno this week.

“Wait a minute… then what have you been using?” I hear you ask. Previously I had access to an Arduino Duemilanove, and used it to burn the Optiboot bootloader onto an ATmega168 that I had. The Duemilanove board used an FTDI chip which had additional pins brought out to an unsoldered header marked as X3. Following this guide by Kimio Kosaka, I downloaded the precompiled avrdude for Windows and used it to program the ATmega168 via the X3 header.

The end result was a bare-bones Arduino that ran on a 12MHz crystal. The reason for 12MHz was because that was the maximum “safe” clock speed at 3.3V, which I used for a university project and have been using ever since. You can see it below, driving a HD47780 parallel LCD.

However, it’s a real chore to hook this up, especially since everything on the breadboard like the crystal, FTDI header and reset button and pullup resistor are all inserted like any other component. It is more convenient to have a ready-built board for prototyping, where you don’t have to worry about the Arduino components.

If you haven’t gotten an Arduino board yet, I highly suggest you get one. If you would like to hook it up on the breadboard similar to what I did, at least get the Really Bare Bones Board (RBBB) Kit.

Reading BIOS EEPROM chips

I had these chips extracted from the old motherboards I threw away some time ago, and I thought I’d have some use for them some day.


These are Electrically Erasable and Programmable Read-Only Memory (EEPROM) chips which are used to hold the BIOS code. I was curious to find out what’s in these chips and if I could re-use them for storage in my projects, so I decided to interface with them. Continue reading