Wireless Character LCD
The objective for this project was to build a portable (i.e. battery-powered) unit containing a HD44780 Character LCD that could be updated through a wireless link.
Contents
Design
The basic layout is illustrated in the diagram below, followed by additional details about the individual components.
Wireless Character LCD Layout
Enclosure
I thought it would be nice to show off the internals of this device, so I chose the SERPAC 252-C. It has a clear top, it's a reasonable size for this project, and it has a built-in 9 V battery compartment. There are many other options here to suit any aesthetic taste, but I like the SERPAC's form factor.
LCD Driver
In this portable unit, the character LCD will need to be updated by serial input to a microcontroller driver. This problem has been solved many times over, so there's no need to reinvent the wheel here. I prefer Brian Riley's K107 kit built around Peter Anderson's LCD117 controller. It's versatile, easy to modify, easy to use, and very well-documented; it will work great for this project (and many others).
Wireless Link
For the wireless communication link, I chose to use a low-power, (relatively) short-range, ZigBee device. The 1 mW Digi (MaxStream) XBee modules fit the bill nicely, and they're reasonably priced (even more so if you're fortunate enough to grab them on SparkFun's Free Day). While you're there, also pick up the XBee Explorer USB board and the XBee Explorer Regulated board so you can interface with the modules serially on both ends of the link.
Power Supply
The K107 and the XBee Explorer boards both operate off a 5 V input, so we need an efficient way to generate that from our battery. The SERPAC enclosure has a 9 V battery compartment. A 9 V cell is inferior to 2–4 AAs with a switching regulator in many respects; unfortunately, the battery door opening and geometry of the LCD within the SERPAC enclosure prevented me from substituting AA cells. So, I used the MAX639 buck regulator to drop my 9 V supply to 5 V efficiently. The MAX639 is sufficient for the amount of current that the LCD and XBee draw; just use the typical application circuit from the data sheet.
Construction
Software
Configuring the XBees is straightforward, thanks to
excellent
documentation. All that's needed are a few
AT commands.
Plug each XBee into the USB Explorer board in turn, and configure them
to recognize each other (enable AES encryption if you want). Make one a
Cyclic Sleep Remote
and the other a Cyclic Sleep
Coordinator.
The Remote will be installed in the portable unit, and
sleeping greatly reduces power consuption. The always-on Coordinator
will queue and transmit updates from the server.
The updates you choose to display are up to you; I'm using a feed for local news headlines, but you can certainly do inbox status updates, social network updates, or whatever else you like. Once you've polled and parsed your data source, you'll need to send an update to the Coordinator XBee on the USB Explorer connected to your server. A very easy way to do this is with PySerial. Assuming you're running Linux, you may need to configure a udev rule to assign a writable device node to the FTDI chip on the USB Explorer. The process is almost identical to the one used for the Concept2 Performance Monitor in RowMetrics; this time, include a NAME="xbee" assignment in the udev rule to give the FTDI device node a constant identifier that you can provide to PySerial.
Hardware
The SERPAC enclosure with LCD mounting holes drilled in the cover.
The mounted LCD module with a K107 backpack.
The popular and versatile Tic Tac enclosure before (left) and after (right) housing the XBee Coordinator. This is the most delicious part of the project.
The Remote module on the XBee Explorer Regulated board.
The power supply with MAX639 buck regulation. The circular component at bottom left is a last-minute addition: a piezo buzzer for audio alerts, driven by the K107.
Result
A couple of images of the finished unit are below. My 250 mAh 9 V rechargeable NiMH cells last approximately 15 days until brownout.
The wireless character LCD displaying a news headline.
The wireless character LCD displaying a news headline.