A Homebrew Versatile X10 Signal Analyzer 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.
Here's how I made a better X10 signal analyzer using parts I'm guessing that most folks have around:
The RCX, UM506, and RCX software are collectively referred to as the X10RcxSignalAnalyzer (XRSA).
Instructions
* 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.
* Test you've connected it properly by
* Set the UM506 to "momentary" contact and "relay/sound"
* Download and install NotQuiteC (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.
* Download and install a client program to your PC or Linux machine (such as BottleRocket, MisterHouse, or Heyu)
* Write an X10RcxSignalAnalyzerClient program to trigger N pulses (make sure house and unit code match UM506 code)
Testing
* By pressing ON on the UM506 you should see a tiny triangle in the upper left hand corner of the RCX display that indicates you've closed the sensor contact.
* If this doesn't work, you've got the connector plate installed improperly, a damaged UM506, etc.
Operating Instructions
* Install the XRSA in a socket for which you want to measure accuracy.
* Start the program on the RCX by clicking the run button.
* Start the client-side X10RcxSignalAnalyzerCode and let it complete its cycle.
* Retrieve the XRSA and upload its datalog using the command "nqc -datalog"
* Examine the intervals claimed by the log. Missing pulses should be obvious as the time delayed indicated will be multiples of the "correct" length. Even the number of lines is a good first pass hint, if you've generated fifty pulses, ideally you'll have fifty lines. Anything less represents pulses lost in transit.
* Make changes in your X10 system and repeat logging/analysis, until you're satisfied.
Notes
* Something similar could certainly be made with a CM11A and a laptop, however, as I was convinced the CM11A was part of the problem, not the solution, I wanted to 'take that out of the equation'. Plus I only had one. Also the portability of the XRSA is attractive.
* Another alternative implementation is a digital counter circuit and the UM506. Indeed I was a few minutes into prototyping solution when my eye caught the open Mindstorms box on my floor.
* It was a nice little thought exercise to see what I had on hand that could "count" pulses. I come up a few that were pretty fun, but not quite as good as the UM506 and RCX. Do you have any?
* I was able to get my reliability to nearly 100% by moving to an X10RfConfiguration.
* Send me an email to newsaccount.h at gmail.com if this was handy for you!
Comments (0)
You don't have permission to comment on this page.