Digital Window Sticker (Arduino Controlled)

Digital Window Sticker (Arduino Controlled)
A bumper-sticker sized L.E.D. matrix that displays images in sequence from an SD card, to produce an animated sign or "window sticker." Arduino controlled! Also includes Windows, Mac, and Linux code for converting .xbm image files into Digital Window Sticker files. Perfect for a shop or home window, or a fun desktop sign!


 
Remove these adsRemove these ads by Signing Up
 

Step 1Parts List

Parts List

Digital Window Sticker Parts List


1x
Arduino Compatible Bare Bones Board KIT (BBBKit)
Ask for the LM7805 regulator!
$15.00
1x
Optional, see below…
$12.00
2x
SEE IMPORTANT NOTE BELOW
$11.64
(23.28)
1x
See PCB note below
$2.99
1x
$6.99
1x
$0.09
1x
$0.75
1x
$1.75
1x
$0.32
1x
$0.19
1x
$0.11
1x
See Header Receptacle note below.
$0.75
1x
$0.49
1x
See SD-MMC Card note below.
$17.95
8x
 $3.98
1x
Low Capacity SD Card (e.g. 512 MB)
 
1x
9-volt power source
 
 
Solder and 22-gauge wire of various colors
 

The BBB Kit is an Arduino clone produced by moderndevice.com.  At $15.00 for a complete Arduino kit, it is one of the least expensive options.  I could have cut a few dollars off of the cost by using an alternate Arduino board and a separate supply list for each Arduino component, but the convenience of a single supplier for the Arduino portion of this project was worth the $3 to $5 I may have saved.  You should be able to make this project with any Arduino.  It can be prototyped on a breadboard as shown below, with a Boarduino, a Bare Bones Board, or other breadboard adaptable Arduino clones.  You can also purchase the BBB fully assembled for an additional $10.  The owner of moderndevice.com is very helpful and will work with you if you run into problems.  Download the BBB assembly instructions and follow them carefully.  MAKE SURE to request the LM7805 voltage regulator for the board, or purchase one separately and use it in place of the smaller regulator that he ships by default.

The USB BUB Board plugs into the BBB (Arduino).  It has the FTDI USB to serial converter needed to program your BBB Arduino.  If you have already have an ICSP programmer, or an Arduino with a ZIF socket for programming the Atmega 328p, it is not necessary to purchase the USB BUB, though it is useful if debugging the microcontroller code, through the Arduino IDE's Serial Port Monitor.

IMPORTANT NOTE regarding the 2416 Dot Matrix Displays.  As you view my construction photos you will notice that my 2416 Dot Matrix Display boards don't match.  One has white (when not powered) L.E.D.s, the other has transparent ones.  The transparent set is slightly dimmer than the diffused set.  When I contacted Sure Electronics about the problem they agreed to send a replacement board.  It arrived just in time to complete this article, and the final photos and introduction video show the matching set.  Unfortunately, the new board they sent me uses the dimmer, transparent L.E.D.s.  Be sure to let Sure Electronics know that you need a matching set!  You may want to order 3 boards just to be safe.  Also, the green boards came out recently.  I don't have experience with them, but had they been available when I made my purchase I would have used the green.  Finally, remember that Sure Electronics is based in China.  Plan on waiting a while for your product to arrive, and arrange for someone to sign for the package.  The folks there are easy to work with.

PCBs:  If you wish to follow the step-by-step instructions I am providing you will need the Radio Shack printed circuit board, and you will need to trim the ends of it to fit properly in the enclosure.  This also means you need a right-angle connector on the 2x8 Shrouded Box Header (that the ribbon cable from the displays plugs into).  The right-angle connector is required so that the pins can be bent to bridge the breadboard gap on the Radio Shack PCB.  If I were to start from scratch, I'd try using one of the following prototype PCBs, which would also allow you to wire-up a straight 2x8 shrouded box header: If there is enough interest, I will design a circuit board and have them manufactured.Enclosure: The project enclosure is an almost perfect fit.  You'll see in the steps and photos that follow, that my strength is not in cutting plastic enclosures.  You will hopefully do much better and provide feedback on better methods.  Mine works great, but isn't great looking.  As you will see, the enclosure was something of an after-thought for me.  I had an entirely different enclosure planned, but this worked out much better.  (More information in following steps.) 

