You can control your projector from a computer running Windows. It can turn your projector on & off, change video sources, and do just about anything that your remote can do. The projector is connected to your compute via a serial cable and commands are given through shell commands. This can be done on a schedule, too, thanks to the Windows Task Scheduler feature built into Windows.
1. Projector with an RS232 serial port. This port can have a DB9 serial port (most common) or a round DIN serial port. A DB serial port has five pins in one row, and four pins in the second row. Projectors with only USB ports are not able to be used for control.
2. "Straight through" serial cable, DB9 to DB9. Typically this is a female to female cable.
3. Null modem adapter like this. This may be needed for some projectors. If your projector does not respond to commands, add this to the "straight through" serial cable above.
4. USB to serial adapter cable, such as this. This cable adapts the USB port on the Windows computer to communicate to the DB9 serial port on the projector.
Your projector listens for commands entering its serial port. This allows you to turn the projector on, off, change video sources, etc., simply by sending commands to this port. These commands are in the "hex" language, such as 00, AB, F1, B12, etc.
Different brands and models of projectors use different hex codes for these commands. Your projector's manual should have an area that list these codes. If you do not have the manual, search Google for "hex codes xxx projector" where "xxx" is the brand and model of your projector. You can also find manuals for projectors by googling "xxx projector Clary Business Machines".
Here is an example of hex control codes for a Boxlight Seattle WX25NU projector. For example, hex command "43 30 30 0D" will turn on the projector and "43 30 31 0D" will turn it off.
This document should also indicate your projector's serial port communication settings (baud rate, data length, parity, stop bit, and flow control). This information is important for your Windows computer to properly communicate with the projector's serial port, so write it down.
1. If your USB serial adapter came with a driver installation CD, install the driver. It is important to do this before connecting the adapter to your computer!
2. Connect the USB serial adapter cable to the computer's USB port.
3. Connect the DB9 serial cable to the USB serial adapter cable.
4. Connect the other end of the DB9 serial cable to your projector.
5. Make sure the projector has its power cable connected. It does not need to be turned on yet, but it does need to be in "standby" mode. Some projectors indicate standby with a flashing power light.
When you connect the USB serial adapter to your computer, Windows will assign a COM port to it. This could be "COM1", but could vary depending on the existing ports on your computer. To find the port of your adapter, do the following:
1. From the Windows Start menu (press the [Windows] key on your keyboard), type "Device Manager" then press [Enter].
2. A list of devices appears.
3. Double-click the Ports section to open it.
4. In the list of ports, you should be able to identify your adapter by its name or brand. In my case, my adapter displays as "Tripp Lite USB to Serial port (COM3)". If your device shows-up as "Unknown" or something similar, try reinstalling the driver that came with your adapter.
5. In my case, my adapter is connected to COM3.
6. You're done!
You need to create special "hex files" that contain the hex commands to control your projector. However, these files cannot be created with a word processor nor Windows Notepad. They must be created with a Hex Editor program such as UltraEdit, Notepad++ (with the hex editor plugin), or similar.
1. Start your Hex Editor program.
2. Enter the hex codes that turn on your projector. For example, for a Boxlight projector, these codes are 43 30 30 0D
3. Save the hex file with the name on.bin
4. Create additional hex files with other projector commands, such as codes 43 30 31 0D into file off.bin which will turn the projector off.
Now it's time to see if everything works!
1. Open a command prompt.
2. The first step is to set the port settings so that the projector can understand the commands coming to it. Refer to the projector's serial port communication settings (baud rate, data length, parity, stop bit, and flow control) that your wrote-down in the earlier steps.
3. Enter this command: mode com3 baud=9600 parity=n data=8 stop=1 (change the COM port, baud, parity, data, and stop setting to match your projector)
4. Enter this command: copy /b on.bin com3
5. If all works well, your projector will turn on (wait a minute for the lamp to warm up).
If the projector is not responding...
1. Make sure the projector is connected to power.
2. Make sure the projector is in "standby" mode (not completely off).
3. The serial cable may need a "null modem adapter" added to it. This adapter reverses pins 2 & 3 for the receive & transmission lines; some projectors need this. Add the null modem adapter to the serial cable, then play the playlist again.
4. Your on.bin file was not created with a true hex editor. Remember, you cannot use Windows Notepad nor a word processor to create this file. Use UltraEdit or Notepad++ with the hex editor plugin installed to create this file.
Your computer can turn on/off your projector on a schedule, such as several times a day, daily, weekly, etc. This is accomplished through Windows Task Scheduler program that comes with Windows.
1. Create a batch file that turns on your projector:
a. Start Notepad, then enter these commands:
mode com3 baud=9600 parity=n data=8 stop=1
copy /b on.bin com3
b. Save the batch file with the name: projector-on.bat
2. To test the batch file, enter "projector-on.bat" at the shell prompt. Your projector should turn on.
3. Configure Windows Task Scheduler so that it runs this script daily/weekly/etc. These webpages have helpful instructions for using Windows Task Scheduler:
https://www.thewindowsclub.com/how-to-schedule-batch-file-run-automatically-windows-7
http://www.get-itsolutions.com/create-windows-task-scheduler-and-schedule-to-run-bat-file
https://www.computerhope.com/issues/ch000785.htm
4. That's it!
You can control your projector from a computer running Linux or Mac OSX. It can turn your projector on & off, change video sources, and do just about anything that your remote can do. The projector is connected to your compute via a serial cable and commands are given through shell commands. This can be done on a schedule, too, thanks to the Cron scheduler built into Linux / Mac OSX.
1. Projector with an RS232 serial port. This port can have a DB9 serial port (most common) or a round DIN serial port. A DB serial port has five pins in one row, and four pins in the second row. Projectors with only USB ports are not able to be used for control.
2. "Straight through" serial cable, DB9 to DB9. Typically this is a female to female cable.
3. Null modem adapter like this. This may be needed for some projectors. If your projector does not respond to commands, add this to the "straight through" serial cable above.
4. USB to serial adapter cable, such as this. This cable adapts the USB port on the Linux/Mac computer to communicate to the DB9 serial port on the projector.
Your projector listens for commands entering its serial port. This allows you to turn the projector on, off, change video sources, etc., simply by sending commands to this port. These commands are in the "hex" language, such as 00, AB, F1, B12, etc.
Different brands and models of projectors use different hex codes for these commands. Your projector's manual should have an area that list these codes. If you do not have the manual, search Google for "hex codes xxx projector" where "xxx" is the brand and model of your projector. You can also find manuals for projectors by googling "xxx projector Clary Business Machines".
Here is an example of hex control codes for a Boxlight Seattle WX25NU projector. For example, hex command "43 30 30 0D" will turn on the projector and "43 30 31 0D" will turn it off.
This document should also indicate your projector's serial port communication settings (baud rate, data length, parity, stop bit, and flow control). This information is important for your Linux/Mac computer to properly communicate with the projector's serial port, so write it down.
1. Connect the USB serial adapter cable to the computer's USB port.
2. Connect the DB9 serial cable to the USB serial adapter cable.
3. Connect the other end of the DB9 serial cable to your projector.
4. Make sure the projector has its power cable connected. It does not need to be turned on yet, but it does need to be in "standby" mode. Some projectors indicate standby with a flashing power light.
When you connect the USB serial adapter to your computer, Linux/Mac will assign a name to it. This could be "ttys0", but could vary depending on the make/model of your adapter. To find the correct name of your adapter, do the following:
1. Open a shell / command prompt.
2. Enter this command: ls /dev/serial/by-id
3. The result should display the name of your adapter, such as "usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0".
Note: If nothing is shown, then your adapter may need Linux/OSX drivers installed or perhaps your adapter is not compatible with Linux/OSX.
4. Enter this command: ls /dev/serial/by-path
5. The result should show technical information about your adapter, such as "platform-3f980000.usb-usb-0:1.4:1.0-port0". Note the phrase "usb-0:1.4" in this example. This is helpful for the next step.
6. Enter this command: dmesg | grep tty
7. The result should list the active serial ports on your computer, such as "usb 1-1.4: pl2303 converter now attached to ttyUSB0".
8. Remember the "usb-0:1.4" phrase from Step 5? It somewhat matches the "usb 1-1.4" phrase from Step 7. This is your USB serial adapter. Therefore, "ttyUSB0" is the name of your adapter.
9. You're done!
Now it's time to see if everything works!
1. Open a shell / command prompt.
2. Enter this command: sudo chmod 666 /dev/ttyUSB0 (replace "ttyUSB0" with your adapter's actual name if necessary)
3. The above command sets permission for you to send commands to the serial adapter.
4. Find your projector's hex codes for "ON", "OFF", and "VIDEO". Each hex code precedes with "\x", so hex codes "43 30 30 0D" to turn on a Boxlight projector would be entered as "\x43\x30\x30\x0D".
5. For example, enter this command to turn on a Boxlight projector: echo -en '\x43\x30\x30\x0D' > /dev/ttyUSB0
6. If all works well, your projector will turn on (wait a minute for the lamp to warm up).
If the projector is not responding...
1. Make sure the projector is connected to power.
2. Make sure the projector is in "standby" mode (not completely off).
3. The serial cable may need a "null modem adapter" added to it. This adapter reverses pins 2 & 3 for the receive & transmission lines; some projectors need this. Add the null modem adapter to the serial cable, then play the playlist again.
Your computer can turn on/off your projector on a schedule, such as several times a day, daily, weekly, etc. This is accomplished through Cron feature.
1. Create a script that turns on your projector:
a. Enter this command: sudo nano /usr/local/bin/projector-on.sh
b. In the editor that appears, enter:
#!/bin/bash
sudo chmod 666 /dev/ttyUSB0
echo -en '\x43\x30\x30\x0D' > /dev/ttyUSB0
c. Save the script by pressing [Ctrl-O], then [Ctrl-X].
d. Make the script executable by entering this command: chmod u+x projector-on.sh
2. To test the script, enter "projector-on.sh" at the shell prompt. Your projector should turn on.
3. Configure Cron so that it runs this script daily/weekly/etc. These webpages have helpful instructions for using Cron:
https://opensource.com/article/17/11/how-use-cron-linux
https://www.howtogeek.com/101288/how-to-schedule-tasks-on-linux-an-introduction-to-crontab-files
https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses
4. That's it!
A number of Christmas lights enthusiasts animate digital LED lights with a free program called xLights. Starting with a photo of your house, you draw strings of lights on it that correspond to the lights actually hung on your house. Strings of lights are connected to "controllers" that speak the protocol or languages of different kinds of strings. When you create animations in xLights on your computer, these animations are sent via Ethernet to the controllers which then light-up your lights.
Falcon Player is a program that allows your house lights to function without needing your computer to do the job. You create animations with xLights, save them as "fseq" files, then load these files into Falcon Player. The Player plays the fseq files to animate your lights.
Falcon Player can do a lot more than just animate lights. It can control a projector, sending videos to it while animating lights at the same time. Videos are saved in MP4 format and stored in Falcon Player. Player can also create a "virtual matrix" with your projector, allowing animations to be created in xLights that will display on the projector. Player can turn your projector on & off, change video sources, and do just about anything that your remote can do. This can be done on a schedule, too. So you can use Falcon Player to simply control your projector to play videos or coordinate this with animating lights, too.
1. Projector with an RS232 serial port. This port can have a DB9 serial port (most common) or a round DIN serial port. A DB serial port has five pins in one row, and four pins in the second row. Projectors with only USB ports are not able to be used for control.
2. "Straight through" serial cable, DB9 to DB9. Typically this is a female to female cable.
3. Null modem adapter like this. This may be needed for some projectors. If your projector does not respond to commands, add this to the "straight through" serial cable above.
4. USB to serial adapter cable, such as this. This cable adapts the USB port on the Raspberry Pi to communicate to the DB9 serial port on the projector.
5. Raspberry Pi 3 single board computer. Don't use a Raspberry Pi 1 or 2 as they may not be fast enough to play MP4 video and control lights at the same time.
6. 5V power adapter with micro USB connector, rated at 2.5A or higher. This is to power the Raspberry Pi 3.
7. Eight gigabyte microsSD card. Falcon Player will consume four gigabytes, leaving you with four gigabytes for your videos. Buy a larger memory card if you intend to use more videos.
8. Long Ethernet cable to connect the Rapsberry Pi to your home network.
(detailed instructions can be found here and here)
1. Format the microSD memory card with SD Card Formatter or something similar.
2. Download the latest Falcon Player image file here. These instructions work best with Falcon Player v4.6.1. Falcon Player v5.x should work, but it has not been tested with these instructions and the web interface may not match these instructions perfectly.
3. Unzip the image file, revealing the .img file inside.
4. Use win32DiskImager or similar to write the image file to your microSD card.
5. Connect a monitor or TV to the HDMI port on the Raspberry. Connect a USB mouse & keyboard. Also connect an Ethernet cable from the Raspberry Pi to your home network's router.
6. Connect the micro USB power cable to the Raspberry Pi. It will automatically power up. You will see a black screen with white writing.
7. Falcon Player is controlled with a web interface. Open a web browser on your home computer, then go to http://fpp or http://fpp.local. If that does not work, find the IP address that your router assigned to the Raspberry Pi, then go to this address in your web browser.
8. In the Status/Control > Network Configuration menu, enter "8.8.8.8" for DNS Server 1 and DNS Server 2, click [Update DNS], then reboot Falcon Player. This is necessary to perform the next step.
9. Congratulations! You now have Falcon Player installed and ready to use.
Your projector listens for commands entering its serial port. This allows you to turn the projector on, off, change video sources, etc., simply by sending commands to this port. These commands are in the "hex" language, such as 00, AB, F1, B12, etc.
Different brands and models of projectors use different hex codes for these commands. Your projector's manual should have an area that list these codes. If you do not have the manual, search Google for "hex codes xxx projector" where "xxx" is the brand and model of your projector. You can also find manuals for projectors by googling "xxx projector Clary Business Machines".
Here is an example of hex control codes for a Boxlight Seattle WX25NU projector. For example, hex command "43 30 30 0D" will turn on the projector and "43 30 31 0D" will turn it off.
This document should also indicate your projector's serial port communication settings (baud rate, data length, parity, stop bit, and flow control). This information is important for Falcon Player to properly communicate with the projector's serial port, so write it down.
1. Connect the USB serial adapter cable to the Raspberry Pi's USB port.
2. Connect the DB9 serial cable to the USB serial adapter cable.
3. Connect the other end of the DB9 serial cable to your projector.
4. Make sure the projector has its power cable connected. It does not need to be turned on yet, but it does need to be in "standby" mode. Some projectors indicate standby with a flashing power light.
1. From the Falcon Player web interface, choose Content Setup > Plugins from the menu.
2. In the list of plugins provided, find "Projector Control" then click the button for installing (the "down arrow" icon).
3. The Input/Output Control menu should now have an entry called "Projector Control". Choose this from the Input/Output Control menu.
4. Place a checkmark in the Enable Plugin field.
5. Choose "Serial" for "Connection type".
6. Choose your projector in the Projector field. If it is not listed, you can manually add your own projector with these steps:
a. Click Help > SSH Shell from the menu.
b. Login with "fpp" for the username and "falcon" for the password.
c. At the shell prompt, type: sudo nano media/plugins/FPP-Plugin-Projector-Control/projectorCommands.inc
d. When you press [Enter], a list of information appears.
e. Find the line "To add another projector..." line near the top.
f. Remove the double slashes at the beginning of each line starting with "Array" and ending with "),".
g. Enter your projector's hex codes for "ON", "OFF", and "VIDEO". Each hex code precedes with "\x", so hex codes "43 30 30 0D" to turn on a Boxlight projector would be entered as "\x43\x30\x30\x0D". "VIDEO" means the hex codes for the projector video input that want to use, such as HDMI or DVI.
h. Enter your projector's baud rate, data length / char bits, stop bit, and parity as specified.
i. To save your changes, press [Ctrl-O] then [Enter]. To exit the editor, press [Ctrl-X].
j. To exit the shell, type "exit" then press [Enter].
k. Reboot Falcon Player.
m. After rebooting, choose Input/Output Control > Projector Control from the menu.
n. Choose your projector from the list in the Projector field.
7. Click [Save Config] to save your changes.
Falcon Player can store and play videos for your projector to display. These videos must be in MP4 format and the microSD card must have enough room for them. You can check free space by clicking Help > About from the menu; free space is listed under the Disk Utilization section.
1. Click Content Setup > File Manager from the menu.
2. Click the [Video] tab, then click the blue [Select Files] button.
3. Browse your computer for the MP4 files that you wish to upload, then click the [Open] button.
4. That's it!
1. Click Content Setup > Playlists from the top menu.
2. Give your playlist a name (no spaces) in the New Playlist field, then click the [Add] button.
3. In the Type field in the lower Playlist Details section, choose "Script". In the Script field right below it, choose "PROJECTOR-ON.sh". Then click the [Add] button below it. This will tell the projector to turn on.
4. Let's add a delay to allow the projector to warm up. In the Type field, choose "Pause". In the Pause Time field, enter "60", then click the [Add] button.
5. To switch the projector video input to the desired input, in the Type field, choose "Script". In the Script, choose "PROJECTOR-VIDEO.sh", then click the [Add] button.
6. To play a video, choose "Media only" in the Type field. Click the drop-down arrow in the Media field to choose the video that you use to use, then click the [Add] button.
7. To turn off the projector after playing the video, choose "Script" in the Type field, choose "PROJECTOR-OFF.sh" in the Script field, then click the [Add] button.
8. To save the playlist, click the [Save] button in the middle of the screen.
Now it's time to see if everything works!
1. Click Status/Control > Status Page from the menu.
2. Choose the playlist that you created in the Playlist field.
3. Click the [Play] button near the bottom of the screen.
4. If all works well, your projector will turn on, wait a minute for the lamp to warm up, play your video, then the projector will turn off.
If the projector is not responding...
1. Make sure the projector is connected to power.
2. Make sure the projector is in "standby" mode (not completely off).
3. The serial cable may need a "null modem adapter" added to it. This adapter reverses pins 2 & 3 for the receive & transmission lines; some projectors need this. Add the null modem adapter to the serial cable, then play the playlist again.
4. If the projector is still not responding, try manually controlling the projector using Linux or Windows. Instructions are on this website.
5. To aid in troubleshooting, you could also create a playlist that only plays the video (no projector on/off control). Manually turn on the projector, then play the playlist that you created. If this works, at least you know that the video output from the Raspberry Pi to the projector is working.
Falcon Player can turn on/off your projector and play videos on a schedule, such as several times a day, daily, weekly, etc. This is accomplished through the Content Setup > Scheduler menu. For instance, if you want the projector to turn on each evening at 6:00, play a video at 7:00, then turn off the projector at 8:00, do the following:
1. Set the current day & Time on the Raspberry Pi via the Status/Control > Config/Set Time menu, then click the [Submit] button.
2. Create three playlists: one to turn on the projector, another to play a video, and a third to turn off the projector.
3. Click Content Setup > Scheduler from the menu, then click the [Add] button.
4. In the Playlist column, choose the "projector on" playlist that you created. In the Start Time column, choose 18:00 (which is 6:00 p.m. in military time).
5. Click the [Add] button to create another scheduled entry. Choose the "play video" playlist that you created, then choose "19:00" for the Start Time.
6. Click the [Add] button once more to create the third scheduled entry. Choose the "projector off" playlist that you created, then choose "20:00" for the Start Time.
7. That's it!
Note that the Raspberry Pi does not have a built-in clock. When it is turned off, it forgets the current time. You can easily add a real-time clock with something like this.
There are many ways to integrate a projector into your light show. The trick is to have the projector automatically turn on each evening, play videos on-demand, and turn off at the end of the show.
There are a number of ways to control a projector automatically:
1. On a Raspberry Pi with Falcon Player installed, it can send commands to your projector as part of your show (turn it on and off) and send videos to it on-demand, too. This is the easiest solution, though projectors with serial ports tend to be expensive (buy used on eBay!).
2. On a Linux computer or Apple with OSX, you can send commands directly to the projector with a few commands.
3. On a Windows computer, you can send commands directly to the projector with a few commands
4. If you can't hook a computer to the projector, you can use an Arduino microcontroller to send commands to the projector
1. These projectors may have a web interface where you can schedule the projector to turn on an off using a daily schedule. Please read the manual that came with your projector to learn how to use its web interface and scheduler.
2. On a Raspberry Pi with Falcon Player installed, it can send commands to your projector as part of your show (turn it on and off) and send videos to it on-demand, too. This works for projectors with PJLink capability.
1. You can use an Arduino microcontroller to learn the commands from your remote (on, off, etc.) to send these commands to your projector via infrared on a daily schedule.
The How To Build it section will explain how to implement each of the above scenarios.
Projectors are a popular way to decorate your house for Christmas. You can place a projector inside the house, shining onto a window or glass door, onto white plastic, a tablecloth, professional screen, etc. From the outside, viewers can see videos of Santa roaming about your house, even emulate virtual strings of lights!
(work-in-progress document)
Install BBB OS and Falcon Player in one step
The tune-to sign works independently of the rest of your light show. It does not use the animations created by xLights and is not controlled by Falcon Player. Instead, when powered up, it reads a file named MESSAGES.TXT on a website that contains a list of holiday messages. It then begins displaying these messages in a random order.
Between messages, the tune-to sign reads a file named LOCATION.TXT on a website. If you are using Internet controlled lights, this file displays the location of the Internet user who is currently controlling your lights. If someone is actively controlling your lights, the tune-to-sign will display that person's location. When no one is controlling your lights, the tune-to sign will resume displaying random holiday messages.
The tune-to sign is meant to be seen by cars passing by. Therefore the enclosure is large (16 feet wide) and the characters are large (about 10.5" tall). To save power and keep the sign affordable, it uses only seven strips of LEDs at 135 lights each, totaling 945 lights. Instead of combining many lights to make large letters, I use fewer lights that are magnified with honeycomb-like channels that reflect and amplify each light within each channel. That way the entire sign can be driven by an inexpensive Arduino and a regular 400-watt computer power supply.
The enclosure is a long, narrow box that houses the power supply and Arduino on the left (as you are facing the sign) in a compartment. The compartment has removable face to allow access to this hardware. Seven strips of LEDs line the rest of the enclosure in the second compartment, the front of which is covered with plastic diffuser used to cover drop-ceiling lights.
The build plans are here. The build plans above provide dimensions for enclosures using 1/2" or 1/4" thick wood. My actual enclosure uses 3/4" thick wood because it was cheaper at the home improvement store. I used poplar, but discovered that it becomes soft in wet/snowy weather, so the screw fasteners tear apart. Use a harder wood for your enclosure.
The enclosure consists of 3/4" wood for the top, bottom, sides, and compartment divider. I used 1/8" plywood for the backing. In additional to the poplar being too soft, the plywood backing warps badly in moist weather.
For the panel that covers the hardware compartment, I cut a piece of metal roofing and attached a wooden strip to become the handle. Between the short electronics compartment and the long LED strip compartment, I installed a wooden divider. I made the divider "float" above the back of the enclosure so that the wires from the LED strip in the long compartment can pass through to the electronics compartment.
To install the frosted diffuser, I used a table saw to cut tracks in to the top, bottom, and side walls, then slid the diffuser in the tracks.
The LED strips can be purchased from Amazon, eBay, AliExpress, etc. You can do a search for "ws2812b 5050 led strip 5v" to find them. Make sure that they have 30 LEDs per meter; buy a 5M strip that has 150 LEDs on it. The strip should be rated for 5V. If you accidentally purchase a 12V strip, the LEDs are sometimes groups in threes and are not individually controllable. Here is what they look like:
Trim each strip to 135 LEDs (if you are using a 16' enclosure like I am). The strips usually have an adhesive backing, thought I've found that it doesn't stick to painted wood that well. Run the seven strips of LEDs along the enclosure, spacing them evenly so that the LEDs form square distances from each other. Then secure the strips better with white or clear tape. In my enclosure, I actually ran eight strips, but the eighth strip is not used. It is for future expansion that is not implemented yet.
As mentioned above, I use a 400W computer power supply to power the tune-to sign. I found a 3D printed bracket on www.thingiverse.com to mount it in the enclosure (the purple bracket in the picture below).
Because my power supply does not have a power switch (ATX power supplies typically do not), I shorted the green pin on the large motherboard connector to one of the black pins on that connector using a thick wire or bent nail. This way, when the power cord is plugged in the power supply, it instantly powers on. Here are instructions on how to do this.
To power the LED strips, each LED strip has a red wire for power and a white wire for ground. Your strip's wire colors may be different, so look closely at the strip to see which wires are power & ground; they should be labeled. I soldered all seven red (power) wires together to a single, thick red wire. I also attached an eighth red wire into this bundle; this will be used to power the Arduino. I did the same for the white (ground) wires, soldering them together to a thick, black wire (with an extra eighth wire to ground the Arduino). On the other end each thick wire, I crimped a cut-off nail. I then plugged these two wires into the 5V and GND pins on the power supply's motherboard connector, respectively. The nails were thick enough to make a snug connection.
The tune-to sign is controlled by an Arduino Mega 2560. These can be found easily on Amazon, eBay, etc. The Mega 2560 model is required because it has enough RAM memory to hold the program and store the messages it will display.
I found a 3D printed mounting bracket on www.thingiverse.com, then mounted the Arduino into the enclosure. I connected the power and ground wires from the power supply to the 5V and GND pins on the Arduino (see picture below).
For a wiring diagram, please click here.
On my LED strips, the data wire is green. Your strip's data wire color may be different, so look closely at the strip to see which wire is for data; it should be labeled. I soldered a 220-ohm resistor to each data wire, then soldered a female connector to the other end of the resistor. I then used heat shrink to protect the resistor and soldered connections on each end of it. The resistor is used to reduce interference caused by "signal bounce". Signal bounce can cause your LED strips to light-up unexpectedly.
For each of the seven data wires, I plugged them into pins 23-29 on the Arduino, with pin 23 for the bottom strip of the tune-to sign. So the Arduino now has seven data wires, a 5V power wire, and a ground wire plugged into it. With the picture below, I also connected a voltage display to the 5V and GND pins. This tells me the voltage of the power supply that is helpful for diagnosing problems.
Lastly, I attached an Ethernet "shield" to the Arduino, like this one. This allows the Arduino to have Internet access from my home network's router. This can be easily found on eBay & Amazon; search for "Ethernet Shield W5100 Arduino 2560". Be sure that the shield is model W5100 and supports the Arduino 2560. Below is a picture of an Arduino Mega 2560 with an Ethernet shield attached to it:
And below is a picture of my Arduino with the shield and wires connected to it:
You need to install a program on the Arduino that makes it become a tune-to sign controller. To program the Arduino, you need to download the Arduino IDE. This allows you to upload programs from your computer to the Arduino board. Normally, you download the tune-to sign program, open it into the IDE, then upload the tune-to sign program to the Arduino board. This is trickier than it sounds, as the program needs installed a special way into the IDE. To save you time, you can download the Arduino IDE with the tune-to sign program already installed from here. Simply unzip this file into a folder on your computer.
The next step is configuring the tune-to sign program for your particular lights, such as the website where the Christmas messages are retrieved from. To do this, edit the TomsTuneToSignProgram.ino file in the arduino-1.6.5-r2\examples\TomsTuneToSign folder with your favorite text editor. These are the important lines that need changed:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
The Ethernet shield may have a sticker on it with its MAC address. This is a 16-character code, usually divided into eight 2-character pieces. The MAC address is a like a house address in your neighborhood; it is a unique number that is different than other devices on your home network. If your shield does not have this information printed on it, you may be able to skip modifying the above line.
char server[] = "itwinkle.org";
This defines the website where the tune-to sign will find the LOCATION.TXT and MESSAGES.TXT files. My website is "itwinkle.org", change this to your website instead.
int scrollSpeed=35;
int delayBetweenMessages=5000;
If the messages scroll too fast on your display, you can change the above "35" to a different number to speed it up or slow it down. Normally, there is a five-second delay between each messages. You can change this delay from "5000" (milliseconds) to a different number.
#define PIXELS 135
If the strips of LEDs on your tune-to sign have more or less than 135 pixels per strip, change the above number accordingly.
int loopLocationDisplayDuration = 30;
If you are using Internet Controlled lights, the above number reflects the length (in seconds) of your animation files that website visitors choose. In my case, my Internet controllable animations run 30 seconds each.
The next step is sending the tune-to sign program to the Arduino's memory. To do this, open the folder that contains the Arduino IDE that you downloaded above. Then run arduino.exe. When the program starts, click File > Examples > TomsTuneToSignProgram. A second Arduino IDE window will appear with the tune-to sign program open.
Before connecting your Arduino, verify this first:
* Make sure that you are using the Arduino Mega 2560. The tune-to sign program only works with this board.
* If you have the LED strips connected to the Arduino, it is a good idea to temporarily disconnect them. If the Arduino already has an older version of the tune-to sign program and you connect the Arduino to your computer, the Arduino may draw too much power from the USB port to power the lights.
When you have met the above requirements, connect the Arduino to your computer via a USB cable. If this is the first time you have connected the Arduino, Windows will attempt to install hardware drivers for it. Depending on the version of Windows that you have and the brand of Arduino, the driver may install automatically or you may be prompted to provide the driver software (you may have to download the driver software for that particular brand of Arduino). Either way, the drivers must be installed successfully before proceeding to the next step.
When you connect the Arduino via USB and the computer accepts the connection with no errors (indicating that the drivers are installed and functional), tell the Arduino IDE the type of Arduino you are using. Click Tools > Board > "Arduino Mega or Arduino Mega 2560". Next, choose Tools > Ports > COM x where "COM x" is the virtual communications port that was assigned by the driver. If you see more that one listing under "Ports" and are not sure which one to choose, try the first one, then try uploading the DMX program as explained below. If the upload fails, choose the next COM port under Ports, then try uploading again.
Next, verify that the DMX program code is valid by clicking the checkmark icon in the Arduino IDE toolbar (below the File menu). You will see "Compiling sketch..." in the window's lower status bar while the program is verified. This may take several moments. If you see an orange message stating "Error compiling", then there is something wrong with the DMX program or perhaps there is a typo in the global.h file that you modified above. In this case, you will need to close the Arduino IDE program, fix the problem, then open the Arduino IDE and try to verify the program again.
If the tune-to sign program verifies correctly, you will see the "Done compiling" message in the status bar. At this point, you can upload the tune-to sign program to the Arduino via the Upload button (the right-arrow button next to the checkmark button in the toolbar). When you click Upload, the tune-to sign program will be verified again, then you will see "Uploading" in the lower status area. A light on your Arduino will rapidly flash during the upload process. When the upload is complete, you will see a message stating so in the status area. You can disconnect the Arduino from the USB cable.
When powered on, the tune-to sign retrieves its list of holiday messages from a file on a website called MESSAGES.TXT into its temporary memory. If you want to change the messages the tune-to sign uses, simply update the MESSAGES.TXT file on your website, power off the tune-to sign, then turn it back on. You may have up to 58 messages in this file with each message no longer than 75 characters. If you store more (or lengthier) messages than indicated, the tune-to sign will not start properly.
Each message can be displayed in a variety of colors, specified as three-letter codes before the message. For instance, here is a MESSAGES.TXT file with three colored messages in it:
<messages>
WHILet It Snow, Let It Snow, Let It Snow!
REDIt's beginning to look a lot like Christmas
BLUIt is Christmas in the heart that puts Christmas in the air
</messages>
The color codes are: GRE (green), WHI (white), RED (red), BLU (blue), BRO (brown), YEL (yellow), CYA (cyan), PUR (purple), VIO (violet), LPI (light pink), MAR (?), TAN (tan), GOL (gold), LIM (lime green), LBL (light blue), ORA (orange), PIN (pink),
If your lights are Internet controllable similar to mine, my website creates a file called LOCATION.TXT and updates it with the current Internet user who is controlling the lights. This file contains the location of the user, such as the following:
<location>
8575
Czech Republic
</location>
After the tune-to-sign displays a random holiday messages, it looks for the LOCATION.TXT file on your website. If someone is actively controlling your lights, the tune-to sign will display the location (in this case "Czech Repulic") on the sign, telling people in your neighborhood where your Internet visitors are from. If you do not have Internet controlled lights (there is no LOCATION.TXT file on your website), the tune-to sign will simply display random holiday messages.
After the tune-to sign program is uploaded to the Arduino, it will begin running the tune-to sign program immediately. We now need to see if the controller can be contacted on an Ethernet network. To do this, connect one end of an Ethernet cable to the Arduino's network board and the other end to an Ethernet switch or hub. Connect your computer to the Ethernet hub/switch via another cable.
Then you can power-on your tune-to sign. Lights should appear on the Arduino. On the end of the network cable that plugs into the Arduino's network board, there are two lights. One should be solid, indicating a connection to the Ethernet hub/switch. The second light should be flickering occasionally, indicating that the Arduino is sending/receiving information on the Ethernet network.
As soon as you power the tune-to sign, it will contact the website that contains MESSAGES.TXT, then save the holiday messages therein to the Arduino's temporary memory. It will then begin displaying these messages on your sign!