Receive X10 signals using a PSC05

Hi all,
I mostly work on my arduino projects sporadically, starting something new, working on it furiously and sometimes adding code to the repository, 'till I lose interest and drop it alltogether.

This time I've jumped into X10 stuff again (in '03 I toyed with it a little). I was thrilled to find that a cheap PL513 was all that was needed to start, and there was already an x10 library. On the Arduino X10 page appears

This library enables you to send and receive X10 commands from an Arduino module.

but this is wrong! I still bought a PSC05, but it appears that the library does not contain code to receive X10 data from the PSC05 into an arduino.

I was wondering, has anyone done this? Judging by my searches, it looks like I'm going to be writing some code tonight that'll do this.

This time around, I'll try to stay dedicated. I'll revise the existing x10 library for asynchronous x10 receiving.

Maybe while I'm at it I'll clean up and get working my cheap wireless RF library for those of you who have inquired over the past few months. Sorry it has taken me so long!

Are you still working on this? (or did you loose interest :))
I ask because I was also planning to add X10 receive capability using the PLC05.
BTW I did make an Arduino interface for the CM17A X10 RF transmitter. Arduino Playground - CM17A

Yes! I am absolutely still interested. In the past few weeks, health issues have gotten the better of me. But I am getting progressively better, especially in the past day. Once I catch up with all of the backlog of work missed whilst bedridden, my work on these projects will absolutely resume.

Thus far, I have read a bit regarding the x10 protocol. I believe it will be possible to do this, however some design considerations must be... considered:

Asynchronous communication - a sketch will have to allot some microprocessor time to checking for incoming data. I believe it would be possible to multitask within a sketch, since the Rx code only needs to check for bits every zero-cross or 60hz*2, to detect a bit and process it. This could be tricky to time while doing other things in a sketch, but the only other option is to allow the receive function to take full processor usage for the duration of a full message (which could be up to a second if i'm not mistaken).

Even then, if a message is intercepted mid-stream, it'd have to be dropped, unless it was during the first of the pair (as non-dim codes are sent in pairs)

Just throwing that out there. I'll pop back in once I have made more progress. I want to get started ASAP but I'm also overdue for updating my simple RF transciever librarie to be 0014-compatible - and some interested people are waiting on me for that.

"master procrastinator!" - if it weren't for life throwing me hardballs regularly, this would be finished!

Well in this case your procrastination paid off! :wink:
I just finished the X10 receive interface. :slight_smile:
It uses the zero crossing pin to trigger an interrupt so it's non-blocking.
I'm working on a Playground article with sample code. Should have it done in a day or two. (I'll announce it in Software / Development.)
Get better.

Oh snap! How well does it work? Rest assured, I will be one of your first beta testers. I'll keep an eye out for the lib, and my PSC05 is wired and ready to go!

Next step: Extended x10 protocol support! yay! hehe

Just finished posting the Playground article . . .
http://www.arduino.cc/playground/X10/ReceiveX10
This will tell you more than you want to know!

It seems to work pretty well. I've already created X10 "macros" that re-transmit commands and interfaced to an IR Receiver. Seems pretty solid (considering it is X10!).

Unfortunately Extended Codes are not supported by the PSC05/TW523. You can read why in the X10 "datasheet". That's not to say something can't be done to transmit values. I have some rough ideas on how to get something working on that.

So enjoy the example and let me know what issues you find and ideas you have.

I'll post an announcement in Software / Development since it's a more logical place to continue the discussion.

great..this will help me in my current project thanks...