Jameco*: Each of the items listed above with an asterisk(*) can be purchased from Jameco, but require a minimum order of 10, so if calculating the cost keep this in mind.  (It is always good to have extra parts!)

Header Receptacle: The BBB has 18-pins for the power-supply and Arduino pins to plug into a breadboard.  Use the 20-pin header receptacle to plug the BBB into your printed circuit board as shown in the following instructions, with the following variations:
  • I did not have a 20-pin header receptacle, but I did have 2 8-pin receptacles.  This will work fine.  It is a tight fight to get them to align properly, but it works.  Just make sure to follow the pictures provided.  You'll notice that 2 of the BBB pins are left unconnected.
  • If you use the 20-pin header receptacle, 2-pins will remain unconnected.  Mark your board so that when you plug-in the BBB you know where it goes.
  • You could also forgo the breadboard pins on the BBB, and the socket on the secondary PCB, and simply run wires directly to the needed locations.  This may provide some flexibility with enclosures.
The 2x8 Shrouded header box is for plugging in the ribbon cable from the display matrices.  As mentioned above under PCBs, the right-angle version is needed if you have a gap like that on the Radio Shack PCB.  You could possible use the same board and cut copper traces to make a straight header box work properly.  I purchased my header box from a local supplier (M.C. Howards Electronics in Austin, TX), but they only had a few and I've not seen any more in subsequent trips.  The link provided above was the first one I found that had a matching part, but I don't have experience with the company.

SD-MMC Card: Wow, this is an over-priced component if there ever was one.  It works great!  In fact, don't bother with any of the Arduino SD card Shields.  They all seem to use a resistor network to drop the signal voltage to the 3.3 volts required by the SD card.  This will not work with all SD cards.  In fact, my card worked for only a few minutes this way, and when I put it back in the PC I had to format it, and then it never worked again with the Arduino until I used the 74HC4050 for the signal level conversion.  I had other cards that didn't work at all without this as well.  If you decide to use a different circuit board, and could plan out the fitting in the enclosure better, I would try to solder a much less expensive SD card socket to the board directly, instead of using the costly breakout board.  Incidentally, NKC Electronics has the same breakout board listed for much less, but it was unavailable when I last checked.  I don't remember if the breakout board includes header pins.  You will need 11.  A spare set can be ordered from Jameco: http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&productId=53532, for $0.75.

SD Card Addendum: I've commented at length in the comments (below) about alternatives to the relatively expensive SD Card breakout board.  In short, the photos below show experiments I've done with spare parts on a breadboard, using the alternatives for the SD Card socket.  Please read the comments and related Instructables for more information.

As for the SD card itself, smaller is better!  The Arduino code provided works only with a FAT16 filesystem, and only reads files from the root directory.  That means you have a limit of 512 image files on the card, and the files are only 100 bytes.  A very small card will work fine, and a card larger than 2GB probably will not work at all.  There are FAT32 libraries for the ATMega328, but in the time I had, it was more work than it was worth to get it working with the Arduino.  (More later.)

Finally, use a variety of wires when wiring the PCB.  It will make it easier to trace connections.  As you will see, I used red, black, green, yellow, and white.  I wish I had more colors.

