USB StatusBox

A USB status indicator is constructed from some surplus telephone displays (Lite-On ST2225A), an arduino clone, and a photo display box. This is a work in progress.

statusBox prototype
Early testing of the prototype StatusBox with 1 boarduino and 4 displays.

current statusBox
Current StatusBox with 1 freeduino and displays mounted in a photo box. (Lid is off.)

(Return to Home Page)

Current status:

Last Updated: October 11th, 2008

Construction

A photoset detailing the case construction and videos of the StatusBox operating can be found here:

Arduino Code

The arduino code was designed to handle n display units. In this case 4 displays are used. The code allows each display to be addressed individually but also supports arbitrary scrolling between displays. The commands are sent to the arduino using my radio protocol. This allows the unit to be used with a USB connection or a simple radio connection without changing the software.

CSB Protocol:

ByteContents
0xAAStart Marker
0 - 255Device Address
0 - 255Message Size - 1
(1 to 256)
1 to 256 bytesMessage Data
0 - 255XOR of all previous bytes

The commands currently implemented by the StatusBox (sent in 'Message Data' above) are shown below. There are two sets of commands, standard commands (UpperCase) which use the built in alpha and number fonts, and raw commands which don't use the fonts. The alpha font is currently 128 ascii characters. The number font is 16 Hex digits plus another 16 characters for a total of 36 characters.

Description12345...  
Brightness
Low
'1'      
Brightness
Medium
'2'      
Brightness
High
'3'      
Zero
(All Displays)
'Z'      
Start Demo'*'      
Stop Demo'+'      
Erase Display'E'disp     
Alpha Colon'C'dispon    
Number Colon'K'dispon    
Icon'I'displayiconon   
Alpha Set'A'displaystart#char (#)  
Number Set'N'displaystart#number (#)  
Alpha Scroll'S'display'L' or 'R'char   
Number Scroll'R'display'L' or 'R'number   
Multi Alpha
Scroll
'M'display'L' or 'R'char#display list (#) 
Multi Number
Scroll
'P'display'L' or 'R'number#display list (#) 
Multi Number
Scroll
'P'display'L' or 'R'number#display list (#) 
Alpha Colon
Raw
'c'dispdata    
Number Colon
Raw
'k'dispdata    
Icon Raw'i'displaydata    
Alpha Set
Raw
'a'displaystart#data*2 (#)  
Number Set
Raw
'n'displaystart#data (#)  
Alpha Scroll
Raw
's'display'L' or 'R'msblsb  
Number Scroll
Raw
'r'display'L' or 'R'data   
Multi Alpha
Scroll Raw
'm'display'L' or 'R'msblsb#display list (#)
Multi Number
Scroll Raw
'p'display'L' or 'R'data#display list (#) 

The lights in the displays are organized in 5 banks which must be continously updated to keep the displays lit. The displays share common latch and clock lines but each is given its own data line. No additional multiplexing or external parts are needed!

Arduino Pinout:

PinUse
4 to 10Display 0 - 6
Data Lines
11Data Clock (Shared)
12Data Latch (Shared)

Ardunio Code: available here.

Dotnet Code

I wrote a quick utility to test the arduino code by sending commands from a Windows form application. The application appears below.

windows statusbox tester

As part of the first StatusBox application I wrote an StatusBox IO library that wraps the serial (USB) communications. The library provides a simple functional API.

Dotnet Code:

Wiring

The wiring schematic for the StatusBox is shown below. Each display has its own data line (D4 through D7) but the clock, reset, power and ground lines are shared and wired in daisy-chain fashion. Only the arduino clone and the 4 displays are used, there are no other components. Power is supplied by the arduino USB connection.

statusBox wiring

Sources

I stumbled across these surplus telephone displays and how to use them on the Serial Wombat website. I also used the RobotRoom website. Many thanks to my fellow experimenters for sharing!


This material is Copyright © 2008 Craig Buchanan. All rights reserved. This page may be freely linked to.
Please send comments or questions to mailto: buchananc@acm.org.