PAGE 1 of 3 - Identifying the Air condition remote control transmission modulation
As a matter of fact, i have two Fidji air-conditions, so probably this reverse-engineer work won't be a plain waste of time. IMO reverse engineering staff is the best practice and i find it always very interesting.
At first, i had to get somehow the IR data sent by the remote control. The simplest method was with a TSOP1838 IR receiver, the same i used for the long range IR beam break detector circuit.. With the proper trigger setting on my oscilloscope, i managed to capture the IR beam...
This is the TSOP 1838
I connected the oscilloscope to capture the data sent
With the proper trigger settings, here is what the remote sends upon button press
Air condition remote controls have a very long protocol
Air condition remote controls with built-in LCD have a long protocol because they carry all the settings
There is a great difference between typical TV, radio, DVD and other remote control protocols with the air-condition remote controls, and more specifically the remote controls with the LCD screen. That is because the settings are stored on the remote control itself rather than the air-condition unit. This means that each time a button is pressed, the remote control must send not only this button press, but the complete set of parameters such as temperature, fan settings, swing, operation and others.
It was rather impossible to analyze the protocol directly from the oscilloscope's screen because of its length. So what I've done was to connect the oscilloscope with the PC through USB. With a special software i download the data from the oscilloscope to the PC. Luckily, this software can export a long set of measurements in excel format. I made a small software that reads these data, filters the results and draws an inverted rectangular waveform according to the data:
My oscilloscope can be connected with the PC through USB
The software exports a long series of serial data of the waveform in excel format
I made a small software which can analyze this serial data, filter the results and export a bitmap with the filtered waveform
Identifying the transmission protocol modulation
The oscilloscope's screen shows the signal inverted and i did not recognize the modulation type immediately. But when i saw the filtered and inverted waveform on the screen, i immediately recognized the modulation type: It is Differential Pulse Position Modulation. I've written a detailed theory regarding the PPM and the D-PPM modulation in this page.
So, now i know exactly which parameters to measure: i need to measure the duration of the short and long pulse interval, the pulse duration, the initial pulse interval and the carrier frequency of the signal:
The short pulse duration is 320uSec
The long pulse duration is 1.16mSec
The pulse duration is 540uSec
The initial pulse duration is 3.1mSec
As for the carrier signal, i need to change the receiver circuit. the TSOP has built-in filters and outputs only pulses without the carrier signal. So i replaced it with a simple IR diode like the one i used in this IR Short Distance Beam Cut Detector circuit.
I used a simple IR diode to detect the carrier signal
Now the carrier frequency is visible
By decreasing the horizontal time/div of the oscilloscope, the carrier wave is measurable. It is 37.3KHz
Now i know everything regarding the modulation. I can proceed with the protocol identification...
I did this same thing only with the WIRED controller port on a Grunaire (chigo built) A/C unit about 3 and a half years ago.. the actual but positions are a bit different but similarity in the type of encoding.. in fact on that unit the wired control protocol and the IR are the same wit hthe difference there's no carrier..
in their case for error correction you first send a 5 byte string.. followed by the same 5 byte string only with the bits inverted.. AND it is a 2 way protocol as it sends Back to you the settings in the same manner.. along with the actual indoor and outdoor temperatures that display on the wired control.. it is carried out over 1 wire (plus ground).. 5 volt TTL level.. normally the unit sends to the wired controller and the wired controller responds back with its settings.. when you adjust a setting.. the wired controller pulls the line low for 100 mSec and then releases it high for 50 mSec and then sends its sequence...
to the one above comment.. I did just what you were asking.. I created my own micro controller to mimic the wired control panel of the unit using a Zbasic.net micro and my home automation system can control my A/C units in this manner...
the added advantage is that the wired control panel would display error codes too.. so I also get the benefit that my home automation will pick up on when an A/C unit issues an error code...
awesome stuff and love to see others are doing similar to me!! its a lot of fun!!
Thanks for your excellent post. I'm trying to do the same thing as you for my Friedrich AC/heater.
Do you plan to write a new post about using your result with an arduino to be able to control your device?