Regarding the 9-volt power supply:  A 9 volt battery will work, but you will have strange problems when it begins to diminish.  Once the battery voltage (when tested on a meter) drops below 7 volts your display may light up fine, but there will be insufficient current to power the Arduino and the behavior is somewhat unpredictable.  A 9 volt wall-wart works great, and the LM7805 on the BBB should be able to handle a 12-volt input, like that from an auto-adapter.  (Please use caution though if you put this in a moving vehicle!  You alone are responsible for what happens if you distract other drivers!  You might even want to consider wiring up an accelerometer and disable the displays when the unit is in motion.  The circuit is yours as is the responsibility.  I recommend it for a home Window or Desktop, or shop Window, not a moving vehicle!  I love the idea of it as a bumper sticker, but not at the risk of anyone's life or health!  In general however this should be much less distracting than most roadside digital signs, and many printed bumper stickers with hard to read text.)

Tools
I used the following tools to complete this project:
  • A quality, variable wattage soldering iron
  • Wire cutters
  • Wire strippers
  • A multimeter (helpful for testing)
  • A large solder-less breadboard, for testing - you may not need this
  • A Dremel, with cutting wheels and drill bits (for making openings in the enclosure case)
  • A variable speed drill and various drill bits
Software
  • Arduino IDE 0017
  • My micro controller code (see Step 3)
  • GIMP image editor, or another editor capable of producing .xbm files
  • My xbmtodws code, to create image files for the SD card from .xbm files
« Previous StepDownload PDFView All StepsNext Step »
29 comments
Dec 9, 2011. 6:15 PMcedric3131 says:
can i use arduino uno ?
thanks.
Dec 5, 2011. 11:49 AMdubai says:
Great job , I really like the idea.
It's fantastic.
Oct 28, 2011. 12:09 PMefdat says:
is it possible me building my own led display? is yes please post the schematics
Jul 26, 2011. 4:28 AMElectrokV says:
I truly like your instructable here. Unfortunately, I don't have as much time as I once did oh, these many decades ago, and I have an issue which may not belong here, but it seems related. And, my quest even has to do with a MAKE instructable that takes a Mattel "Radar Gun" and enhances it for use with real auto traffic down your street rather than it's intended "toy" aspect. I have that around here somewhere and when I was pondering that circuit, I had an issue about trying to make an output display, which would be readable like the ones towns and various jurisdictions have where they put a solar powered RADAR gun in "trouble spots (I live on a very major cut-through street many hundreds of cars use to avoid the more congested highway intersection a few blocks away and the City Counsel mad the oh-so-BOLD move some years back and dared the evil mongers by placing 25 MPH signs up on my street when what I was asking for was for them to drop a handful of the rubber mats to slow the traffic down, sigh. They may have as well put up a 2 MPH sign on my street as waste the $ on the signs and I'll wager the bumpers would have cost less, but such is city life.

Well, I've thought of various things like getting the various colors of 'spray-down' parking lot marker paint all over my street to at least confuse those driving my into thinking there's something official going on and maybe they better slow down.

My main problem is I don't want to make a halfway decent instructable and just have someone walking down the street give it a kick and rip off all my parts!!! With that, I've considered trying to come up with something which would work in conjunction with solar cells and separate batteries than my car battery and have signs/flashers, etc. inside my car. Of course, I'm sure I would get the occasional nut that thinks someone who would dare tell him/her what to do only deserves broken head/tail lights, windows, can opener down the length of my car, etc.

I am a utiliti systems electrical engineer and our neighborhood is fed underground (dang in!), but if I just wanted to borrow a few pennies of the City's 208 V (or whatever they use - maybe 277) and power whatever I want with that AND keep it far enough off the ground to keep only the paint ball gunners and real zealots from getting to it.

But, with that beside, There's the 'ol visibar cop cars have and when those come on, speeders suddenly become model citizens instantly.

I don't know if you have ever seen that artist who, with sidewalk chalk makes the most amazing 3-D looking images when the viewer stands in one particular place. He can make a flat sidewalk look like he's crawling into a deep dark cave or whatever. But, even if I could afford him and put permanent pigments on both ends of my street, people would figure that out also pretty quickly, but filming their faces would be priceless.

In keeping with my desire that I keep things inside some kind of enclosure, or out of reach, I could go with something like the IR critter-cam setups that sense motion and snap a photo of something. But, if I put that near the ground, Gone it will be.

So, anyone have inexpensive ideas for a citizen to try to slow the traffic down on his street all by himself. It's not that my neighbors don't agree with me, it's just more they have other things to do, so I'm a committee of ONE. I do have an over-riding neighborhood association, but I think I would rather go to the City Counsel than deal with them sometimes. Of course none of you have ever been part of a small group and had ANY kind of disagreements on anything, have you? *grin*

All ideas are welcome short of breaking the law. Which does remind me of the two Austin late Teens who pretty much shut down the City of Boston, in the Commonwealth of Massachusetts several years ago with their little magnetic gadgets that were supposed to look like The Cartoon Network critter and planted them all over the country. If I had known they were going to put those things up, I would have tried to join them in order to get one of those!! God, I loved that.

Some years later, it was obvious the same programmer got hold of one of our TXDOT temp signs and re-programmed it, instead of something like "EXPECT ROAD DELAYS" TO "WARNING, ZOMBIES AHEAD."

i THINHK THE Cartoon Network, part of Ted Turner's "Empire along with Time Warner just wrote Boston a check for the alleged $0.333 million it supposedly cost Boston to react to their little LED gizmos designed to be put up into metal bridge pieces, so they would be hard to get down, yet advertise for "Adult Swim"

I don't want to go quite that far, and I've read physiological studies that something as simple perpendicular white stripes on a road slow people down because they are trying to figure out why the lines are there, so, with the possible threat of DPS, local cops, etc., they will drop below the speed limit to try to figure out what's going on.

But, that's far too blase' for me. I don't want to get a 1 kW pulsed laser and shoot them in the face (well, maybe sometimes after they've almost run over my kind), or make them swerve into several cars parked on the street, I just want to get their attention long enough to get them to slow down a bit.

If this is the wrong place for this, I would greatly appreciate anyone putting my quest in the proper forum

Sincerely,

ElctroKV in Austin, TX
May 24, 2011. 1:23 AMdomdomgin says:
can i use adruino duemilanove board
Jan 21, 2010. 9:03 PMdirty_valentine says:
***WARNING:READ THIS IF YOU WANT TO ATTEMPT THIS PROJECT***
First of all great project als_liahona. Unfortunately it looks like SURE ELECTRONICS rev'd the display board and changed the write progression. Your code appears to assume that the first byte written is in the first column in the upper left corner of the display and works its way right. This seems like the logical progression. Now the first byte starts in the 8th column and works its way to the 1st then jumps to the 16th column works left to 9th then to the 24th, etc, etc. I have attached two photos. One using your code and a second where I flipped the bytes to the new progression. 

I can not believe SURE changed the display to this write progression. I looked at the PDF manual for the RED and GREEN LED displays and they both seem to have this progression now.   I'm trying to decide if I should include the code to rearrange the bits in the Arduino, or externally rearrange the bits before writing to the SD card. If I fix the code in the Arduino, I'll send you a copy to post.
DWS.JPGEDWS.JPG
Jul 9, 2010. 9:31 PMsunishpootheri says:
hai this is goo d idea just know how can get i like to buy just mail the deatails to sunishpootheri@gmail.com
Jul 10, 2010. 8:37 AMdirty_valentine says:
I think the autor of this instructable did a good job of explaining where to purchase the items necessary as well as documenting the process. You should read the instructable if you want to make your own.
Jan 30, 2010. 1:48 PMdirty_valentine says:
NOTE: FIX FOR BIT SWAPPING!!!
 
Here is code you can use to fix the bit swapping on the SURE 16x24 LED display boards (My board is REV 1.1 of the green LED board). To fix for the bit swapping issue simply replace the DisplayBuffer() function of the Digital Window Sticker code with the following:

**********************************************************************************
  void DisplayBuffer(const unsigned char *pucData192, bool bReverse=false)
  // pucData192 must by 192 bytes!
  {
    unsigned char sucData192[192];  // Register for swapped data
    for(int j = 0; j < 8; j++)
    {
       for(int i = 0; i < 8; i++)
       {
          *(sucData192+((j*16)+(2*i))) = *(pucData192+((j*16)+14-(2*i)));
          *(sucData192+((j*16)+(2*i)+1)) = *(pucData192+((j*16)+15-(2*i)));
       }
    }
    // Data swapped, display swapped data
    DisplayBufferOnSide(sucData192, m_iCS1Pin, bReverse);
    DisplayBufferOnSide(sucData192+48, m_iCS2Pin, bReverse);   
  }
