The road to replacing the laptop that has been driving our LED sign for 10+ years was not nearly as straightforward as I had hoped. But in the end I was able to come up with something that did the job, and gets rid of all sorts of cables, a switch, and introduced me to a neat new technology: XBee. Read on for more details.
I originally was planning to use these "WiFly" boards that were tiny little boards that had a serial interface and would do 802.11b wireless. A great idea, but they just didn't work for me. For reasons I still don't understand, it looks like I let the magic smoke out of the 3 boards I got to experiment with. At $70 each, that's annoying.
I found later that the vendor has a "development kit" which includes a demo board that you can plug these modules into which does serial. I was about ready to order one of these, but the $200 price tag made me stop and re-think the project...
I had originally started out by looking at the XBee boards, but decided to use the WiFly because it seemed like it would be less work. But, the XBee boards have some really nice benefits:
Between them being cheap and having demo boards I could get that were also cheap, I decided to abandon the WiFly modules and try out the XBee.
The XBee boards are fantastic! I had some problems initially because of power issues on the serial explorer board, which caused the XBee module to not power up. I picked up a couple of the USB explorer boards, which were USB powered so no issues there, and then things really took off...
The one down-side is that I got the "2.5 modules" which do mesh networking, but they only work with a coordinator. Without a coordinator node, the XBees will refuse to create a network. To set up a coordinator, you need to install a special firmware on the card, which requires this Windows software. Feh! With the "1.0 modules" this apparently is not a problem, but you also don't get the mesh networking functionality.
Once I worked out this coordinator issue, I had no problems with getting the modules to talk. I even configured the modules with encryption and keys, node identifiers, etc... When configured, the XBee boards will do "serial pass-through" by default. It works great.
You can do "+++" to get into "AT" command mode to configure the modem for things like crypto, speeds, and more.
One thing I haven't explored is the modes for reading and writing digital I/O lines and I think one of them can do analog to digital. I'll be trying that out in my next project. One very neat mode it has is transparent I/O pass-through, where I/O coming in to one XBee unit get passed along to the other unit.
On the server side, I have a USB Explorer module with one of the XBee 2.5 2mW units. That is configured as the coordinator.
For the sign end, I configured it with a node identifier of "SIGN1". I got the Serial Explorer board, and was able to resolve the power problems with a diode (the BetaBrite power supply runs at 7.5V AC), and a 100uF/25V capacitor to help smooth out the AC power.
The Serial Explorer has the circuitry to bring up the voltage on the serial from the 3.3V output of the XBee to the 5V that the sign needs. Just connected the signal ground and transmit to the middle two conductors of the RJ-11 jack the sign uses.
Because of the "serial pass-through" mode, since I'm only running a single sign I only had to change the port on my Python program that controlled the sign. If I add another sign I'll have to switch to either "broadcast mode", which the XBees will do, or change to sending the "+++" and changing the destination for the messages.comments powered by Disqus