Wireless Message Display System

I thought I might share a project that I completed as part of my final year at university. The aim of the project was to create a "Wireless Message Display and Data Aggregation System". The project took somewhere between 400 and 450 hours of effort to complete.

A complete set of photos can be found here:

The basic idea was to create a system whereby the user could view a summary of data on a small electronic device. This data was to be gathered by a computer and transmitted wirelessly from the computer to the device.

The three key components are:

  • The Electronic Client Device - This is the part that receives and displays the summary information.
  • The Transceiver Device - The transceiver connects to the computer via USB and allows the software executing on the computer to communicate wirelessly with the client device.
  • The Message Server - This is the software running on the computer that gathers data from multiple sources and transmits the messages to the client device.

The Client Device

The most important components of the client device are the ATmega328P microcontroller (Plus Arduino boot-loader), the GLCD, and a Xbee Module.

The client device receives the data from the computer and displays it on the screen accordingly. Different types of data are displayed in different ways.

For example, a message that contains calendar events would be displayed:

Or a message that displays an unread email:

.

Once a message is displayed the user can navigate forwards and backwards between messages. The user can also delete and "queue" messages from the device. Messages that have been "queued" are no longer displayed but are retained in a list on the server for further action (more on this later).

Physically, the device is formed from two PCBs and the GLCD sandwiched between two sheets of acrylic using hexagonal spacers. Two further pieces of acrylic have been bent to form "legs" that angle the display slightly.

The Transceiver Device
The transceiver device uses a FTDI Basic Breakout (3.3V) from Sparkfun to communicate with the XBee module.

As the FTDI breakout board has no mounting holes it is secured by clamping it between two pieces of acrylic. Small rubber pieces provide sufficient friction to stop it from coming loose when the USB cable is removed.

Message Server
The message server is a application written in Java that transmits messages via the USB transceiver to the client device. The application was written to allow multiple independent data sources to be installed. Data sources are loaded and instantiated dynamically at runtime to provide flexibility. The data sources implemented for the purposes of the project are:

  • RSS Feeds - Reads a standard RSS feed and displays a message containing each item.
  • Unread Emails - Connects to a IMAP email server in order to show information about any unread emails
  • Calendar - Reads calendar events from a iCalendar file and displays information about upcoming events
  • To-Do - Uses the RememberTheMilk webservice to display information about tasks that need completion.

The application allows each data source to be managed individually. For example:

The server application can also be used to view the currently outgoing messages. The outgoing messages are cycled through unless the user selects a particular message, or uses the left and right buttons on the client device to navigate between messages.

The user is able to "queue" a message either from the client device or from within the server application. Queuing a message allows actions to be performed on it. The actions that can be performed are dependant on the type of message.

  • RSS messages may open the corresponding webpage
  • To-do messages may allow the user to delete, or complete the tasks
  • Email messages may allow the user to delete, mark as read, or reply to an email.

There are more photos on flickr which show more of the construction and a few more examples of the software operation.

Any comments/questions?

got a comment...

Very nice!

:wink:

You gonna be able to release any code that you used?
I would be interested in seeing your LCD library you wrote for the scrollbars etc.

Mowcius

Thanks,

At this moment in time I'm unclear as to who owns the copyright. I've heard conflicting opinions from multiple sources, so this is something I am going to have to clear up with my university before I am able to release the code.

In terms of what I will release, I would be happy to release all of it, though I don't believe that much of it would be useful to anybody as it is too specific to this particular application (and bodged in places).

The "GUI Element" library is something I was definitely planning on cleaning up and releasing assuming I have the right to do so.

At this moment in time I'm unclear as to who owns the copyright. I've heard conflicting opinions from multiple sources, so this is something I am going to have to clear up with my university before I am able to release the code.

Well that's pretty much what I thought :-/

In terms of what I will release, I would be happy to release all of it, though I don't believe that much of it would be useful to anybody as it is too specific to this particular application (and bodged in places).

Ahh but it'll still be interesting to read ;D

The "GUI Element" library is something I was definitely planning on cleaning up and releasing assuming I have the right to do so.

Well that sounds great.

I will follow this thread so any updates... Just say :wink:

Mowcius

That's brilliant, well done!
I love the presentation of it, very crisp.

What kind of screen is that?

What kind of screen is that?

This GLCD from Sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=710