This instructable will show you how to make your own arduino based watch that tells time using a matrix of LEDs. This is my first instructable, so if something is unclear leave me a comment or send a message!
I was inspired by all the cool LED watches that I saw on this website:
They have a lot of different designs that let you tell the time in very unique ways. So, I thought I’d try my hand at making my own LED watch using an arduino.
My watch design is very basic, but can be easily modified to create different LED layouts and different programming schemes. I am fairly new to arduino programming so for this instructable I will be using a modified code that I got from the Makerbot Watch project:
I had big issues with the battery life of my first watch design, but with the modified Makerbot code and a larger battery, the watch will tell the time for at least 12 hours on a single charge. I am working on modifying the code to allow the watch to only display the time when you press one of the buttons. This should greatly increase the battery life. I will post it as soon as its finished.
I have entered this Instructable into the Epilog Laser Cutter challenge. The laser cutter would come in handy when designing new watch faces and enclosures. The watch faces could be etched/cut with numbers or words to make telling the time much easier. Not to mention greatly improving the aesthetics. Also, the time it would take to make the watch enclosure would be greatly reduced, the dimensions would be more precise, and it would open up possibilities to use different materials. Overall, I would use the laser cutter to make a wide range of higher quality LED/Arduino watches.
This instructable requires the soldering of very small surface mount components. If you are new to soldering, or have never handled surface mount parts before, I will try to explain as best I can how to successfully solder this project together.
Step 1: LED Matrix
This watch will tell time using a total of 28 (output) LEDs, and be controlled by 3 (input) tact switches. Obviously, an ATmega328p does not have that many programmable I/O pins so some manipulation needs to be done to individually control all those LEDs. The buttons will be controlled by 3 individual pins.
To do this, we will use a technique called charlieplexing, or display multiplexing. Basically, this method will allow us to use X number of pins to control X*(X-1) number of LEDs. For example, we can control 6 LEDs with only 3 output pins. This is possible by utilizing the tri-state logic properties of microcontrollers and the forward bias of LEDs. In other words, each pin can be set in 1 of 3 states: High (5 or 3.3V), Low (GND), or Not Connected (a high impedance state that disconnects the pin from the circuit). Also, an LED will only light up and pass current to the rest of the circuit in one direction (from anode to cathode). The first four images will give an example of how charlieplexing works using 3 pins and 6 LED’s.
Now, by expanding this basic layout we can create a matrix of 28 LED’s that can be controlled by a total of 11 output pins.
This is a relatively simple explanation of a complex process. If you would like more information, I found this instructable to be more comprehensive, and very well written.
Step 2: Schematic, Board Layout, and BOM
Now that we have the LED matrix established, we can connect it to an arduino circuit.The watch will also have 3 push buttons used for programming and any other watch functions.In addition, a Li-polymer battery charging circuit will be built into the PCB to allow for easy recharging of the battery. I made the schematic based off the Makerbot watch project schematic. However, I did not include breakout pads for programming, omitted the AM/PM LEDs, and omitted the alarm buzzer. I added an indicator LED for the battery charger and used different components.
Like I mentioned in the introduction, this instructable will involve a lot of surface mount soldering of very small components. I decided on these small components to keep the overall size of the watch to a minimum. However, you can easily modify the attached Eagle files (or start your own from scratch) to accommodate larger components.
The board layout I chose was fairly basic and made reading the time very easy. Eventually, I would like to arrange the LEDs in more complex layouts to make reading the time more interesting. But for now, this suited me well as a prototype for my future watches.
I wanted to keep the board size to a minimum, but was restricted by the size of the battery I planned on using. Overall the dimensions are 3.5mm by 3mm. Board size was also the reason I chose to use such small components. In addition, I did not include breakout pins for programming the microcontroller. These would take up some space and I just did not like the aesthetics of the extra pads on the board. But don’t worry, it is still possible to program the chip and I will show you how later on.
Personally, I like to show off as many electrical components on the face of my PCBs because I just think it looks cool 🙂 So the majority of the components are on the top face.
BILL OF MATERIALS:
10 PCBs from Seeedstudio are $10 plus shipping. The components needed to populate one board are about $11. The final BOM is attached in an excel file at the bottom of the page.
Step 3: Making the PCB
This is a great PCB service. Its low cost, good quality, and the turnaround time is very fast. It took about two and a half weeks from the day I sent them my Gerber files to the time I received them in the mail. For the size of these boards, you can get 10 made for $10 plus about $5 for shipping.My Eagle files already meet their design criteria, so just follow the instructions on the Seeedstudio page (or any other board house page), generate the gerber files and send them to order your boards. Seeedstudio will have you put your order confirmation number on the silkscreen layer of you boards. Hence, I cannot upload the Gerber files for you to download here.
If you decide to modify my design, you will need to download the Eagle design criteria on the fusion PCB page and place it into Eagle’s dru folder. If you use another board house, they should have a similar file. I have attached the seeeduino fusion PCB design rules file at the bottom. Just download it, and drag it into Eagle’s dru folder. Restart Eagle if you already have it open.
Once its in the folder, from your board file window, click on the design rule check button on the toolbar. (its near the big yellow exclamation point) Next, click on load and open the file you just put in that folder. This file will have all the requirements and design rules required by the board house in order for them to manufacture your board. Click on Check to see if your board meets all the rules. If not, a window will pop up telling you what needs to be changed.
Usually you will have errors in trace thickness and/or spacing. To fix this, just delete the trace and use a thicker line or move a trace to give better separation. Once everything checks out, you can generate the gerber files to be sent off to the board house.
***Like I mentioned before, Seedstudio requires that you include your order number in one of the silkscreen layers. To do this, click on the Text box in the toolbar. Select the appropriate layer, either tSilk (for the top silk layer) or bSilk (for the bottom silk layer. Type in your number and place it wherever you want. As you can see, I chose the bottom corners
TO GENERATE GERBERS:
-Usually the board house that you choose to use will have a file that you can download to generate gerber files. I actually found the one from Seeedstudio to be difficult to use, so I decided to use one that I downloaded from Sparkfun. I have attached it to the bottom of this page. Just download it and place it in Eagle’s cam folder.
-Once you have it placed in the folder, click the CAM button on the top toolbar of your board file window
-Select File->Open->Job. Then open the sparkfun file that you just put in your folder.
-Finally, click Process Job
This will generate several different files wherever you have your schematic and board file saved. So its best to have them all in one folder to keep them organized. Although you have a lot of files now, the only ones you will need are:
Top layer: pcbname.GTL
Bottom layer: pcbname.GBL
Solder Stop Mask top: pcbname.GTS
Solder Stop Mask Bottom pcbname.GBS
Silk Top: pcbname.GTO
Silk Bottom pcbname.GBO
NC Drill: pcbname.TXT
Place all these files in a .zip folder and send them off to the board house!