New post

I made a smart watch from scratch

by Apr 30

Finished project first! Feel free to follow me on instagram @SamsonMarch for future projects! I decided sometime last year that I wanted to make a smart watch from scratch. I am an electrical engineer and product designer by day, so this was a fun side project that had been rolling around in my head for a while now. Also, this project is full open sourced, the below repo has all of the build files you would need to make your own: - Circuit board files - Schematics - Bill of Materials - All the code - STL files for all the prints github.com/S-March/smarchWatch_PUBLIC If you have any questions, please feel free to reach out to: [email protected] I hope you guys enjoy!

Another glamour shot of the finished watch. This is what the time looks like when you raise your wrist. I decided a background of leaves/flowers went nice with the wood* housing.

Ok, on to the design! First up, this is a quick gif of the top side of the watch being designed in Fusion 360. The program is free for hobbyist and is definitely powerful enough for anything I needed. I tried openSCAD for an earlier version of the watch, and although I liked it, it just couldn't compete with this. I decided early on that I wanted a round watch. I'm not a fan of the square or squarcle watches that seem to be all over these days. Something about that shape felt too 1980's computer-y to me. From a technical point of view, it is definitely easier to make something that isn't round. Square screens are much easier to come by and have more space to show you more stuff. The reality, however, is I don't want another phone or computer on my wrist. I just want something to show me important bits of information when I need them. The shape of this particular watch was primarily driven by the screen I ended up using (which can be found in the bill of materials). It is a teardrop shape, where the actual display is round, but there are some additional electronics parts that add to the size. So you can see above, the square parts on the top and bottom where the band connects to the watch are actually there to hide the bottom of the screen.

This is the bottom part of the watch. You can see the cutouts inside for the battery, vibration motor and charging pins. There are also two small holes that are used for screwing the circuit board down.

A rendered version of the top.

A rendered version of the bottom. Note the yellow piece on the right hand side. That is the screen connector. It folds over itself and plugs into the circuit board.

Another quick render of the top.

Ok, on to the fun stuff! I have a little cheap monoprice printer here at home, it is awesome for stuff like this. I printed out the two pieces of the housing I designed above out of a woodfill PLA. What that means, is that the plastic I used to print this out, is actually 70% plastic and 30% saw dust. The cool thing about woodfill plastic, is that it behaves very similarly to actual wood. It sands down really nicely and you can stain it with wood stains! The downside to this particular type of plastic is that when it prints, it leaves a stringy mess on the print that you have to clean up. I use a file and some 220 grit sandpaper to get it started.

Next up is just a quick test to make sure the screen and the watch glass fit nicely

Here are the three stages of the 3D print. Bottom left is fresh off the printer, you can see the stringy mess I was talking about. The middle is a sanded down print. And the top right is after the sanded print has been dunked in a dark walnut stain.

The next 9 pictures may be a little boring if you have no interest in the actual electronics of the smart watch (you can feel free to skip them). If you are curious as to what makes this thing tick, I will do my absolute best to describe everything in a non-technical way. When designing a schematic (think blueprints) for any sort of electronics, I try to break down all my big parts of the design into smaller blocks. This first page of the schematics is what I call the "Main" page. All it is, is a quick overview of the blocks that make this watch work, and how they connect to each other. So as you can see, in this particular design there are four blocks: The power block - this is the section that deals with the battery and making sure the watch has power The sensors block - this what tells the watch what is going on around it (think eyes and ears) The actuators block - this is the part of the watch that interacts with the world (think moving parts, like your legs or arms) The BLE block - this is the section that controls the whole thing, it is the brains of the operation. I probably should have labeled this better, but it was originally just meant for my eyes only. BLE stands for Bluetooth Low Energy, it is the same bluetooth that is in your phones. If people are more interested in how the electronics actually work, I can add a more detailed explanation of these next few pictures. I will link to it here.

First up, the power block. As you can see, just like in the last picture, I try to break down things into smaller and smaller pieces. For this particular block, we don't need much. We need the battery itself, the charger contacts, and some protection for the battery. Whenever we work with lithium ion batteries (the same type that are in almost anything rechargeable), we have to be very careful. The batteries themselves pack a lot of energy into something very small. If they short circuit or are damaged in any way, they can blow up with in a matter of seconds. The battery protection block on this page just makes sure the battery is never over-charged, under-charged or short circuited.

Second, the sensors. This particular design only has one extra sensor: an accelerometer. All an accelerometer does is measure, you guessed it, acceleration. If you remember back to your high school physics class days, you may recall that gravity is actually just a downwards acceleration. So with that in mind, if you can measure which way is down, you can figure out which direction the watch is pointing (up/down/left/right/front/back). And if we know which direction the watch is facing, then we can design the watch to only turn the screen on when you hold the watch up and its facing you. You may notice the other block in this section (I2C pullups). I2C stands for inter-intergrated circuit, all it is, is a way for chips to talk to one another. The pullups are just to make sure the I2C communications work properly.

The actuators section is dedicated entirely to ways the watch can interact with the world around it, in this case the screen and the vibration motor. The screen is an LCD (liquid crystal display) which is the same as a lot of phones and TVs. It is 240 pixels tall by 240 pixels wide. What this means is there are 240x240 individually controlled colored dots on a big grid. Think of it like those kids toys (lite-brites), where you can plug in different colored dots to make a picture. That is all this display is doing. The vibration motor is exactly what it sounds like, a motor that vibrates. This is used to let me know when I get a new notification.

