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 1: Line 1:
{{LED}}
>= The Big LED Screen =
 
{{headerbox}}'''The Big LED Screen''' is Noisebridge's first piece of LED art, a big LED screen salvaged and made to work running Conway's Game of Life since [[83c]].
{{boxend}}
 
The sign in its original form when we found it and had to figure out how to reverse engineer it.
 
[[File:Nbbigledsignhackonme.jpg|800px]]


=== Overview ===
=== Overview ===
Line 12: Line 5:
* Dimensions (in pixels) are 128 by 48
* Dimensions (in pixels) are 128 by 48
* The buffer board stores data into a couple memory chips, which are then accessible to the daughterboards which drive the actual LEDs.
* The buffer board stores data into a couple memory chips, which are then accessible to the daughterboards which drive the actual LEDs.
* There are four daughterboards, in two chains of length two.  Each of these daughterboards is connected to a single "section" of LEDs (ie: there are four big "sections" of LEDs).  Each daughterboard runs a section of 32 by 48 pixels.
* There are four daughterboards, in two chains of length two.  Each of these daughterboards is connected to a single "section" of LEDs (ie: there are four big "sections" of LEDs).  Each daughterboard runs a section of 32 by 48 pixels.


=== History ===
=== History ===


* Originally controlled by a 386; mobo is shot.
* Originally controlled by a 386; mobo is shot.
* The 386 connects via ISA to a "buffer board" which looks to be a memory buffer and power conditioner.
* The 386 connects via ISA to a "buffer board" which looks to be a memory buffer and power conditioner.
* The "buffer board" has most traces terminating to a socket with a missing chip, so we don't know what happened here.
* The "buffer board" has most traces terminating to a socket with a missing chip, so we don't know what happened here.
 
** ''I have a somewhat different version.  The missing chip I think you are referring to is a floppy drive controller.  In my version the floppy drive is connected to the LED driver board there on the top left connector which then feeds through and shares the same ISA connector.  -dpg  (sorry if this was an inappropriate way to add a comment.)''
   
   
==== Buffer board ====
==== Buffer board ====
Line 132: Line 123:


=== Getting the source ===
=== Getting the source ===
The source is available on GitHub at the following location: https://github.com/miloh/bigledscreen/
A guide for using GitHub can be found here https://guides.github.com/activities/hello-world/


'''The following is historical'''
The source is in a mercurial repository on [[pony]].  Point your mercurial client at http://pony.local/d3/nils/bigledscreen to pull down a copy of it.
The source is in a mercurial repository on [[pony]].  Point your mercurial client at http://pony.local/d3/nils/bigledscreen to pull down a copy of it.


=== 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 154: Line 140:
=== Uploading new sign code ===
=== Uploading new sign code ===


To compile new sign code, simply "make" in the bigledscreen directory.  This will produce a "ledlife.hex" file that you can upload to the sign.  If you are unfamiliar with AVR programming and avrdude, you should go through one of the tutorials on the internet first.  This is not a good first project.
To compile new sign code, simply "make" in the bigledscreen directory.  This will produce a "ledlife.hex" file that you can upload to the sign.  If you are unfamiliar with AVR programming and avrdude, you should go through one of the tutorials on the internet first.  This is not a good first project.


To upload new sign code, you must upload to each half of the sign separately.  First, activate the reset pins on both halves of the sign:
To upload new sign code, you must upload to each half of the sign separately.  First, activate the reset pins on both halves of the sign:
Line 166: Line 152:
The atmega168 will now start the Lady Ada's bootloader, which acts just like a stk500.
The atmega168 will now start the Lady Ada's bootloader, which acts just like a stk500.


Immediately, start your "avrdude" to upload code.  If you do not do this fast enough, you will need to toggle the reset pin again.
Immediately, start your "avrdude" to upload code.  If you do not do this fast enough, you will need to toggle the reset pin again.


   avrdude -F -b 19200 -c stk500v1 -p m168 -P /dev/cu.usbserial-A12345 -e -U flash:w:ledlife.hex
   avrdude -F -b 19200 -c stk500v1 -p m168 -P /dev/cu.usbserial-A12345 -e -U flash:w:ledlife.hex
Line 183: Line 169:
=== Controlling a running sign ===
=== 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:
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>
   ./sendcmd.pl &lt;serial port&gt; &lt;byte code&gt;


<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.
&lt;byte code&gt; 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:
You can address one or both of the halves by sending one of the following values:
Line 195: Line 181:
   2 - address both
   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.
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 &quot;3&quot;, 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:
Immediately after you address a screen, you send a command:
Line 215: Line 201:
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.
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.
An example script, &quot;gliders.sh&quot;, will place a bunch of gliders on the display.  (You may need to change the &quot;port&quot; 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.
For further information, UTSL.


[[Category:Pages with a Noisebridge Tiny URL]]
----
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
----
=[http://inicagota.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=
----
=[http://inicagota.co.cc CLICK HERE]=
----
</div>
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)