JeeNode and OOK433 plug

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

Besides an Arduino Mega 2560 I can also use a JeeNode to do some experiments. The JeeNode is made based upon the Arduino but it has several differences. Like, it has fewer ports, it runs on 3.3V instead of 5V, it is smaller and has I2C support. Another great feature is the RFM12B wireless RF chipset that can be used to let JeeNodes communicate with eachother. Take a look at the JeeLabs blog for a ton of information, it is really great.

Because one of the wishes for my domotica solution is controlling KAKU devices a 433Mhz OOK RF receiver and transmitter is needed.  JeeLabs has a nice solution; the OOK 433 plug.

This plug has two 433 Mhz chipsets; one to send and one to receive signals. KAKU uses On-Off-keying (OOK) modulation for sending and receiving signals.

KAKU remote YCT-102

I assembled the plug and tested the ookDecoder.pde sketch (look at the bottom of the page), together with my KAKU YCT-102 remote. I was lucky as it worked right away; I read that some people weren’t able to get it working in combination with another KAKU remote (probably an older version).

It also works with the KAKU doorbell transmitter (ACDB-6500BC).

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

One thing to mention is that the sketch decodes the signals as ‘HEZ’ signals instead of ‘KAKU’ signals. Some other website also mentioned that the signals of the UCR-4285 universal KAKU remote were also recognized as ‘HEZ’ signals.

However, if you remove  ‘HezDecoder hez;’ in the ookDecoder.pde sketch the signals will show up as KAKU commands!

As for now I haven’t tried to send KAKU commands so I don’t know if that works in combination with my KAKU socket units.

Because I cannot find the webpage to download the ookDecoder.pde sketch I include it below. All credits go to Jean-Claude (owner of JeeLabs and creator of the JeeNode hardware) see the comments in the code.

 

// New code to decode OOK signals from weather sensors, etc.
// 2010-04-11 <jcw@equi4.com> http://opensource.org/licenses/mit-license.php
// $Id: ookDecoder.pde 7527 2011-04-11 01:57:48Z jcw $

#include "decoders.h"

#define USE_433 1
#define USE_868 0

#if USE_433
OregonDecoder orsc;
CrestaDecoder cres;
KakuDecoder kaku;
XrfDecoder xrf;
HezDecoder hez;
#endif

#if USE_868
VisonicDecoder viso;
EMxDecoder emx;
KSxDecoder ksx;
FSxDecoder fsx;
#endif

#define PORT 1

volatile word pulse;

ISR(ANALOG_COMP_vect) {
    static word last;
    // determine the pulse length in microseconds, for either polarity
    pulse = micros() - last;
    last += pulse;
}

void reportSerial (const char* s, DecodeOOK& decoder) {
    byte pos;
    const byte* data = decoder.getData(pos);
    Serial.print(s);
    Serial.print(' ');
    for (byte i = 0; i < pos; ++i) {
        byte d = data[i];
        Serial.print(d & 0x0F, HEX);
        Serial.print(d >> 4, HEX);
    }
    // Serial.print(' ');
    // Serial.print(millis() / 1000);
    Serial.println();
    
    decoder.resetDecoder();
}

void setup () {
    Serial.begin(57600);
    Serial.println("\n[ookDecoder]");
    
    pinMode(13 + PORT, INPUT);  // use the AIO pin
    digitalWrite(13 + PORT, 1); // enable pull-up

    // use analog comparator to switch at 1.1V bandgap transition
    ACSR = _BV(ACBG) | _BV(ACI) | _BV(ACIE);

    // set ADC mux to the proper port
    ADCSRA &= ~ bit(ADEN);
    ADCSRB |= bit(ACME);
    ADMUX = PORT - 1;
}

void loop () {
    cli();
    word p = pulse;
    pulse = 0;
    sei();

#if USE_433
    if (p != 0) {
        if (orsc.nextPulse(p))
            reportSerial("ORSC", orsc);        
        if (cres.nextPulse(p))
            reportSerial("CRES", cres);        
        if (kaku.nextPulse(p))
            reportSerial("KAKU", kaku);        
        if (xrf.nextPulse(p))
            reportSerial("XRF", xrf);        
        if (hez.nextPulse(p))
            reportSerial("HEZ", hez);        
    }
#endif

#if USE_868
    if (p != 0) {
        if (viso.nextPulse(p))
            reportSerial("VISO", viso);        
        if (emx.nextPulse(p))
            reportSerial("EMX", emx);        
        if (ksx.nextPulse(p))
            reportSerial("KSX", ksx);        
        if (fsx.nextPulse(p))
            reportSerial("FSX", fsx);        
    }
#endif
}

Nodo can do KAKU too …

TSOP 1838 – IR receiver

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

In my quest to find the right components for a domotica solution I found the TSOP 1838 (IR receiver) in the Nodo project. This sensor has only three pins to connect which makes it easy to use. Not if you don’t take a very close look at the datasheet and connect the pins the wrong way. Being new to the Nodo project, TSOPs and Arduino together with the fact that I ‘knew’  I had the pin layout right, I began to try different sketches and remote controls. I took me quite some time to finally get it right. I mixed up the pins. After connecting everything the right way it was really easy to get it working.

On the right you see a picture of the TSOP 1838
I included the pin layout .

The left (OUT) pin is used to retrieve the IR signal. This pin is connected to a digital input of the Arduino.
The second (GND) pin is the ground pin.
The third (+5V) pin is the pin that you must connect to the 5V pin of the Arduino.

You can find several IR libraries and code examples that can be used together with the TSOP1838.

Ken Shiriff has a blog where you can find a great example and download. I did try the IRrecvDump.pde and it worked great.

Ladyada.net also has a great page about IR controls and Arduino.

The nodo-domotica project is also using a TSOP1838 for IR reception. In the nodo sketches   pin 3 is used to get the IR signal, but don’t be fooled by the image showing you how to connect the sensor (that is where I went wrong) it looks like the middle pin is the signal pin but that is not the case!

Hopefully you get the sensor up and running in just a couple of minutes. I have to figure out what the protocol is for my DreamBox, XBOX, Sharp TV remotes. These are not yet supported by the libraries mentioned above. Support for Sony, NEC and some Philips protocols is available. Sony is the one I saw working.

As they say RTFM (to get the correct pin layout) …