Difference between revisions of "Alpha 220 LED Sign"
m (→leddisplay) |
m (→leddisplay-timeofday) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 281: | Line 281: | ||
|} | |} | ||
− | ==Stock | + | ==Ticker (Stock, Weather, News)== |
− | + | ||
− | + | ||
− | + | ||
The sign can be used for a number of purposes (to display weather forecasts from an [[w:RSS|RSS]] feed, to display news feeds as a news ticker) As a proof of concept the following script uses the sign to display a stock ticker that gets it's data from [[w:Yahoo!|Yahoo!]] it then colors the prices | The sign can be used for a number of purposes (to display weather forecasts from an [[w:RSS|RSS]] feed, to display news feeds as a news ticker) As a proof of concept the following script uses the sign to display a stock ticker that gets it's data from [[w:Yahoo!|Yahoo!]] it then colors the prices | ||
Line 293: | Line 291: | ||
<font color=red>RED</font> if they are negative/down | <font color=red>RED</font> if they are negative/down | ||
− | for the day | + | for the day |
+ | {| width = "690px" cellpadding="10px" cellspacing="10px" | ||
+ | |-valign=top | ||
|| | || | ||
Here it is in action: (clip from a cell phone so quality is somewhat poor) | Here it is in action: (clip from a cell phone so quality is somewhat poor) | ||
<youtube>ojkgEQLNVG0</youtube> | <youtube>ojkgEQLNVG0</youtube> | ||
+ | || | ||
+ | This clip shows it fetching weather Stock quotes and news. This one happens to be running on a [[w:Plug_computer|Seagate Dockstar]] | ||
+ | <youtube>T7l2s0NrXqA</youtube> | ||
|} | |} | ||
Line 419: | Line 422: | ||
===leddisplay-timeofday=== | ===leddisplay-timeofday=== | ||
<pre> | <pre> | ||
− | |||
#! /bin/bash | #! /bin/bash | ||
− | |||
− | |||
− | |||
# | # | ||
# News Feed URL | # News Feed URL | ||
Line 432: | Line 431: | ||
# | # | ||
stocks=" ^DJI ^IXIC ^GSPC AAPL " | stocks=" ^DJI ^IXIC ^GSPC AAPL " | ||
+ | # | ||
# Weather Url | # Weather Url | ||
# | # |
Revision as of 17:25, 11 November 2012
2009-1 3rd Place Contest Winner!
You can find one of these signs for less than $100. |
![]() |
220 Full Matrix, (Case 37.7" x 3.8" x 2.9 ") Tricolor[1] |
Contents
Install a Serial Port Interface
In this case a KuroBoxPro was used however any Linkstation could be used by accessing the serial port interface.
First, install a serial port interface. There are two physical serial ports on the KuroBoxPro. One serial port on the bottom[2] which is the same as the port on the Linkstation Pro and one on the daughterboard accessible from the front. Both are addressed as /dev/ttyS0. Consider soldering in a pinheader rather than the pressure connector used in the LSPRO method.
The cheapest TTL/RS232 converter found was from futurelec, however the order is shipped from thailand so it takes 2-3 weeks to get it. | The sign uses a 6 conductor RJ-12 Jack. A snap in RJ-12 jack is used to interface the sign to the serial port converter | The serial port board/connector are then enclosed in a 2 port surface mount housing |
Interface Sign to Serial Port Interface
A standard 6 wire telephone cable meant for a two line phone is used (a 4 wire one will not work) Plug one end into the sign, and one end into the Quick port RJ-12 Jack. Wire the jack into the serial port board as such[3]
![]() |
|
Setup the serial port
Adjust the serial port settings, below is a script to do this. This information comes from a FAQ on using the Alpha sign with Linux[4].
Basically this
- Links /dev/ttyS0 to /dev/alpha
- Gives everyone read/write access to your sign (/dev/alpha)
- Provides a 9600,E,7,1 connection to the sign (/dev/alpha)
setledsign
# /usr/local/bin/setledsign #!/bin/sh rm /dev/alpha ln -s /dev/ttyS0 /dev/alpha chmod a+rw /dev/alpha stty 9600 -opost -ocrnl -onlcr cs7 parenb -parodd < /dev/alpha
Wake up the sign and display something on it
alphamon.pl
# alphamon.pl # #!/usr/bin/perl # # Script will display the contents of /tmp/textfile to the ALPHA 220C LED # Display # # Usage # # alphamon.pl [MODE TAG] [COLORTAG] # Get the attention of the sign print "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; # Tell the sign to print the message $message = `cat /tmp/textfile` ; print "\001" . "Z" . "00" . "\002" . "AA" . "\x1B" . " $ARGV[0]" . "\x1C" . "$ARGV[1]" . $message . "\004";
Alpha Sign Syntax
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" | "\001" | "Z" | "00" | "\002" | "AA" | "\x1B" | "t" | "\x1C" | "1" | Hello World | "\004" |
---|
Value | Meaning | Code Type |
---|---|---|
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 | NULL | String of Null packets to get attention of sign |
\001 | SOH | Start of Header |
Z | Direct at all Signs | Type Code |
00 | All Signs Should Listen | Sign Address |
\002 | Start of Text Character | Start Type |
A | Text File | Write File Type |
A | A | File Label |
\x1B | ESC | Start of Mode Field |
t | compressed text | MODE TAG (see below) |
\x1C | color control code | Control Code |
1 | red | COLORTAG (see below) |
Hello World | Text Message | |
\004 | EOT | End of Transmission |
MODE TAG and COLORTAG
The key parts of this are the MODE TAG and COLORTAG, there is full documentation available for this[5]but here are the pertinent parts.
|
|
Ticker (Stock, Weather, News)
The sign can be used for a number of purposes (to display weather forecasts from an RSS feed, to display news feeds as a news ticker) As a proof of concept the following script uses the sign to display a stock ticker that gets it's data from Yahoo! it then colors the prices
GREEN if they are positive/up
and
RED if they are negative/down
for the day
Here it is in action: (clip from a cell phone so quality is somewhat poor) |
This clip shows it fetching weather Stock quotes and news. This one happens to be running on a Seagate Dockstar |
First install perl and make
apt-get install perl make
Then install the quote package [6]
wget http://www.circlemud.org/pub/jelson/quote/quote-0.05.tar.gz tar -xvzf quote-0.05.tar.gz cd quote-0.05 ./configure ./make ./make install
install curl and lynx so that they can be used later to get content from the web.
apt-get install curl lynx
Lastly here is a shell script to display the ticker
leddisplay
#! /bin/bash #------------- # leddisplay- #------------- # # A Script to display stock quotes, weather information, and news " # on the ALPHA220C Sign" # # usage leddisplay [flag] " # s = stock quotes" # w = weather " # n = news " # # #==================== # User Set Variables= #==================== # # Weather Url # WURI=http://weather.yahoo.com/united-states/illinois/chicago-12784260/ # # News Feed URL # RSSURI=http://feeds.reuters.com/reuters/topNews/ # # Stock ticker symbols # stocks=" ^DJI ^IXIC ^GSPC AAPL" # # LINES=10 #Number of headlines EXEC="/usr/bin/curl -s" #Path to curl dow=$(date +%u) hour=$(date +%k) PTE=/usr/local/bin # Script Body if [ $1 == "" ] then exit fi if [ $1 == "w" ] then lynx -dump $WURI | sed -n '/ Today/,/Tomorrow/p' | sed -e '$d' > /tmp/textfile perl $PTE/alphamon.pl t 2 > /dev/alpha exit fi if [ $1 == "n" ] then $EXEC $RSSURI | grep title |\ sed -e :a -e 's/<[^>]*>//g;/</N' |\ sed -e 's/[ \t]*//' |\ sed -e 's/\(.*\)/ \1/' |\ sed -e 's/\.//' |\ sed -e 's/\"//' |\ sed -e 's/\"//' |\ head -n $(($LINES + 2)) |\ tail -n $(($LINES)) > /tmp/textfile perl $PTE/alphamon.pl t 1 > /dev/alpha exit fi if [ $1 == "s" ] then quote $stocks | cut -d"(" -f1 |sed 's/^/\x1C9 \x7F \x1C3 /' | sed '/ -/s/:/\x1C1/g' | sed '/ +/s/:/\x1C2/g' > /tmp/textfile perl $PTE/alphamon.pl t A > /dev/alpha exit fi clear echo "leddisplay" echo "---------- " echo " " echo " A Script to display stock quotes, weather information, and news " echo " on the ALPHA220C Sign" echo " " echo " usage leddisplay [flag] " echo " s = stock quotes" echo " w = weather " echo " n = news " echo " "
leddisplay-timeofday
#! /bin/bash # # News Feed URL # RSSURI=http://feeds.reuters.com/reuters/topNews/ # # Stock ticker symbols # stocks=" ^DJI ^IXIC ^GSPC AAPL " # # Weather Url # WURI=http://weather.yahoo.com/united-states/illinois/chicago-12784260/ # LINES=10 #Number of headlines EXEC="/usr/bin/curl -s" #Path to curl dow=$(date +%u) hour=$(date +%k) PTE=/usr/local/bin if [ $hour -ge 5 ] && [ $hour -le 8 ] then lynx -dump $WURI | sed -n '/ Today/,/Tomorrow/p' | sed -e '$d' > /tmp/textfile perl $PTE/alphamon.pl t 2 > /dev/alpha exit fi if [ $hour -ge 16 -o $hour -le 5 ] then $EXEC $RSSURI | grep title |\ sed -e :a -e 's/<[^>]*>//g;/</N' |\ sed -e 's/[ \t]*//' |\ sed -e 's/\(.*\)/ \1/' |\ sed -e 's/\.//' |\ sed -e 's/\"//' |\ sed -e 's/\"//' |\ head -n $(($LINES + 2)) |\ tail -n $(($LINES)) > /tmp/textfile perl $PTE/alphamon.pl t 1 > /dev/alpha exit fi if [ $dow -ge 1 ] && [ $dow -le 5 ] then quote $stocks | cut -d"(" -f1 |sed 's/^/\x1C9 \x7F \x1C3 /' | sed '/ -/s/:/\x1C1/g' | sed '/ +/s/:/\x1C2/g' > /tmp/textfile perl $PTE/alphamon.pl t A > /dev/alpha else $EXEC $RSSURI | grep title |\ sed -e :a -e 's/<[^>]*>//g;/</N' |\ sed -e 's/[ \t]*//' |\ sed -e 's/\(.*\)/ \1/' |\ sed -e 's/\.//' |\ sed -e 's/\"//' |\ sed -e 's/\"//' |\ head -n $(($LINES + 2)) |\ tail -n $(($LINES)) > /tmp/textfile perl $PTE/alphamon.pl t 1 > /dev/alpha exit fi
Make it Wireless
A USB Wifi Stick
In this case a Nintendo WiFi USB connector, which used to be widely available at every store that sold a Wii (before the CSIRO lawsuit).
Udev should pick this up automatically when inserted and load the proper kernel module. You can do a quick dmesg to make sure that it was recognized.
# dmesg | tail -n4 usb 1-1: new high speed USB device using orion-ehci and address 2 usb 1-1: configuration #1 chosen from 1 choice phy0: Selected rate control algorithm 'pid' usbcore: registered new interface driver rt2500usb
Software
Get wpasupplicant and wireless tools (throw in bridge-utils for later)
apt-get install wpasupplicant wireless-tools bridge-utils
I use WPA on my network, so I used wpa_passphrase to generate the basic contents of /etc/wpa_supplicant.conf
wpa_passphrase ESSID passphrase
Here is what mine looks like:
/etc/wpa_supplicant.conf
# WPA-PSK/TKIP network={ ssid="ESSID" key_mgmt=WPA-PSK proto=WPA pairwise=TKIP group=TKIP psk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX }
Edit the interfaces file (I used a static configuration, you could always use DHCP instead):
/etc/network/interfaces
# # we always want the loopback interface # auto lo iface lo inet loopback # # default dynamic setup (no adjustment necessary) # # auto eth0 # iface eth0 inet dhcp hostname `hostname` # # sample wireless setup # auto wlan0 iface wlan0 inet static wireless-essid ESSID address 192.168.1.145 gateway 192.168.1.1 dns-nameservers 192.186.1.1, 69.50.168.189 netmask 255.255.255.0 wpa-conf /etc/wpa_supplicant.conf
Test it out
Restart networking or reboot the box, you should be able to login on the address you gave the box (192.168.1.145 in this example) with the ethernet unplugged!