Editing Big LED Screen

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 31: Line 31:


==== Daughterboards ====
==== Daughterboards ====
[http://www.flickr.com/photos/31848713@N00/3430719610/ Picture of a daughterboard]


The daughterboards each have qty 3 UCN5832A ([[Image:Ucn5832.pdf]]) 32-bit shift registers (for a total of 96 bits) which drive an array of 32 by 48 pixels (for a total of 1536).  The theory is the other end of the LEDs are connected to 16 different power sources, making all the LEDs addressable (96 * 16 = 1536).  (The shift register does a current sink)
The daughterboards each have qty 3 UCN5832A ([[Image:Ucn5832.pdf]]) 32-bit shift registers (for a total of 96 bits) which drive an array of 32 by 48 pixels (for a total of 1536).  The theory is the other end of the LEDs are connected to 16 different power sources, making all the LEDs addressable (96 * 16 = 1536).  (The shift register does a current sink)
Line 78: Line 76:


=== Overview ===
=== Overview ===
[http://www.flickr.com/photos/31848713@N00/3430728760/in/photostream/ Overview of the inside of the screen (picture)]
[http://www.flickr.com/photos/31848713@N00/3429916211/in/photostream/ Detail of our breadboard (picture)]


==== LED Hardware ====
==== LED Hardware ====
Line 99: Line 93:
The boarduinos have connections to the preexisting circuitry to tell which power source is in use at any time, and send the respective data to the shift registers for display.
The boarduinos have connections to the preexisting circuitry to tell which power source is in use at any time, and send the respective data to the shift registers for display.


We also have an xbee series 1 (802.15.4) wireless chip onboard so we don't have to open up the sign to talk to it.
We also have an xbee wireless chip onboard so we don't have to open up the sign to talk to it.


==== Software ====
==== Software ====
Line 112: Line 106:


=== Pin connections ===
=== Pin connections ===
[[Image:ledscreen-schematic.png|500px]]


Here are the pins that need to be connected other than power and ground:
Here are the pins that need to be connected other than power and ground:
Line 140: Line 132:
=== Programming the xbee ===
=== Programming the xbee ===


To control the sign wirelessly, you will want to program an xbee chip to interface with it.  I recommend the "xbee explorer" from sparkfun.  To program your new xbee, you will need to make sure your xbee has a recent enough firmware (10A5 is recommended).  Unfortunately firmware upgrade must be done using Digi/MaxStream's "X-CTU" application which runs under windows.  This can be performed with wine and linux.  See [http://paparazzi.enac.fr/wiki/XBee_configuration paparazzi's]xbee config page and [http://www.libelium.com/squidbee/upload/3/31/Data-sheet-max-stream.pdf digi's xbee AT command set] for information about using x-ctu or minicom with your xbee.
To control the sign wirelessly, you will want to program an xbee chip to interface with it.  I recommend the "xbee explorer" from sparkfun.  To program your new xbee, you will need to make sure your xbee has a recent enough firmware (10A5 is recommended).  Unfortunately firmware upgrade must be done using Digi/MaxStream's "X-CTU" application which runs under windows.
 
The Xbee on the computer side needs to have a small hardware modification to work: pins AD0 and AD1 need to be shorted, and pins AD2 and AD3 need to be shorted.  This is because the xbee connected to your computer toggles pins 0 and 2 to control the state of pins 1 and 3, and pins 1 and 3 are mirrored by the xbee connected to the sign.  If you use a stock xbee, you'll still be able to talk to the sign with it but you won't be able to flash new firmware.


Once you have your xbee connected to your computer, you can use xbee-pgm.pl to set it up to talk to the sign such as the following:
Once you have your xbee connected to your computer, you can use xbee-pgm.pl to set it up to talk to the sign such as the following:
Line 180: Line 170:


   ./xbee-pgm.pl /dev/cu.usbserial.A12345 all-low
   ./xbee-pgm.pl /dev/cu.usbserial.A12345 all-low
=== Controlling a running sign ===
You can use the "sendcmd.pl" script to send bytes to the sign.  The usage is similar to xbee-pgm.pl:
  ./sendcmd.pl <serial port> <byte code>
<byte code> is the decimal value of the byte to send.  You should not send bytes too fast, and sometimes bytes get missed.  Hopefully this will change in the future.
You can address one or both of the halves by sending one of the following values:
  0 - address left
  1 - address right
  2 - address both
If you want to send a data value from 0 to 3 (inclusive) and don't want to address a screen, you can first send a "3", which indicates that the next byte should be treated as a data byte instead of an address byte.
Immediately after you address a screen, you send a command:
  64 - Turn on life, and randomly occasionally reset
  65 - Turn on life without the periodic random reset
  66 - Run test pattern
  67 - Act as single-buffered framebuffer
  68 - Act as double-buffered framebuffer
 
  70 - clear framebuffer, home cursor
  71 - set x coordinate of cursor
  72 - set y coordinate of cursor
  73 - for double-buffered framebuffer, swap front and back buffers
  74 - for double-buffered framebuffer, do a single round of life and swap front and back buffers
When setting an x or y coordinate of the cursor, follow the command with the cursor position added to 128.  The cursor is 8 pixels wide horozontally and 1 pixel tall.  Valid values for setting the X cursor coordinate are 128 through 135.  Valid values for setting the Y cursor coordinate are 128 through 175.
After you have issued attention and a command, any further bytes you send will be placed on the screen at the cursor, and then the cursor will go to the next 8 pixels.  It scans in the standard left-to-right, top-to-bottom order.
An example script, "gliders.sh", will place a bunch of gliders on the display.  (You may need to change the "port" variable to match your local serial port).  Note that it has several times where it stops and asks you if everything is ok; use ctrl-c to abort if any bytes got missed in transit, and then start over.
For further information, UTSL.
[[Category:Pages with a Noisebridge Tiny URL]]
Please note that all contributions to Noisebridge are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Noisebridge:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)