This is the meat and potatoes of the watch. The Dialog Semiconductor DA14683 chip. It is a microcontroller (the brain) and it has bluetooth built in to it! There is some additional memory on the circuit board so that the watch can store pictures (people in my contacts, backgrounds, etc.). And what is called a pi-network for the antenna. I won't get into the details of the antenna stuff here, but even for most electrical engineers this stuff is black magic.

The next four pictures are the actual circuit board. This is where we take the schematic, and all the blocks we designed and make them into physical board. Circuit boards are made up of two things: copper and fiberglass. The copper is the part that makes the electrical connections between all the parts. So for example, the microcontroller (brain) is connected to the accelerometer over a copper trace (thin line of copper). But sometimes, you can manage to connect everything without needing to cross over another trace. Think of this like a maze, where if you touch the side, everything short-circuits. So what we can do is connect multiple layers of copper and stack them on top of one another (with fiberglass in between). That way we can have a trace that connects the microcontroller to the memory without having to cross the path of the vibration motor. This first picture is the "top" layer of the circuit board, it has stuff like the microcontroller and the memory on it.

This next picture is the second layer from the top. It is just used to connect stuff. No parts can go here since it is sandwiched in between fiberglass.

This is the third layer, similar to the last one.

This is the bottom layer of the circuit board. On this side, we can put more parts, so things like the battery and vibration motor are all connected here. That concludes the boring electrical stuff. Back to the fun build pictures.

Ok, welcome back to the people that skipped over the boring stuff! This is the finished circuit board. After I finished the design, I put all the files together and sent them over to a PCB manufacturer. They then take those files and print (with a super high resolution printer) on to some copper. They can then etch away the copper that isn't used and voila! Circuit boards!

After getting the circuit board I just did a quick fit check with the printed parts from before. The bottom part of the watch is the part that holds the circuit board.

Then the top part of the watch just presses down on to that!

Once the circuit board checked out size-wise, it was time to put all the chips and stuff on. I unfortunately forgot to get a cool time-lapse of this process, so the gif below is me assembling an older version of the smart watch that didn't have a screen. At least it will give you an idea of how it works.

Here is how assembling a circuit boards works. First, in addition to the actual bare circuit board, it helps to have a stencil made. The stencil will have cutouts for solder paste. This goop is, in essence, tiny beads of solder that are suspended in a paste. So, once you have your circuit board, put in on a flat surface (I like to tape it down so it doesn't move). Next, tape the stencil on top. Spread the solder past out with something like an old credit card. After all the holes in the stencil are filled with the paste, take the stencil off (very carefully). Then, the fun part, using tweezers, pick up and put down all the little chips and parts on the board. Once all the parts are on the board, un-tape the circuit board, and pop it in the reflow oven (basically a fancy toaster oven) for about 8 minutes. All those tiny beads of solder will melt and turn into solid metal connections holding everything in place!

Next up, the actual assembly! The board gets screwed down into the bottom housing. Those two golden squares at the top with the holes in them are the charging pads.

Next up the glass and screen are placed into the top housing. A nice snug fit.

Connecting the screen to the circuit board is as simple plugging it in.

Last but not least, flip the top part over and press it down.

Because who doesn't love a short gif.

Here is the final thing all buttoned up and coded. When I raise my wrist, it shows the time. I won't bore people with the running through the code (there is a LOT of it). If people want to know more about it, I can add a more detailed review and link it here. A quick summary of some of the things I had to do: - Get bluetooth working and talking to my phone - Implement an Apple Notification Center Service (ANCS) so that my phone would forward notifications to my watch - Get the microcontroller to talk to the screen (this took SO long) - Get the screen to display pixels - Design animations for the screen - Get the microcontroller talking to the memory - Write a windows program to open a folder of pictures on my desktop, crop them to a square, downsize them to 240x240 pixels, convert them to a bitmap, strip out the bitmap header, change the endianness of the bytes, put all the data into one long hex file and then transmit that hex file over UART to the watch - Write a function to take the picture data from the UART stream, and put it into memory with offsets that were readily available - Hand draw a 240 by 240 picture that contained all letters and numbers in upper and lower case, then get the microcontroller to slice that image up depending on which letter or number it needed to display (so if you wanted to right "HELLO" it would find the "H" in the picture, send it to the screen, then find the "E" do the same thing, etc.) - Get the accelerometer to wake up the microcontroller only when the wrist was in the right position so it used minimal battery power - Write a contacts function that would parse the notification for who the sender was and return the offset in memory of where their contact picture was - Many many more things...

When I get a notification on my phone, it comes through my watch!

BONUS CONTENT!!! You thought I would stop at just a watch?! Nope, had to make a charging cradle for it too! Here is a quick gif of how it assembles. I designed another small circuit board that has a micro-USB plug and some spring contacts. When the watch is laid into the cradle a big magnet holds it in place and the spring contacts send power to the watch to charge the battery!

Here is the cradle with a USB cable plugged in.

Here is what it looks like with the watch inside.

Here is the magnet pulling the watch into place.

Finish the whole thing up with the same glamour shots from earlier! This is what the watch looks like when I get a notification. First it shows a picture of who the message is from (along with what application) followed by the message itself. That is me sending a text to myself from google voice.

Hope you guys liked it. I know it is a lot of really technical info, but I had an absolute blast making the watch (and I think it came out pretty nice looking)! The github link at the top has all of the circuit files, bill of materials, schematic, code, and STLs if you want to make your own!

TAKE ME UP

Embed Code

Use old embed code

Copy and paste the HTML below into your website:

Preview

  • #
  • #
  • #

Hide old embed code