Browse over 10,000 Electronics Projects

A Homebrew Versatile X10 Signal Analyzer (Data Logger) using a Lego RCX

A Homebrew Versatile X10 Signal Analyzer (Data Logger) using a Lego RCX

While investigating ways to improve X10 reliability (eventually hitting upon the X10RfConfiguration), I considered different approaches to see if any of the (often time-consuming and expensive) changes I was making in my X10 configuration were helping at all.
What I was looking for was a way to tell exactly how many X10 pulses reliably made their way to their destination socket as initiated by the CM11A and CM17A over a given interval. I was hoping to make a series of changes, e.g. moving/adding filters, moving my boosterlinc, alternative dryer coupler/repeater placement, turning on and off breakers, etc and then systemically logging whether my changes made things better or worse.

I had the X10 ESM1 signal analyzer. While this is a good unit, it’s hard to tell from the moving LED bar graph whether systematic changes are getting better or worse over time. You’d have to read the graph and make a subjective judgement as to whether it seemed stronger. There are more elaborate X10 signal analyzers out there, but it seemed to me that I had most of the parts needed already.

Basically, what I did is make a little program for the Lego RCX that counts and logs the pulses it receives as triggered by contact closure on the UM506. Then I use a program to trigger N pulses over M minutes. As I make changes, I compare the logs and see which changes are beneficial.

That’s probably enough info for most hackers build it, but in case you want a little more detail, I’ve described below.


Here’s how I made a better X10 signal analyzer using parts I’m guessing that most folks have around:

* An X10 Universal Module

* One Lego Mindstorms RCX

* One lego connector plate wire (minimimum 6+ inches)

* NQC and a small program…

The RCX, UM506, and RCX software are collectively referred to as the X10RcxSignalAnalyzer (XRSA).


* Cut the Lego electric connector plate wire, one side should longer than other

* Separate the split the ends of the wires and connect to the UM506 and the Lego RCX on sensor one (not the motor outputs)

* Set the UM506 to momentary contact and sounder & relay

* connect the UM506 and RCX together with some rubber bands or velcro.

* Download and install NQC (although you could easily make the same program in any of the other programming languages

available for the RCX – even the ‘stock’ LegoMindstorms RCX language would probably be fine).

* Compile and and download X10RcxSignalAnalyzerCode or equivalent program.

* Download and install a client X10 communication program to your client machine (such as BottleRocket, MisterHouse, or Heyu) * Write an X10RcxSignalAnalyzerCode client program to trigger N pulses (make sure house and unit code match UM506 code)

Visit Here for more.