Build this internet connected sign to help raise funds for a local charity!
Learn about high power LEDs, Arduino, Raspberry Pi & python, digital radios, wiring & soldering, and a little carpentry.
Hopefully, in 10 hours or so, you can do what took me at least 100 hours to design and construct.
Step 1: Overview
There's a bunch of pieces to this thing, so let's step back for a minute and get an overview. Our Internet connected signboard is going to be outside, hopefully visible from the street. In my case, and I suspect in many cases, there's isn't an available Wi-Fi signal at the signboard. So, we'll use a Raspberry Pi to connect to the internet via Wi-Fi (#1 in the diagram) at some nearby location. This Raspberry Pi uses the Kimono web scraping service to read the current values from an online fundraising thermometer. An Arduino out at the signboard actually controls the LEDs (#3 in the diagram), using femtobuck LED drivers. The Raspberry Pi and Arduino are connected by two XBee Zigbee radios (#2 in the diagram).
Step 2: Parts List
A detailed parts list is here with links to sources the materials. There are substitutes for many of these things -- I was time crunched, and tended to buy rather than salvage, and I tended to choose certainty over cost. If you're willing to salvage and experiment, you could reduce the cost significantly.
Tube and Central Strut
- 6" OD x 4' Acrylite Tube
- 3/4" x 4' Dowel
- 3/4" Board (1' x 3')
- A small thin board (same size as Arduino)
- Weatherproof sealant
- 4-6 2" wood screws
- Wood Glue
- 3/4 in. x 10 ft. Galvanized Steel Hanger Strap
- 10-15 3/8" wood screws
- 10 Packs of 5 LEDs (red)
- Thermal glue
- Clear tape
- 8 Femtobucks
- 12V 5A switching power supply
- 4' of 2 conductor 14 gauge household electric wire (or similar)
- 50' of Hook-up wire in white, red, and black
- Electrical tape
- 8" and 12" Wire ties
- Arduino Mega
- USB Type A cable
- 1 set of standoff and screws for Arduino
- Raspberry Pi Model B+
- Raspberry Pi Model B+ Enclosure
- 1A USB Power supply
- Micro USB cable
- 8GB Raspberry Pi microSD card
- Wi-fi Adaptor
- Mini HDMI cable, TV, and keyboard (to get the Raspberry Pi running the first time)
- XBee breakout
- 2 sets of XBee sockets
- XBee Arduino Shield
- XBee USB Explorer
- Mini USB cable
- Jumper wires F/F
- 2 sets of Arduino Stackable Headers
- 2 XBee 2mW Wire Antenna - Series 2 radios
Sign and Installation
- 4' x 8' sheet of plywood for the sign
- Paint or vinyl graphic for the sign
- 2 Fence stakes (we used these ones)
- Soldering Iron
- Jigsaw and blades for regular and curve cutting
- Drill and standard bits
- 7/8" spade drill bit
- Hammer and small brad nails
- Compass for drawing circles
- Clamps and sawhorses
- Pliers & sidecutters
- Multimeter (optional)
- Staplegun (if using a vinyl graphic)
- Sandpaper / Sander (optional)
Step 3: Central Strut & Tube
The central strut is the core of your light tower. It's a 4' long 3/4" diameter dowel with two circles of 3/4" wood that form the base. Everything in the light tower hangs off this.
Top and Bottom Caps
First, cut 4 circles out of the 3/4" board. Two should be 6" in diameter, and two should be 5 3/4" diameter. Circles are hard to cut, so I used a compass to draw the circles, rough cut the piece out, drilled a small hole at the center, then used a small nail to pin the piece so that it turned freely about the center, and then cut the board with a jigsaw using a curve cutting blade holding the saw still, and turning the piece under it. Drill a 7/8" diameter hole (slightly bigger than the 3/4" dowel) in the middle of the two 5 3/4" disks. This will hold the central 3/4" dowel. Stack the 5 3/4" disk on top of the 6" disk so they are centered on each other, glue them together with wood glue, clamp them and let them dry overnight. This will be the top and bottom caps of the tube -- see the picture for what it should look like when it's done.
Take the 4' dowel and insert into the 7/8" hole in the bottom cap. Drill a pilot hole through the center of the bottom cap into the center of the dowel, and use 2" screw to secure the dowel to the disk. You should counterbore the hole a little so that the head of the screw doesn't stick out (or it won't stand up). Cut a small notch out of the edge of both disks in the bottom cap to accommodate the power cord.
I recommend that you taper or round the other (top) end of the dowel with a sander or sandpaper so that it's easier to assemble. This isn't required, but it does make life easier later.
Top of the tube
The tube is a piece of 6" tube of translucent Acrylite that I bought online. I spent a lot of time trying to source this, and found it surprisingly hard to find something that worked. There must be other options, but I haven't found one that works. If you have success with a less expensive option, or you salvage something, I'd love to hear about it!
Liberally coat the edges of the smaller disk of the top cap with weatherproof sealant, and then insert it into the top of the tube. Let it dry overnight. Now you've got a waterproof shell for your sign!
Try it out
If you want to try it out, you can assemble the two pieces. Put the tube on the floor upside down (capped end down). Make sure you've got plenty of clearance above you, and then insert the central strut into the tube, and guide the dowel into the hole at the top of the tube. You can peek through the hole for the power cord to align the end of the dowel into the hole in the top cap.
Orientation for the rest of the Instructable
Let's agree now on how we're going to orient ourselves when talking about things on the central strut. The base with the bottom cap is, predictably, the bottom. The other end of the dowel (without a cap) is the top. Stand the strut up and put the notch for the power cord at the back, and the opposite side (now facing you) is the front. The two sides are left, and right. You may find it useful to mark the 4 sides on the bottom cap so that you can keep track as we go through the directions. There are 8 segments to the display, and these are numbered from 1 at the bottom to 8 at the top.
Step 4: Mount LEDs
Each of the LEDs is high power (3 watts!), and so require a significant heat sink. I chose to mount the LEDs by gluing them to a metal strip using a thermally conductive epoxy. There are 8 segments to the sign, with 6 LEDs for each segment, so 48 LEDs in total.
Mark the position of each segment on the central strut. The first segment is 3" from the top of the strut, and the successive ones are 6" apart. Each segment is a circle of pipe hanger strap. I bent them into a complex shape about 3 inches in diameter (see the pictures). See below for other ideas that might be simpler and better. Screw the straps in place to the central strut along the left side (see the previous step about which side is left) using 3/8" screws.
Before you start gluing on the LEDs, you should put the arduino mount into place. It's a piece of thin board slightly larger than the Arduino. Drill 4 holes to match the mounting holes of the Arduino, and two along the center of the long axis to mount it to the central strut between segments 6 and 7. Attach it to the strut by drilling two holes into the strut on the front side, and screwing it down with 3/8" wood screws. I don't have a great photo of this, but you can get the idea from the photo above.
The LEDs are glued in place with a thermal epoxy. This is something that I found hard to source, and I had to buy quite a bit of it. I have enough for about 90 signs! If you can find another source, an alternate method, or smaller quantities, I'd love to hear about it. Just be careful that you don't buy thermal grease used for attaching heat sinks to CPUs -- that won't work. Read the directions on the epoxy, do it in a well ventilated place, and wear gloves.
There are 6 LEDs on each segment. Three of the LEDs will be wired as a chain in series, with the 2 chains wired in parallel. You can make the wiring easier if you glue the LEDs in the right orientation. Read the directions a few times to make sure you see how it will end up. See the diagram to help. Imagine you printed out the diagram, and bent it into a circle.
Put the central strut horizontally on the sawhorses, or the backs of a couple of chairs, and clamp it in place with the front facing up. Put paper down to protect the floor in case you drip epoxy or an LEDs falls off. Glue 1 LED on each of the segments, with the negative side to the left. Use scotch tape or similar to hold the LED in place while the epoxy sets. In my case, the epoxy takes several hours to set and cure. Turn the central strut 60 degrees, and repeat 2 more times, with the LEDs in the same orientation (so that the plus side of one LED is next to the minus side of the next LED). On the 4th time, turn the strut 60 degrees, and mount the LEDs the other way around (so that the two plus sides are next to each other). and repeat 2 more times, with the LEDs in the same orientation. When you're done, the 6th and 1st LEDs will have their two negative sides next to each other. Once you're done, you'll have 48 LEDs mounted. Congratulations!
If I were doing this again, I'd try to find a 1 1/2" diameter circle of 3/4" metal. I'd drill a hole in it, and use a 3/8" spacer and a 3/4" wood screw to attach the circle to the central strut. I think it would be simpler, and neater. I also think that moving the LEDs away from the tube would be an improvement, to give a bit more space for the light to spread out.
Step 5: Wiring
There's a fair bit of wiring to get this thing all going. First thing is to wire up the power bus, then the power electronics for the LEDs which are controlled by 8 femtobuck LED drivers, then finally the controls between the femtobucks and the arduino. For reference, I've included a wiring diagram and schematic.
The Femtobuck is a cool little device for controlling high power LEDs. The IC on board can efficiently convert any input voltage and control the power delivered to the LEDs to ensure that they run at the correct voltage and maximum current. It ensures that your LEDs all produce the same brightness level, and limits the chances that you'll burn out your LEDs. However, at $8 apiece, it adds to the cost. See below for other ideas if you've got time and are willing to experiment.
While you're waiting for the epoxy on the previous step to cure, you can solder wires onto the femtobucks. Each femtobuck has the LEDs connections on one end (the two holes -- use the two closer to the center) and the power and control signals on the other end. Solder a red 4" wire to the LED plus terminal. Solder a black 4" wire to the LED minus terminal. Solder a red 3" wire to the power plus terminal. Solder a black 3" wire to power minus terminal. The control signal line is a little harder. Each femtobuck is a different distance from the arduino. Make the white control signal wires: 4 12" long, and then the next four 18", 24", 30", and 36" long. Solder these to the control plus terminals. You don't need to connect the control minus signals -- since everything is on the same ground plane in this design, it's not necessary, and simplifies the wiring.
You'll have to wait for the epoxy from the previous step to dry before going any further.
Power Supply and Main Bus
This thing needs power, and we supply it through a power supply that's mounted between segments 1 and 2. I chose a 12V, 5A power supply, mostly because I had it on hand. See below for a discussion of options regarding power supplies. Mount the supply on the back side of the main strut using a couple of wire ties, with the 120V side facing down. The wire will go out through the slot you cut in the bottom cap earlier.
For the main bus, I used two conductors from a 4' piece of regular 14 gauge household electrical wire, which I had on hand. Run the wire up the back side of the central strut, and loosely wire tie it in place between each segment (leave enough slack to allow you to slip the femtobucks and other wires under it). As built, even with all the LEDs on, we'll draw less than 3A, but it's usually wise to build in a significant margin of error on these things. Charts like this one say that you could go down to 18 gauge without a problem. You'll tap into this bus where ever you need power along the length of the central strut.
You can either cut the power supply 12 volt wire and directly wire it to your bus (the center wire is plus), or keep the 12 volt connector and use a female barrel jack like this one. Connect the black bus wire to the negative line of the power supply. Connect the white bus wire to the plus line of the power supply.
Mount and Wire Femtobucks
Mount the first femtobuck with the longest control wire for segment 1 on the front side of the strut between segments 1 and 2 (opposite the power supply). Thread the control wire along the front side of the strut through the wire ties all the way up to where the arduino will be between segments 6 and 7. Use a knife to carefully strip away insulation from the the bus wire, and connect the power wires (black to black, red to white). See the picture above of a single segment -- you can see the connection there (though I used white wire in the picture, rather than red). Solder the wires, and use electrical tape to keep things from shorting. Slip the femtobuck under the wire ties holding the bus on the right side of the strut. You can tighten this wire tie. Ignore the LED wires for now -- we'll come back to those.
Repeat this for each of the next 3 femtobucks with the longer control wires for segments 2, 3, and 4. Put the femtobucks for segments 5 and 6 (with the 12" control wires) together between segments 5 and 6, to allow space for wiring around the arduino. Put the femtobucks for segments 7 and 8 (also with 12" control wires) together between segments 7 and 8, and thread their control wires down to the arduino.
Wiring the LEDs is pretty straightforward, but there's a lot of them. We'll walk through a single segment -- they are all the same -- start from the bottom and work up. Refer to the photo and diagram above to see how this works. Find the two LEDs on the back side that have their two plus sides facing each other. Take the red LED plus wire from the femtobuck, strip the end, and solder it to one of the plus pads on one of these LEDs. Strip and solder a short red wire between the plus pads of these two LEDs. From each of the negative pads of the two LEDs, solder a short black wire from the negative pad to the plus side of the LED next to it. Repeat to connect the next LEDs around both the left and right sides. Finally, solder the black LED minus wire from the femtobuck to one of the negative pads of the two LEDs on the front side with the two minus sides facing each other. Solder those two negative pads together with a short black wire.
Try it Out
A this point, you should be able to test your wiring. If the control wire of the femtobucks is left unconnected, they will turn the LEDs on at full power. So, if all your wiring is right, you can plug in the power supply, and all your LEDs will light up. Note -- these are powerful LEDs -- they are really, really bright! Don't put your eyes too close. Spend some time now debugging and fixing any problems that you can see -- if you know the electronics are working 100%, it's easier to debug other problems. If you want to turn off any segment, you can connect its control wire to ground, and the femtobuck will shut that segment off.
One note -- LEDs can fail, and sometimes they fail shorted, and sometimes they fail open. If you have a single side of a segment that doesn't light up, try using a short piece of wire to bypass each of the LEDs in the bad segment to figure out which one is bad.
The LEDs from Sparkfun are pretty expensive -- about $1.60 apiece. You probably could source something cheaper to get similar results. I wasn't able to figure out where they were from, but I'm sure that you could research it. Also, the choice to use Femtobucks is also a pricey one -- but it is conservative -- this was my first foray into the world of high power LEDs. You don't really need the flexibility, and someone with more confidence (or time) could build something cheaper and more closely matched to the power supply. The power supply is way overspeced -- you could drop to a 9V / 3A supply. The femtobucks simply require their input voltage be 1 volt higher than the LEDs voltage. At 2.4V each, the chain of 3 LEDs only need 7.2V. Also, you could make this significantly brighter. By default, the femtobucks put out 300mA. In theory, the LEDs take 700mA each, so you could supply more than an 1.4A to each segment, if you wanted. You'd need a bigger power supply, and you'd need to follow the instructions to change the current limiting resistor on the femtobuck boards -- you can triple their power output to 1Amp. These LEDs are visible on a sunny day outdoors, but they could be brighter.
Step 6: Arduino
The Arduino controls the sign. Since the sign is typically positioned somewhere where it doesn't have access to Wi-Fi, the arduino listens for commands over the XBee radio, and lights up the lights appropriately. There's very little smarts on the signboard.
Arduino, Xbee Shield, & XBee Router
Read the serial number off one of your Xbee radios, and write it down -- you'll need it later, and its hard to read once it's mounted. Take your XBee shield and solder the Xbee headers and arduino stackable headers to it. I find that it works well to put one of the Xbee radios in the sockets while you solder them in in order to get them lined up well. Similarly, if you have another arduino shield lying around, you can use that to make sure that the arduino pins are lined up well. Make sure that the switch on the Xbee shield is set to DLINE for now. If it's set to UART, you will not be able to program your arduino through the USB cable. Mount your Arduino Mega on the board that you mounted on the front side with a couple of standoffs and 8 screws. Put the Xbee shield on the arduino. Note that some of the pins don't have a matching socket on the Mega. The shield was made for an Uno R3, and the Sainsmart Mega has an older pin layout. You can either ignore the ones that don't match (you don't need them), or cut them off -- your choice. Now, put your Xbee radio into its socket on the shield. If the Xbee is fresh out of the box, the default configuration (Router AT with default settings) will work correctly.
Wire the Arduino
In order to access the arduino easily, I used another set of Arduino stackable headers that I plugged into the shield. That way, if you need to take out the arduino for some reason, you can disconnect all the pins without mixing them up. Each segment is controlled by a single PWM pin on the arduino. Because there's 8 segments, you need 8 PWMs, so you have to use a Arduino Mega. You should have 8 white wires leading from the femtobucks. Starting with the one from segment 1, cut to length and strip the end, plug it into DIO2 (you can't use 0 and 1, that's the serial port). Put the control wire from segment 2 into DIO3, etc. Segment 8 should end up in DIO9. I found that I needed to bend the headers over so that there was enough clearance for the arduino, shield, XBee, and wires to fit into the tube.
The Arduino accepts a wide range of voltages. You can connect the Arduino's Vin pin (NOT 5V) to the white wire of the power bus, just like the femtobucks. Connect one of the Arduino's ground pins to the black wire of the power bus. Solder and tape those connections.
Once you're certain that you've got the Arduino wiring right, you can optionally use superglue to permanently attach the control and power wires to the arduino headers. Just watch out -- the vapors from superglue can make the clear plastic on the LEDs haze over -- put a fan on the glue while it's drying to dissipate vapors.
Program the Arduino
I'm assuming you've worked with Arduino. If you haven't, I recommend you spend some time with one of the many great getting started tutorials.
With the power to the sign disconnected, plug your Arduino into your computer using a USB cable. Make sure that the switch on the XBee shield is set to DLINE (so it's not connected to the serial port). Use the Arduino IDE to download and run the SignArduino code from my GitHub repository. This code is pretty basic -- I'm planning to improve in the coming months.
Try it out
Disconnect the USB cable, switch the XBee shield back to UART, and power up the sign. The Arduino will do a power on self test, and turn on each of the segments in sequence, then turn them all off.
You can try out the serial communications as well. Disconnect the Vin wire from the power bus, put the switch to DLINE, and plug in the USB cable. Power up the sign, and start the serial monitor in the Arduino IDE. Type "+111111111-". All the segments should light at the lowest brightness. Type "+99999999-" -- all should go on at full brightness. Type "+00000000-" -- That should turn them all off. The '+' and '-' characters act as a simple protocol guard, and there has to be 8 digits, '0' through '9' The Arduino gives an error if it doesn't see this, and says "Accepted" when a correct sequence comes through.
Don't forget to disconnect the USB cable, switch the XBee shield back to UART, and reattach the Vin line when you're done.
The design allows for the intensity of each segment to be individually controlled, which is overly flexible. With some electronics improvements, you could reduce the number of PWMs, and allow the use of a cheaper Arduino. Also, I'd originally intended to have a photosensor on the Arduino to allow for the sign to dim itself based on ambient conditions, but I chose a simpler method in order to get the thing out the door. I'd like to have a better response string to commands, and I'd like to retrieve the status of the Xbee connection and return it to the Raspberry Pi.
Step 7: XBee
The XBee radios provide a connection between the Raspberry Pi (which is connected to the Wi-fi, and decides what to display), and the Arduino (which controls the sign). Under ideal conditions (line of sight, no obstacles, no precipitation, etc.), the XBee series 2 2mW radios can communicate over about 100 yards.
Configuring the XBee Coordinator
Out of the box, the XBee radios are configured with the "Router AT" firmware. This is the basic software for receiving commands from another XBee that is configured with "Coordinator AT" firmware. The coordinator and router are paired up, and whatever commands are sent to the serial pins on one will be transmitted and sent to the serial pins on the other. It's like you've got a serial wire connecting the two.
You'll need to download and install the XBee configuration software, called Digi XCTU, from here. You'll also need a XBee USB Explorer and mini USB cable to allow you to connect to an XBee from your computer and reconfigure it. Plug your second XBee into the explorer, plug the explorer into your computer. Start up the XCTU software, and change the firmware on the XBee to "Coordinator AT." Then, change the settings for Destination Address High and Destination Address Low to match the serial number of the XBee that you connected to the Arduino (you did write it down, right?). That's the only change needed.
Try it out
Power up the sign. You can now send the "+11111111-" style commands from the XCTU software from your PC wirelessly!
Connect the XBee to the Raspberry Pi
The XBee runs at 3.3V, like the Raspberry Pi. So, you can directly connect the XBee to the Raspberry Pi with just 4 wires -- see the wiring diagram. You'll need to solder a pair of XBee headers onto the XBee breakout board. Cut one end off of four F/F jumper wires, and then solder the 4 wires to the XBee breakout (3.3V, ground, DOUT / TX, and DIN / RX). Plug the female ends into the Raspberry Pi (Pins 1, 40, 42, and 41 respectively). Note that the RX / TX pins are crossed -- the XBee DOUT goes to the RaspPi RX, and the XBee DIN goes to the RaspPi TX. Move the XBee radio from your XBee Explorer to the breakout board connected to the Raspberry Pi.
Cover the bottom of the Xbee breakout board with electrical tape so that it doesn't short out against the Raspberry Pi when it's sitting on it.
Step 8: Raspberry Pi
The Raspberry Pi is the brains behind the operation. It scapes a website on the Internet for commands, and decides what to light up on the sign. It's all written in Python, and automatically starts up when the raspberry pi starts.
Kimono Web Scraper
In my case, the sign is driven by a online fundraising thermometer that the non-profit can manage and update. The free online thermometer is hosted by easyonlinefundraisingideas.com. I used the free online web scraper from kimonolabs.com to convert the text from the thermometer into a JSON string. You'll need to create your own thermometer, free account on kimono, and set up the scraping. Essentially, the display can be driven from any web page. The python code regularly retrieves the JSON data, parses it, and updates the sign.
Put the Raspberry Pi in its case. There's enough clearance in the case to fit the Xbee inside, with the antenna sticking out through the access hole for the cameraboard connector.
The Raspberry Pi takes a bunch of steps to set up. This assumes a basic familiarity with Raspberry Pi -- there are lots of sites to help you get started with this. Where possible, I've included links that I used if you want to dig deeper.
- Hook up the raspberry pi to a television and keyboard, start the Raspberry Pi with the SD card, and install raspbian.
- Start it, set to US settings (or as appropriate), and enable remote access
- Plug the Wi-Fi dongle into the USB port (no drivers necessary for the Tenda W311mi)
Set up the wireless ethernet access
Configure the network to automatically start the wireless connection at start
Set the correct timezone (in my case Eastern time):
sudo cp /usr/share/zoneinfo/US/Eastern /etc/localtime
Get the sign code:
git clone https://github.com/rpurser47/parmenter_sign
Modify the python code to get data from your thermometer. Note that you'll have to change the target amount in the code (or get it from the web site).
Power up the sign and test the python code. You should see it do a test, and then show the value from your data source. Note that it does vary the output depending on the time of day -- if it's late at night, it may not turn on the sign.
Copy the startup script into boot.d directory
sudo cp sign /etc/init.d
sudo chmod 755 /etc/init.d/sign
sudo update-rc.d sign defaults
Try It Out
Reboot the pi (sudo reboot), wait 90 seconds for the reboot, and your sign should start working.
The Raspberry Pi code is pretty simplistic. I'm planning to improve it significantly in the coming months. There's several things that could be done to make installation of the system easier, especially with getting the wi-fi and Xbee connections working.
Step 9: Put It All Together and Install
We've almost done it -- we've got a working sign tube, and now we need to put it all together and install it!
Assemble the tube
You can now combine the main strut and the tube. Put the tube on the floor upside down (capped end down). Make sure you've got plenty of clearance above you, and then insert the central strut into the tube, and guide the dowel into the hole at the top of the tube. Bring the power cord out through the slot in the bottom cap. You can peek through the hole for the power cord to align the end of the dowel into the hole in the top cap. Turn it back over.
Signboard and Vinyl Graphic
You'll have to decide if this is going to be a one sided, or two sided sign. We made ours one sided, but you can easily make it two sided.
In our case, we chose to have a vinyl graphic made to give a high quality look. You can go to any sign making company and have one of these made. Ours cost around $50 from Vistaprint, and we made it generic enough that we can reuse it from year to year. Note that if you make the sign two sided, you'll need to make two of these graphics, and they need to be mirror images of each other. The numbers will be to the left of the tube on one side, and to the right on the other side. Consider carefully the placement of the numbers on your graphic. You want the first segment to line up with $0 (4 1/2" from the bottom of the tube), and segment 8 (4 1/2" from the top of the tube) to line up with with your goal amount.
The board is 7' x 2 1/2', which gives a nice proportion, and makes it quite visible along the side of the road. Put the 4' x 8' plywood sheet on your sawhorses and cut the board to that size. The hole for the tube is 1' from the bottom, and 6" from the right side. It is 49.5" high (4' tube plus 2 3/4" end caps). The mounting of the tube depends on this being pretty exact -- better to make it a little too short and enlarge it if needed, rather than too tall. If you want a two sided sign, you should make the hole 6" wide. If you want it one sided, you should make the hole 5" wide, so that the thermometer "pops" out the front a little. Use a drill to drill a pilot hole so that you can start the jigsaw cut of the hole. Test that the tube fits correctly, but don't mount it yet.
Staple the vinyl graphic to the board, or paint it. You'll need to cut out a hole in the vinyl sign to accommodate the tube.
Mount the tube
The tube is mounted by putting blocks on the bottom cap. The electric cord should come out on the back side of the sign. For a single sided sign, put the tube into the hole in the signboard and then mount a block of wood on the bottom cap of the tube that is behind the board so that it locks it in place. Don't fasten this block to the sign board. See the diagram -- this is the pink block. For a double sided sign, put an additional block in front of the board create a slot. Put another block on the top cap in front of the board. In the diagram, these are the cyan blocks shown.
Finally, use a single long 2" screw driven into the top cap at the back to keep the tube in place. This allows you to mount and unmount the tube from the board with just the removal of this one screw. Tilt the tube out, and pull up, and the tube comes out. You'll want to transport the tube unmounted from the board.
On site installation
Installing the system is pretty straightforward. Drive two standard metal fencing stakes like these into the ground, lift the sign, and slide it into the two stakes. Mount the tube in the sign with the cord in the back. Plug the cord in -- you should get the power on light show. Put the Raspberry Pi within the XBee radio distance (300' line of sight with clear weather). Allow 90 seconds boot time, and you should get the raspberry pi initial connection light show. Reconfigure the raspberry pi's Wi-Fi connection to connect to the local Wi-Fi and reboot. After 90 seconds boot up time, you should get the connection light show, and then the sign will display the current value from your online thermometer.
You did it!!!!