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 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?