I have a remote that does the Alpha and Betabrite signs, but the thing is huge. I did read up on the subject, and found this out:
Mike Peters at Adaptive Micro Systems provided this insight into the subject:
"The Alpha Infrared Remote Control Keyboards use what is called bi-phase encoding, and I do not believe that you would be able to programatically tell your IR port on your computer to do that. It is currently doing what is called IRDA, which is the industry standard for IR.
I did copy the power off command into the remote program on my pocket pc, but was unable to power off the sign at work. Not sure if the "bi-phase" is the problem there or not.
Just wondering.
Jive
Any hope of someday being able to turn off LED signs?
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
-
- Posts: 4
- Joined: Tue Nov 06, 2007 11:35 pm
-
- Posts: 134
- Joined: Fri Jul 13, 2007 4:54 pm
I hven't tried to study the remote control codes for LED signs. I don't know what "bi-phase" is, but I can't imagine that it would be difficult to grab the code and make it work on the TV-B-Gone Kit.
I am also not up on IrDA, but I believe that IrDA uses 850nm IR instead of the 940nm IR that TV remote controls use. If that is true, then you could change some or all of the IR emitters on the TV-B-Gone Kit, or you could hack some on in addition to the emitters already there.
Anyone else know more about the codes for these signs?
Mitch.
I am also not up on IrDA, but I believe that IrDA uses 850nm IR instead of the 940nm IR that TV remote controls use. If that is true, then you could change some or all of the IR emitters on the TV-B-Gone Kit, or you could hack some on in addition to the emitters already there.
Anyone else know more about the codes for these signs?
Mitch.
-
- Posts: 6
- Joined: Wed Jan 17, 2007 1:26 pm
LED scrolling sign control
See next post.
Last edited by gmg on Fri Dec 21, 2007 2:23 pm, edited 1 time in total.
-
- Posts: 6
- Joined: Wed Jan 17, 2007 1:26 pm
LED scrolling sign control
Bi-phase (also known as BANNED) is the coding scheme used in the RC5 Phillips protocol, probably the commonest consumer infrared remote protocol.
Feature :
* 2 start bit always "1"
* 1 toggle bit but this project not use and always "0"
* 5 bit address and 6 bit command length
* Bi-phase coding (aka BANNED coding)
* Carrier frequency of 36kHz 25-50% duty cycle
* Bit time period about 1.67 ms
* Developed by Philips
It's not IrDA, and you can control BetaBrite and Alpha scrolling LED signs this way. I have a document "Alpha® Sign Communications Protocol (9708-8061F)" but can't attach it. It's available on the 'net but probably NOT at http://www.adaptivedisplays.com, the manufacturer of some of these signs.
There's also existing freeware/shareware/cheapware for these signs, but using serial RS-232 rather than IR. (It shouldn't be hard to drive an IR LED from the serial port, although you do have to modulate it at 36-40kHz.) I'm not sure if the IR receiver is tuned for 940 or Look at http://www.kitchi-rss.com for Kitchi and http://www.remote-control.net/software/ledsign/ for other simple programs.
And http://www.vishay.com/docs/80071/80071.pdf for good information on various IR remote control protocols.
Gary
Feature :
* 2 start bit always "1"
* 1 toggle bit but this project not use and always "0"
* 5 bit address and 6 bit command length
* Bi-phase coding (aka BANNED coding)
* Carrier frequency of 36kHz 25-50% duty cycle
* Bit time period about 1.67 ms
* Developed by Philips
It's not IrDA, and you can control BetaBrite and Alpha scrolling LED signs this way. I have a document "Alpha® Sign Communications Protocol (9708-8061F)" but can't attach it. It's available on the 'net but probably NOT at http://www.adaptivedisplays.com, the manufacturer of some of these signs.
There's also existing freeware/shareware/cheapware for these signs, but using serial RS-232 rather than IR. (It shouldn't be hard to drive an IR LED from the serial port, although you do have to modulate it at 36-40kHz.) I'm not sure if the IR receiver is tuned for 940 or Look at http://www.kitchi-rss.com for Kitchi and http://www.remote-control.net/software/ledsign/ for other simple programs.
And http://www.vishay.com/docs/80071/80071.pdf for good information on various IR remote control protocols.
Gary
- opossum
- Posts: 636
- Joined: Fri Oct 26, 2007 12:42 am
Sign Protocol Document (16 MB)
Don't see anything in there about the IR keyboard protocol - just RS-232
Anyone know of a cheap source for the IR keyboard?
Don't see anything in there about the IR keyboard protocol - just RS-232
Anyone know of a cheap source for the IR keyboard?
- opossum
- Posts: 636
- Joined: Fri Oct 26, 2007 12:42 am
Re: LED scrolling sign control
In Europe this may be true, but in the rest of the world PDE (pulse distance encoding) is much more common.gmg wrote:Bi-phase (also known as BANNED) is the coding scheme used in the RC5 Phillips protocol, probably the commonest consumer infrared remote protocol.
The correct bit pattern (0x5B = HLLHLLHLL) at 115000-7-N-1 will produce a 38.4 kHz carrier. LIRC can do this.although you do have to modulate it at 36-40kHz.
- caitsith2
- Posts: 217
- Joined: Thu Jan 18, 2007 11:21 pm
Im sure the ePlate license plate cover counts in this category. For this sign, I have completely hacked its IR protocol, due to the fact that it responded to one of the TV-B-Gone IR codes. (I manipulated that code to see how I needed to set the bits for a response, and completely mapped out the character/programming keys.)
If you just wanted to power the ePlate off, you would just execute xmit_eplate_code(EPLATE_PWR); (This is assuming the persons e-Plate is wired always on. It can also be wired to only come on, when the brake lights come on.) My motivation though, was to be able to change the ePlate message quickly.
Code: Select all
#define freq_to_timerval(x) ((F_CPU / x - 1 )/ 2)
const char charset_alpha[] PROGMEM ="VRPOZ.X.................NJHK.FD.STUQW.Y.................GLMICAEB";
const char charset_punct[] PROGMEM =".....$.! .......8465.................?.#........1273.9.0........";
const char charset_extra[] PROGMEM = ",\"\\/} > :+(= -& ''.;< { _[])^@*%";
#define EPLATE_SPACE 8
#define EPLATE_CAP 9
#define EPLATE_SHIFT 10
#define EPLATE_LEFT 11
#define EPLATE_CLR 13
#define EPLATE_INV 20
#define EPLATE_SPD 23
#define EPLATE_PWR 28
#define EPLATE_RUN 31
#define EPLATE_ENTER 40
#define EPLATE_EDIT 41
#define EPLATE_DELETE 42
#define EPLATE_INSERT 43
#define EPLATE_ONE 48
#define EPLATE_TWO 49
#define EPLATE_THREE 51
#define EPLATE_FOUR 17
#define EPLATE_FIVE 19
#define EPLATE_YES 38
#define EPLATE_NO 24
void xmit_eplate_code(uint8_t code)
{
uint8_t j,k,l;
j=code;
OCR1C = freq_to_timerval(37470);
delay_ten_us(5000);
xmitCodeElement(909,452,0);
for(k=0;k<16;k++)
xmitCodeElement(58,175,0);
k=j;
for(l=0;l<8;l++)
{
if(k&1)
xmitCodeElement(58,175,0);
else
xmitCodeElement(58,55,0);
k>>=1;
}
k=j^0xFF;
for(l=0;l<8;l++)
{
if(k&1)
xmitCodeElement(58,175,0);
else
xmitCodeElement(58,55,0);
k>>=1;
}
xmitCodeElement(58,0,0);
//delay_ten_us(25000);
}
void xmit_eplate_str(char *str)
{
uint8_t i,j, cap_state=0;
i=0;
cap_state=0;
while(str[i]!=0)
{
char alpha, punct, extra;
for(j=0;j<64;j++)
{
alpha=pgm_read_byte(&charset_alpha[j]);
punct=pgm_read_byte(&charset_punct[j]);
extra=pgm_read_byte(&charset_extra[j]);
if((str[i]>='A')&&(str[i]<='Z'))
{
if(alpha==str[i])
{
if(!cap_state)
{
xmit_eplate_code(EPLATE_CAP);
cap_state=1;
}
xmit_eplate_code(j);
}
}
if((str[i]>='a')&&(str[i]<='z'))
{
if(alpha==(str[i]-0x20))
{
if(cap_state)
{
xmit_eplate_code(EPLATE_CAP);
cap_state=0;
}
xmit_eplate_code(j);
}
}
if(punct==str[i])
{
if(str[i]!='.')
{
xmit_eplate_code(j);
break;
}
}
if(extra==str[i])
{
if(str[i]!=' ')
{
xmit_eplate_code(EPLATE_SHIFT);
xmit_eplate_code(j);
break;
}
}
}
i++;
}
xmit_eplate_code(EPLATE_ENTER);
}
- caitsith2
- Posts: 217
- Joined: Thu Jan 18, 2007 11:21 pm
Update: I have released the source code for a TV-B-Gone kit based ePlate editor. (There is no precompiled binary, as you are required to define all of the messages in message.c and compile it yourself. (I have included a couple of sample message.c files, to give idea of message layouts.))
http://www.BANNED.net/projects/eplate.zip
If you wish to add just a poweroff code, to be able to turn off someones eplate, then you transmit the following.
Carrier_freq(38000),
880,440,
55,55, //The first 16 bits could actually be just 00000000 00000000
55,55, //the eplate doesn't care what these bits are at all.
55,165, //My code just simply repeats the bits twice.
55,165,
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,165,
55,55, //Actual response starts here. 8 bits sent as 00011100
55,55,
55,165,
55,165,
55,165,
55,55,
55,55,
55,55,
55,165, //Then send 11100011 (Inverse)
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,165,
55,0 //And finally, the stop bit.
(If programming into existing TV-B-Gone kit firmware NA database, then you must define it before the first Hitachi code entry, as the first Hitachi code entry ends up being a valid code response to change the ePlate message scroll speed settings. (and if that happens, the ePlate will NOT respond to the poweroff code at all.)) (It also doesn't respond while in the Run message command, and also in the message editor itself.)
About that hitachi code comment, that was actually how I reverse engineered all of the codes in this ePlate, as I don't have an IR code capture device of any sort.
http://www.BANNED.net/projects/eplate.zip
If you wish to add just a poweroff code, to be able to turn off someones eplate, then you transmit the following.
Carrier_freq(38000),
880,440,
55,55, //The first 16 bits could actually be just 00000000 00000000
55,55, //the eplate doesn't care what these bits are at all.
55,165, //My code just simply repeats the bits twice.
55,165,
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,165,
55,55, //Actual response starts here. 8 bits sent as 00011100
55,55,
55,165,
55,165,
55,165,
55,55,
55,55,
55,55,
55,165, //Then send 11100011 (Inverse)
55,165,
55,55,
55,55,
55,55,
55,165,
55,165,
55,165,
55,0 //And finally, the stop bit.
(If programming into existing TV-B-Gone kit firmware NA database, then you must define it before the first Hitachi code entry, as the first Hitachi code entry ends up being a valid code response to change the ePlate message scroll speed settings. (and if that happens, the ePlate will NOT respond to the poweroff code at all.)) (It also doesn't respond while in the Run message command, and also in the message editor itself.)
About that hitachi code comment, that was actually how I reverse engineered all of the codes in this ePlate, as I don't have an IR code capture device of any sort.
Please be positive and constructive with your questions and comments.