Ever since I started to use electronic, I have been thinking of how I could make useful projects for non technical people. My parents, for example, don't use the computer much. I designed this project to be simple, useful and fun for their everyday life.
A few years ago, I was planing a one year trip around the world. I wanted my parents to have a map to show their friends where I was going. I wanted it to look nice, so it can be decorative in their house. As I love working with LED, I designed a 2 square meters map with a wood and polystyrene structure. Then, I added around 150 LED on the back of the map that can light up independently on all the spots along the way I was planing to travel to.
As I got back from my trip, I modified the LED on the map according to the places I did or didn't go. My brother also asked me for a personalized map of his travels. So I ended up making several maps... As long as you understand the structure, it's really easy to adapt the number of LED and their placement.
Step 1: How It Works
The Map is a laminated poster paste on a structure of wood and extruded polystyrene panel. As I didn't find a large enough panel, I had to complexify the main structure by cutting and linking several panels together.
As I wanted to be able to control every LED independently to create some animations, the heart of the electronic structure is a standalone Arduino board controlling 3 independent boards with STP16CP led drivers linked to every LED. To control an even larger number of LED with the minimum of drivers I took inspiration from a LEDcube project to build a basic multiplexing with transistors. I can basically control a 48 output with the 3 LED drivers (16 output each) multiplied by the 5 transistors on board totaling up to 240 LED. But it's actually easy to add more LED by adding more drivers.
I added some 3mm flat top LED through the polystyrene panels and linked both legs with some small wires. It's actually a pretty long part, as you have to cut and solder 2 wires for every LED.
Step 2: Part List
In this project, I designed my own Arduino board (standalone). You can also use any Arduino board to control the transistor and the LED drivers :
- Michellin laminated MAP 144 x 100 (or any MAP ;-) )
- Extruded polystyrene panel 125cm x 60cm x 2cm to adapt with the size of your Map. My panels where to small for my map so I had to complexified the structure.
- Framing lumber, I use 2.4cm x 2.4cm
- STP16CPS05MTR LED driver
- Resistor - 10k for the pull up button and 1k for the capacitor
- Male header
- Multi wire cable - break less than single wire when manipulating
- Power plug 5.5 - 2.1mm (use also on Arduino board)
- Transformator 5V (5.5 - 2.1mm)
Standalone Arduino part :
- Atmega328pTQFP 32 Pin (Heart of Arduino UNO board, with a smaller package)
- Crystal 16MHz (to be compatible with the Arduino UNO bootloader)
- 22pF capacitor for the quartz
- 10uF capacitor for the power regulation
- Pull up 10k resistors (for the RESET line and the button)
- Regulator 5V 1.5A
- LED - As you need a lot of them, it's cheaper to buy on Ebay. I used some 3mm flat top.
- Board - Printed on OSH website.
- AVR ISP MKII programer - Necessary to directly program an Arduino board through the ICSP Pin. In this case you don't need a USB interface.
Step 3: Assembling the Map
I have build 3 maps with almost the same structure, there is only few minors changing between them.
The Michelin laminated MAP I used is 140cm x 100cm wide and the extruded polystyrene panels I found in CASTORAMA shop are 125cm x 60cm. So I had to use two panels and few wooden framing lumbers and nails to adapt the size. Between the wood, the polystyrene and the plastic map, I used some carpet glue. But you have to be very careful with the specifications because most of the glue from the market aren't made to be use with polystyrene (and special polystyrene glue often doesn't fit with plastic...).
The final touch at the end was to print the legend on a thin transparent plastic and paste it on the map with a transparent glue.
As I tried both solutions, it's better to cut the holes in the polystyrene for every electronic board before pasting the MAP.
Step 4: Electronic
In this project, I needed to control a large number of LED. A good solution to implement this without using too many LED drivers is multiplexing. I am not gonna explain how this concept work, as there is plenty of good tutorial about it, like this Instructable.
In my case, my LED drivers are STP16CP from ST brand and the multiplexing power lines are controlled through BD136 transistor. So my control structure is pretty close to this LEDcube project.
Each of the 3 LED drivers are on a different tiny board, so I was able to implement them on 3 different areas. This allow me to split the number and the length of the wires between the LED for each board. The 4th board is a standalone Arduino board (which mean a "home made" Arduino) with the power part (5V regulator, power plug and capacitor) and the multiplexing control lines transistors. Every board are linked together with a board to board ribbon cable plugged on basic male header. I also added a button with a 10k pull up resistor to be able to switch between two types of animations.
It is pretty easy to build a standalone board with a UNO heart, you only need few elements :
- A micro-controleur ATMEGA328P TQFP. This package is smaller than the one on Arduino UNO and has 32 Pin. It's a bit harder to solder but it's a big dimensional gain.
- A quartz 16MHz associated to two 22pF capacitor to give the speed of the uC. You can also use a 8MHz but in this case you need to select the FIO Arduino board bootloader and not the UNO. The circuit is gonna be twice slower.
- A pull up resistor to maintain the RESET line to VCC. Without this, the microcontroller can't start... It's sometime convenient to add a button on the reset line for debugging.
- The AVR programmer will push the program directly to the microcontroller via the ICSP line (PIN 11 MOSI, PIN 12 MISO, PIN 13 SCK). This programing possibility is available on most Arduino board with a standard 2 * 3 male pin header (with the VCC, RESET and GND lines).
To turn easily the Map on and off I actually use some electric remote plug "DI-O" from the brand Chacon. It's pretty cheap and efficient. But it's adapted to European plug so you should take some from the country you are in.
Step 5: The Code
Here is few things about the Arduino code :
- The STP16CP are on the Pin 2 (SDI) 3 (SCK) 4 (LE)
- The transistors Pin are 5 / 6 / 7 / 8 / 9. I only use 3 transistors on 6 / 8 / 9
- The function send_MAP modify the 18 global variables ctrlX_Y_Z which give the state of the two 8bits register of each STP16CP depending on every transistor state. (so 2 * 3 * 3 = 18 variables)
- Those variables values are pushed in the STP16CP in the flash function called by the timer2 every 1 milliseconds.
- The timer2 is also controlling the multiplexing by changing the value of the transistors each time it's called.
- I add a lot of #define at the beginning to give a name to all the LED. In this configuration, I just have to set
- LOS_ANGELES = 1; to turn the LED in Los Angeles ON
- LOS_ANGELES = 0; to turn it OFF.
Step 6: How to Improve the Project
I think the main problem is the map isn't adaptable, every time you are travelling you have to do some minor changes to the Hardware and the Software. It's hard to anticipate the next travels, so to anticipate the LED...
So I am actually working on a second project inspire by this one : the idea is to be able to control the LED of the map from internet and I am gonna use some RGB LED so I can play with the colors as well :). I will define a color for every person of the family so you can easily see where everybody is. I will add less LED, but spread them everywhere on the map so I shouldn't have to modify the hardware ever!
Step 7: Final Results and Conclusion
As I said, I made 3 different maps :
- The first one was for my parents to see the travel I was doing for one year.
- The second one was for my brother. As he travel a lot for work and for pleasure I added different colors depending on the circumstances of the trip.
- The third one was for me, I made an animation turning on every pink LED of the places I have been during my all life in order. I also added some blue LED for the long planes or boats and some green LED for the places I dream to go to one day :)
I like this project because it can be use as any decorative map and you can turn it on when you are talking about travel :)