EV1527, RT1527, FP1527, HS1527 and HT12E encoder methods


hello,

i built 2 encoder methods x1527 encoder (common in garage openers , such) , holtek ht12e encoder (decoder code ht12 exists on arduino forum). code has addresses statically coded, should easy modify these or take them arguments constructor.

the pulsetime might need modified match resistor/oscillator on receiving side. pulse time x1527 encoding 32 oscilations. ht12e supplied code set 3khz oscillator.

hs1527.cpp:
code: [select]

/* ev1527, rt1527, fp1527 or hs1527 encoding */

#include "hs1527.h"

#define hs_1527_pulsetime 474 // time in microseconds 1 pulse


hs1527::hs1527(int pin)
{
  _pin = pin;
}

void hs1527::signal(boolean state) {
  digitalwrite(_pin, state);
  delaymicroseconds(hs_1527_pulsetime);
}

void hs1527::signalbinary(boolean state) {
  signal(high);
  signal(state);
  signal(state);
  signal(low);
}

/* transmit message */
void hs1527::sendmsg(boolean *bits) {
  /* sync bit */
  signalbinary(low);

  /* pilot period */
  for(int = 0; < 28; ++i) signal(low);

  /* 17 address bits */
  signalbinary(low);
  signalbinary(high);
  signalbinary(high);
  signalbinary(high);
  for(int = 0; < 6; ++i) signalbinary(low);
  signalbinary(high);
  signalbinary(high);
  signalbinary(low);
  signalbinary(high);
  signalbinary(low);
  signalbinary(high);
  signalbinary(high);
  for(int = 0; < 3; ++i) signalbinary(low);

  /* 4 data bits */
  for(int = 0; < 4; ++i) signalbinary(bits[i]);
  for(int = 0; < 3; ++i) signalbinary(low);

}


hs1527.h:
code: [select]

/* ev1527, rt1527, fp1527 or hs1527 encoding */

#ifndef hs1527_h
#define hs1527_h
#include "arduino.h"

class hs1527
{
  public:
    hs1527(int pin); // constructor
    void sendmsg(boolean *bits);
  private:
    int _pin; // arduino input pin
    void signalbinary(boolean state);
    void signal(boolean state);
};

#endif


hs1527_sample arduino code
code: [select]

#include "hs1527.h"

#define txpin 7 // pin transmit encoded data
hs1527 encoder(txpin);

void loop() {
  boolean curbits[4];

  for(int = 0; < 4; ++i) curbits[i] = low;
  curbits[3] = high;

  encoder.sendmsg(curbits);
}



for ht12e never built library, simple though:
code: [select]

#define pulsetime 290 // time in microseconds 1 pulse (this set 3khz oscilator)
#define txpin 7 // pin transmit encoded data

void setup() {
    pinmode(txpin, output);
}

void signal(boolean state) {
digitalwrite(txpin, state);
delaymicroseconds(pulsetime);
}

void signalbinary(boolean state) {
  signal(low);
  if(state == low) signal(high);
  else if(state == high) signal(low);
  signal(high);
}

/* transmit message. remember ht12d requires same data 3 times accept valid transmission */
void sendmsg(boolean *bits) {
/* pilot period */
for(int = 0; < 33; ++i) signal(low); // 33 pretty arbitary, should 12 bits

/* sync bit */
signalbinary(high);

/* 8 address bits */
for(int = 0; < 8; ++i) signalbinary(low);

/* 4 data bits */
for(int = 0; < 4; ++i) signalbinary(bits[i]);

}

void loop() {
  boolean bits[4] = {low, low, high, low};
 
  sendmsg(bits);
}



Arduino Forum > Using Arduino > Networking, Protocols, and Devices (Moderator: fabioc84) > EV1527, RT1527, FP1527, HS1527 and HT12E encoder methods


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial