Introduction: GLO: the Midnight Message Board and RSS Display

About: Im a Student in A levels who is deeply into Electronics and Computing. Most of my electronics knowledge has been achieved through tinkering around with stuff...

As a little kid, I remember the Glow in the Dark stars and shapes one could stick on their ceiling for night time view, frankly I remember the shapes being extremely boring

Older, equipped with some basic electronics knowledge and a deep interest in innovative display systems, I thought of a way of transforming my Rooms wall into a dynamic glow in the dark canvas.

While doodling on a Vinyl Glow in the Dark paper with a bright white light, i realized an interesting display could be built from it: GLO.

GLO consists of an array of 5mm UV LEDs that run on a simple linear axis, powered by long thread and a Stepper motor. The UV leds act like pixels, turning on at the right time, and drawing our desired text on UV sensitive surface such as my Wall (paper).

The result is a cool mystic, message board that glows in the dark and displays Twitter Trends, RSS Feeds, and Custom Text on my wall…slowly fading out.

Warning: Lying in bed watching  favorite news slowly fade out, can make you (me atleast) very sleepy.

Here is a Video of it, pulling and printing a Sports Headline from BBC on my wall:






This is also a contest entry, if you like it please vote for it :)





Step 1: Building the UV LED Array

I am building this as per my resources and what I think is the most efficient way to implement this. When you are building  be sure to let the Inventor in you come out,  do stuff the way it suits you. Nevertheless this is how I implemented mine

So in this step we will be focusing on building the UV Led Array that will act as our Drawing Pen.

Parts you need for this step:
1 x 2” by 3” Perfboard
12 x 5mm UV Leds
12 x 220ohm Resistors
2 x 74HC595 Shift Registers
2 x IC Mount/Holder
1 x Some hookup wire
1x  7 wire Ribbon Cable (the length should be a a little longer than your display length)

Tools you need:
Helping Hands
Soldering Iron
Solder
Wire Cutter
Wire Stripper

Start by placing everything on the perfboard, and think about how you are going to solder everything in place, it’s a small perfboard, so everything will be quite snug. You might find it easier to use Helping Hands to hold everything while you solder.
The leds have to be positioned at the centre of the board while the other components at either side of these.
Before you start soldering everything, just place all the components in their places to make sure everything will fit well and will conveniently connect together when needed.

Here is the important bit, the leds will only leave a sharp impression on the UV sensitive surface if they are right up against it. Currently, as it stands, the Shift registers in their Sockets protrude out, however we want the leds to protrude just a few millimeters above the IC’s


Keeping that in mind, let’s begin soldering, I recommended removing everything from the perfboard and soldering the component in this order.
Place the IC sockets in their place, and solder them. Next place the resistors, and ONLY solder their common leads. Next bend the resistor leads and solder to achieve a common ground connection between each resistor. Snip the excess.

Next place the leds in place, ONE BY ONE, it is important that you get their orientation (Short lead -, Long lead +) and height right. They should protrude about 2-3mm from the ICs. Now solder each LEDs negative, (short lead) to its respective resistor.
Repeat this for each LED, carefully making sure they are all level with each other.

Now follow the schematic and make all the required connections, because the board is quite small you will have to come up with innovative ways to make the connections (messy). The Terminal Block in the diagram is a representation of the Ribbon Cable.

Solder your ribbon cable at one end of the perfboard, and connect all the wires that will be connected to the arduino to it.

The order of the connections on the ribbon cable are not important as long as you remember (label them!) which one is which. For me, the order was dictated by which connection was the easiest to form.
I ended up with:
Master Clear, Ground, 5v, Clock, Data, Output Enable, Latch

Yours may differ.

Once everything is soldered, you need to divide the 12 LEDs, into a group of 6 LEDs, this will form 2 lines of text. Gently push the leds apart until you have 6 at either side with a little gap in between.

If you are getting confused about any step, do check out all the photos, i have attached loads of them.

Once that is done, give yourself a pat on the back and lets move on to testing.

Step 2: Testing the UV LED Array

Testing is very simple, you want to check if all the leds are lighting up and are wired correctly. For this I have attached a test sketch that you should run on the Arduino. Make sure the defined pins correspond to your connections.

Connect your LED Array to the Arduino using a breadboard and a few wires, next download the sketch and upload it to the Arduino, if you have soldered and connected everything properly then the sketch should TURN ON EACH LED ONE BY ONE.

Brace yourself, a bit of theory coming up...

Step 3: A Bit of Theory

Heres a little theory behind this project which will help you understand and customize the displayed text.

The Led array displays text by imprinting a section of a character as it moves along the glowing surface. Each character consists of a 6x5 Bit pattern. The Arduino sketch cycles through each column of each character in our message. As mentioned earlier, our 12 LED array is split into 2 groups, which means we can write 2 lines and about 45-50 Characters between each refresh time. 

Our sketch stores each character as a 2 dimensional array and then refers to the index using corresponding  ASCII Codes.

The sketch also consists of 2 Main write Routines. WriteOut1, writes to the first line and WriteOut2 to the second line. If lets say we have a Message that is 50 characters long then, Line one would display 35 and the remaining 15 will automatically be written to the second line.

WriteOut1 is rather simple, lets say we have a character column B10110100 (last 2 bits will always be 0 as each character is a max 6 bits long), this will be shifted out to the only the first Shift Register and the corresponding LEDS will be lit up, ie, on-off-on-on-off-on-off-off.

WriteOut2 is a bit more complicated, for this we have you use part of WriteOut1 aswell. Lets say we have the byte B11001100 that we want to shift out to the second group of 6 leds, we would first need to shift out B00000011 (First 2 bits of our byte combined with six leading Zeros) to the first shift register and then the remaining B00110000 (Rest of the Byte shifted up) to the second shift register.


Enough of the Theory lets move on to building the axis..


Step 4: Font Generation

Now a bit on how i designed the 6x5 Font (it wasnt easy) and how you could design your own font for this:

Download the program called "PixelFontEdit" from:

2) Next click File --> Open --> Navigate to the install directory --> Fonts -->pf -->and open the desired font file
3) Perform any changes you want such as rotate, invert etc, (I deleted an existing font file and wrote my own 6x5 font here.)
4) Click File --> Export as C include -->save the file in a location
5) Navigate to this file, open in notepad and edit the format as follows:

This:
unsigned char font[2048] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 000 (.)
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, // Char 001 (.)
0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, // Char 002 (.)
0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, // Char 003 (.)
0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, // Char 004 (.)
0x3C, 0x3C, 0x18, 0xFF, 0xE7, 0x18, 0x3C, 0x00, // Char 005 (.)
}

Becomes:
char font[][8] =
{
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},                   // Char 000 (.)
{0x7E, 0x81, 0x95, 0xB1, 0xB1, 0x95, 0x81, 0x7E},                 // Char 001 (.)
{0x7E, 0xFF, 0xEB, 0xCF, 0xCF, 0xEB, 0xFF, 0x7E},              // Char 002 (.)
{0x0E, 0x1F, 0x3F, 0x7E, 0x3F, 0x1F, 0x0E, 0x00},             // Char 003 (.)
{0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00},          // Char 004 (.)
{0x18, 0x18, 0x5B, 0x6F, 0x6F, 0x5B, 0x18, 0x18}          // Char 005 (.)
}

Basically you have to enclose the bit patterns of each character in a curly bracket.
IMPORTANT: Do not delete any unwanted characters , as the order of the elements are very important! (ASCII based character referring   )

I have shown the example for only 5 characters, you should do this for all the characters in the file (I know its loooong).

6) Once completed save the text file, you will need to copy this text file into the Arduino Sketch mentioned further on.

NOTE: I have designed both upper case and lower case characters, however, i advise you to only print using Upper case characters as the lower case look a bit funny with a 6 bit height.
Now for some Building!!

Step 5: To the Wall

In this step we will mount everything to a wall that will serve as our displaying surface
You will need:

The hardware:
• A stepper motor
• A 3D printed or improvised wall mount for the stepper motor
• Parcel thread/string
• 4 x 25mm round hooks
• A screw to fix the motor mount on the wall
• 2x M3 screw to fix the motor to the mount
• 2-3 sheets of Glow in the dark A4 Vinyl Inkjet Paper depending on the size of your wall.
• A weight. You need a suitable heavy object to act as the counter weight for our linear axis. I am using the stand of my soldering helping hands. A 300-500g weight would do.

The Electronics:
• A step stick stepper motor controller.

Note on the Glow in the Dark Surface:

The most important part of ths project is the glow in the dark surface, the perfect surface is one that glows sharply and has a glow time of a few minutes. I tried many things before going with sheets of A4 vinyl paper, I found out that they had the sharpest glow and decent glow life (5-6 minutes). You could try glow in the dark paint, but preparing a surface with this paint is a pain; not only do you have to apply multiple layers of paint, the end result is a blurry glow, which is not suitable for our message board. However if you get around this somehow, the end result is a very short glow life (1-2 minutes) which means you can display messages fairly quickly! I found mine on Ebay UK.

http://www.ebay.co.uk/itm/Green-Glow-in-the-dark-A4-inkjet-printer-photo-vinyl-paper-/280867333278?pt=UK_Crafts_Other_Crafts_EH&hash=item4164ff649e

Also when choosing a Colour, i learnt that Red and Violet have the shortest glow life and Green has the longest glow life.

Lets start building the wall mount:

At first measure the wall you want to mount the display, and depending on that cut appropriate lengths of parcel string. The parcel string should be atleast 2.5 times the length of your display area. 

Next leave about 3 inches from all sides of the wall and mark the vertices of a rectangle, whose width is 3-4 inches bigger than your desired display length and the height is about 10-12 inches. The dimensions are not that strict.

Drill holes, and drive the hooks into the wall, in all but one of the vertex; The bottom right vertex will hold our motor.

The end result should be 3 hooks and a motor mount fixed on the wall.

Next, take one end of your parcel string and wind it round the motor shaft a couple of times and tape it so it doesn’t slip, guide the the string through the hook above the motor, then thread it through the holes on the perfboard. 
Finally guide the string through the remaining hooks and attach the weight on the free end of the string.

Now you want to make a Motor Shaft End Stop, so that the winded string doesnt slip from the end of the motor shaft. You can do this in many ways, i just taped a 15mm screw at the end of the motor shaft, this suprisingly held the string in place

Make sure the string is tense and has only 2-3 winding on the motor shaft, now move your LED array to the left most side of the axis by hand, making sure the string doesnt move.

Now, tape or glue your glow in the dark paper to the wall, making sure that all LEDs are on it. I used 2 glow in the dark sheets, so taped them one after another, making sure they are flush next to each other.

Last but not least, wire everything up; Connect your ribbon cable to the arduino, and connect your motor to the Driver Board and then to the arduino. I have attached many pictures for the whole setup

Now we are finally ready to upload our code and display some text! YAY!

Step 6: Schematics

This part lists the all the schematics you need to follow for this build. 

1) UV led Array:

The order of the Terminal Block pins in the schematic that connect to the arduino (Top to Bottom):
Serial In, Output Enable, Latch, Clock, Master Clear, Positive 5V, Ground.

2) Arduino + Stepper Motor + UV led
I am using the step stick and i have attached the schematic for that. 

All the pins can be connected to the Arduino in any order. Make sure you define the pins your are using!

Step 7: The Software + First Run

This part will describe all of the software needed for our message board to fianlly run...

There are 2 main software we need, the Arduino Sketch and the Python Script that will fetch and send the RSS feeds to out Arduino.

I have uploaded both of these here

The python Script only fetches, parses and sends RSS Feeds to the arduino via the Serial port and the Arduino sketch sends the corresponding signals to the Stepper Motor and Led Array.

Download the Arduino Sketch and upload it to the Arduino, next download the python script, make sure the Led array is at the left most side of its travel. Un plug the motor supply, run the script and after the Arduino stabilizes quickly plug in the Power Supply back, after about 5 seconds you will the Display moving, writing text. The Script will then pause for 300 seconds and Write messages again.

The sketch accepts a string of text via the serial port, which means you can also type in custom messages in the Arduino IDE Serial Monitor.

Start Experimenting! 

I hope you liked my inscrutable. This is my first inscrutable, i am looking forward to your feedback in the comments so i can improve my explaining skills :) oh, and this is also m first ever contest entry, if you like my inscrutable PLEASE VOTE FOR IT :) 

If you need further explanation or help in any step let me know in the comments.

Make It Glow Contest

First Prize in the
Make It Glow Contest

Supercharged Contest

Participated in the
Supercharged Contest