Saturday, December 20, 2014

JDM Climate control hacking Part 1



The Subaru Liberty also known as Subaru Legacy in Japan and USA came with two different climate controls, the ordinary which has levers and knobs while the RX and i think most of the Japanese models came with an auto climate system with an LCD screen and buttons.

Disclaimer: What i have written up here is more of a how i done it not a how to do it step by step so please expect some details to be missing, If you are going to take on a project like this it is a good idea that you are familiar with micro controllers and modifying parts that you may only have 1 of.


Here go's

I was lucky enough to obtain one of the auto climate controls along with the actuator and some temperature sensors.



Because of the difference in the wiring harnesses it would be really difficult to use the original electronics and that would be boring anyway! My plan is to deck this climate control out with an arduino and lcd screen!



For the screen i've chosen this 16x2 character white OLED screen which should fit snugly in the climate control.


While i'm waiting for the screen to arrive from china i started on reverse engineering the ir protocol
Thanks to Ken Shirriff and his Blog here this was incredibly easy 

My test setup consisted of an arduino, usb to serial adapter and an ir LED



Here is the code i am using for testing at the moment.

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>
char INBYTE;

IRsend irsend;

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

void loop() {
  INBYTE = Serial.read();
  if ( INBYTE == 'P')
    irsend.sendNEC(0xFF02FD, 32); // POWER
  if ( INBYTE == 'r')
    irsend.sendNEC(0xFF1AE5, 32); // RED
  if ( INBYTE == 'g')
    irsend.sendNEC(0xFF9A65, 32); // GREEN
  if ( INBYTE == 'b')
    irsend.sendNEC(0xFFA25D, 32); // BLUE
  if ( INBYTE == 'w')
    irsend.sendNEC(0xFF22DD, 32); // WHITE
  if ( INBYTE == 'y')
    irsend.sendNEC(0xFF18E7, 32); // YELLOW
  if ( INBYTE == 'p')
    irsend.sendNEC(0xFF58A7, 32); // PINK
  if ( INBYTE == 'm')
    irsend.sendNEC(0xFF7887, 32); // MAGENTA
  if ( INBYTE == 'o')
    irsend.sendNEC(0xFF38C7, 32); // ORANGE
}




No comments:

Post a Comment