***********************************************************************************
Jan 31, 2010. 2:37 PMdirty_valentine says:
No problem. I have other Arduino software manipulation I want to do to the pictures. Conseptually it is easier to do with your version of the data rather than the swapped version. For example, scrolling your data across the board is straight forward, but scrolling the swapped data is not. It was a real brain tease just to figure how to perform the swap. Admitedly it is a number of swaps and an additional register, but I think I have the space and time to let the Arduino do the work.
Jan 22, 2010. 8:01 AMdirty_valentine says:
I might ping SURE on this but I'm not sure it will do any good. I think SURE screwed up and swapped column bits on the display when they rev'd the board, though it's possible that SURE bought a different 8x8 LED display that has the column pins swapped. As a person who designs ICs I can not imaging making a mistake like this and not fixing it. At $12 a board the margins have to be thin so if SURE made a bunch of PCBs before finding this mistake they probably fixed the problem with toner and changed their datasheet rather than throwing out the boards. The question is will they change it back on the next rev or is this screwed up writing pattern permanent.
Jan 22, 2010. 7:07 AMdirty_valentine says:
I just laboriously swapped the actual matrix bits for displaying NoCard. I have not actually edited the Class function or changed the xbmtodws code to do the swap for me yet. Thinking about it last night I think I'm going to edit the Class code for Arduino. It will make the program a little bigger but the display data will be more intuitive. I will post the new DWS Arduino code when I get around to fixing it. It might take a little while because I'm new to Arduino and I have not done a lot of programming in C. I've been working with PICs in assembly mostly. I finally decided to bite the bullet and learn to program micros in C because assembly is incredibly laborious.
Jan 14, 2010. 10:27 PMKANahas says:
 So, got a few questions for you, als_liahona. I really haven't gotten around to pulling apart the sketch yet, so I hope I'm not missing anything too obvious.  Can more then two 2416 matrices be used in tandem?  Such as a 2*4 array?  Also, I've noticed you have a message for "Insert SD Card".  Is that image stored on the Arduino itself?  Does the code support standard text that can be linked directly to the output? eg: matrixWrite("I'm sample text")  One more –– Would it be possible to use image sprites? (one physical image consisting of two or more sections that can be broken up by positioning)  Ok, I lied, another one:  if text is not supported, is there a better way to provide a countdown timer?


Thanks in advance!!!
Dec 3, 2009. 7:26 AMnoelportugal says:
Nice! This is what I need to display the current playing song and the person/location that requested on my xmas-box arduino project!!!

http://www.instructables.com/id/xmas-box-ArduinoioBridge-internet-controlled-Chr/

For sure will implement it next year!!!
Nov 13, 2009. 7:06 PMReCreate says:
Now make it RGB and add 4 million more pixels! :P
This is awesome, I never knew the arduino was capable of such things, (and yes i know 4 million pixels would be pretty near impossible)
Rated! Favorite-ed!
Nov 13, 2009. 7:07 PMReCreate says:
Edit: I just realized I can't favorite anything anymore, Damnit.(go-pro madness)
Nov 11, 2009. 9:34 PMfungus amungus says:
Great project! The message you display is also awesome of course :)
Nov 9, 2009. 3:43 AMWyoJustin says:
Great project, I didn't know about those large LED matrices -- sweet.
Justin
Nov 9, 2009. 2:10 AMdrj113 says:
What an excelent effort - beautifully done - The use of the commercial displays makes the project much simpler.

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
10
Followers
2
Author:als_liahona(Andrew L. Sandoval)
I've been writing software since I was in the 6th grade. In recent years I've developed for Blue Coat Systems, what I believe is the most advanced code injection and API hooking engine for Windows ev...
more »