This project is submitted for

Description

You may have seen any of the smart watches on the market today and thought, "that's way too expensive," or "I wish this feature was customizable," or "darn, I need an android phone for that." If so, look no further! Sporting a beautiful 1.5" full color OLED display with micro SD card slot, QI charging, NFC, altimeter, thermometer, compass, gyroscope, accelerometer, pedometer, and full Android/iOS bluetooth 4.0 low energy capability for receiving phone notifications, my Arduino compatible smart watch does it all. Ever wanted a smart watch that you could customize to the core? Use with Android and iOS? Build yourself? Trust is fully open source? My name is John Wall, I'm 16 years old, and from the experience I've gained building my previous generation OLED watch, I have set out on an engineering journey, determined to build my own smart watch, the best smart watch.

Components

1×
IMUduinoBTLE
The latest from Femtoduino, the IMUduinoBTLE uses an atmega32u4 from Atmel bootloaded as an Arduino Leonardo and a Nordic nRF8001 bluetooth 4.0 low energy chip and support components to connect to compliant devices and receive notifications for the watch. It’s tiny size and low power consumption make it perfect for use in this low power application. Now with an on board IMU, the IMUduinoBTLE has 10 DOF IMU incorporating a 10cm accurate barometer/altimeter, 6-axis digital compass, and 3-axis gyroscope/accelerometer, enabling complex motion and the precise altitude to be implemented by the user!

1×
1.5″ full color OLED display with onboard microSD card slot from Mike Rankin
A step up from the monochrome .96″ OLED display of v4.2, this screen also consumes very little power thanks to the OLED technology behind it and can show beautiful images that will be the GUI for the smart watch. Now that there’s an sd card on board, I can use fancy graphics and make it look professional and keep the code to the microcontroller, enabling more to be coded instead of storing images too.

1×
3D Pedometer Module from Nicerf
This tiny, tiny module will connect to the watch’s I2C lines as the DS1307 does, and counts steps using a tiny accelerometer and buffer memory. It’ll be used to add fitness tracking capability to the watch and in conjunction with the phone app, keep track of calories burned and activity levels! Oh, and did I say this thing was tiny?

1×
Samsung NFC Tec Tile
An advanced NFC tag that when placed under the OLED screen's glass, will allow users to scan the watch with their phones and automatically connect themselves to it via bluetooth, and open up a web page with documentation and source code!

1×
QI Inductive Power Receiver
Made for the Galaxy S5, this small card with an embedded coil receives up to 750ma at 5V from a QI compatible base station to charge the watch's lithium ion battery wirelessly.

Project Logs

I have come to the conclusion that the Atmel Atmega32u4 is simply too slow/small to run/store any useful software. I have plans for an upgraded version with an Atmel M0 or M4 chip that runs much faster and has much more storage space for programs that make use of all the sensors on board. This project has been an incredible learning experience, and I appreciate everyone's avid interest! I will return to hackaday.io with a bigger and better (working) smart watch. See you then!

With the case and new OLED display just in, I was able to remove the screen used for testing and permanently assemble the watch. Coming in at .5mm thinner than my previous generation OLED watch, it's much thinner than I anticipated, and the 3D printed case is almost perfect, although I'll order another top half of the case to tweak several spots to ensure a precise fit in the long run, but for the most part, it's complete! Once I'm completely happy with the case, I'll wire and adhere the QI wireless charging receiver to the bottom where a slot is inset for it and then I'll be able to just place it down on my charging base and it will begin charging wirelessly and by itself. Now I will continue work on the smart phone companion app, and when that is finished and working, I'll complete the operating system to use the communication standards I created in the app and add the fancy animations and features that will make this the coolest smart watch out there.

My buddy Alex from Femtoduino.com has just started a Kickstarter campaign for mass producing the IMUduinoBTLE microcontroller used in this smart watch! The starter pledge is a crazy good price, and most of the amazing sensors and features of my watch come from this incredible board including all the bluetooth low energy capability! It's essentially an Arduino Leonardo in the tiniest form factor physically possible, and I can trust Alex and his devices 100%. If you need a microcontroller that's incredibly small, but still easily incorporated into advanced projects with a host of sensors and wireless communication, check out the Kickstarter!

It's an exciting time for my smart watch project! My hardware is assembled and fully functional, test software is working and looking far slicker and more professional than I could have ever thought, and the companion app for android is almost complete. At the moment I'm waiting for the watch case to be 3d printed in polished black plastic from Sculpteo.com which should arrive next week, and with the bands that arrived today, if my caliper skills are up to par, I'll be able to case up the pcbs and focus on software! From my preliminary renderings and what the bands look like, this thing is going to look mean, and compete visually as well as in stats with other smart watches on the market today (which wasn't my goal at all with this project). Once my app is done, I'll make another post and make a video of it working, so I'll keep developing and get back to you in a few days!

I've evolved my GUI design to what's shown below. This screen will animate as the main menu when the side button is pressed. When the watch is tilted to view, it'll show your preselected watch face, but if at any time you press the side button in, it'll go to this menu with your wallpaper and give you information about the temperature, if you have notifications, your battery and bluetooth state, and things like that. You can then scroll up or down to read notifications or see sensor data!

The day has come... My smart watch prototype works! It turned out I hadn't switched some of the pin assignments in arduino from my testing rig over to the new pins, so after some more tracing, the OLED is working along with everything else on the board! Success! Now I have hardware to play with, I can work on some software and trimming down all the libraries for maximum space. I'll also make my own fonts and store them on the sd card as they take up WAY too much space in flash. I've gotten emails back from help sources about the companion app, and should have it done soon. This is shaping up to be an awesome project!

After testing showed the OLED io pin choices would work, and I was fully confident in assembling the prototype, the second I sat down to assemble it, the microSD card fell out of its slot, and I discovered the mechanism no longer worked. Two weeks ago, Mike was kind enough to send some replacement card slots for me to repair it with, but they've been lost in the mail, and so two more are coming via air and I hope they arrive shortly. That aside, during these weeks, I've made great progress on the firmware and android companion app, but have reached a point where I need help as detailed here: https://discuss.tindie.com/t/w-llt-ch-smart-watch-android-app-help/1047. With less than two weeks left, if my sd card slots come in time, I'm confident I'll have a functional prototype, and with the code I've written and tested so far, it should be enough to meet the deadline requirements. I'll do some CAD and mock up another "artists render" of what it will look like, and will polish up the documentation here to best support the guidelines.

Labor day weekend I had some time to populate the pcb for the smart watch and do some preliminary testing, but left off the expensive IMUduinoBTLE and OLED display until I was fully confident in the design. After all the ICs and passives were soldered on by hand with my Hakko 888D, I probed the regulator and tested the power circuit, and it all worked perfectly. Next I soldered pin headers to the IMUduinoBTLE, as it'll need headers wether this prototype works or not, and press-fit it into its place on the board. I also fit the OLED display into it's row of pins, and with my tongue at the right angle, held everything to the pins made contact. Upon powering it up, my test image showed on the OLED, and the screen could refresh, and then I lost concentration and lost connection. The OLED is very very picky about having a solid connection to work at all, so I was half expecting this not do anything. I now know that the IMUduinoBTLE can run the screen with the pins I chose, and the power is routed correctly. \o/ All I need now is to find a suitable place to mount the vibration motor, and a free day to work on it, and I'll have a functional prototype to test the software I've already written for it! Can't wait!

I mocked up some toolbar icons in photoshop for the smart watch GUI today and tested them out on the display when I got home from school. I played around with colors until I found the perfect grey for the toolbar, and after setting some alignment and measurement standards form myself, created a concept GUI that I really like and will stick with in the final software. The icons from right to left are the charging icon, bluetooth connected icon, and bluetooth disconnected icon. Obviously both bluetooth icons won't be on at the same time, but rather with boolean connection values coming from the Nordic nRF8001 will reflect the current bluetooth state of the watch. The time from the DS1307 and temperature from the IMUduinoBTLE's barometer will appear on all non-watch face screens, and will disappear when switched to a time face. When showing a time face after waking with a tap, pressing the side button will show the toolbar and show the number of notifications and the information mentioned above.

A Galaxy S5 wireless inductive charging receiver module arrived at my doorstep today and will work perfectly to supply my smart watch with up to 750ma of 5v charging power, for it to use along with USB, to charge the watch's 500mah lithium polymer battery. With its two solderable contacts and small size, this receiver will be perfect to slot in the watch case and provide the charging circuit with wireless power when soldered to the PCB's auxiliary power input pin at the circuit board's bottom right corner in the picture. Instead of fumbling for a micro USB cable, all you have to do now is place the watch on a QI standard compatible charging pad, and the watch will automatically begin receiving 5v with no connections and charging the battery just as fast as plugging in the USB cable. Seamless, high-tech, easy. Fantastic!

Thank you! Strictly speaking, no, it isn't water resistant, but in its case
which seals it in leaving only the USB port and other slots open, a splash from
rain or washing your hands won't do much. The battery has short circuit
prevention, so if any water gets in, the power will be cut instantly and
restored when you connect the battery to a charger. I have conformal coating,
but certain things like the SD card slot, USB port, selector switch, power
switch, backup battery slot, and a few other things can't be coated as they have
contacts that need to be clean. All cased up, it'll be pretty resistant to
splashes and things like that, but on a whole, no, it isn't.

Oh another promising watch. I LOVE THIS TOO. I was searching for smart watches that I can program on and came back empty every time. The Pebble doesn't multitask, the TI doesn't have matrix display, the WIMM, Sony, i'm Watch and others don't have enough buttons, are Android (overkill) or don't last long (not to mention that I can't verify my specific requirements without hands-on experience)

I want a wrist-device with RTC (doh), matrix display that's always on (even when stationary), easily programmable, lasts 20 hours on a charge, and at least four buttons (for up, down, enter and back). Will yours be able to do this once finished?

Most certainly! The 500mah battery should give it plenty of run time according
to rough calculations and rounding up, but I'll test it for sure when it's
complete, and it's a fully featured Arduino Leonardo so the convenience and
community surrounding the Arduino microcontroller is at your disposal. The flick
switch on the side has an up down and push in state, and with the on board
accelerometer, a tap on the screen will be the fourth 'select' state. The
reasoning you cited is half of why I've created this watch, the other half being
the fun of planning designing and building it, I'm glad you like it. This watch
is also cross compatible with iOS and Android too, so unlike every other smart
watch in existence (except pebble), anyone with either device can develop and use the full feature set of the watch as well as the unique features you've pointed out.

That's great. Although I really want the rock switch to do enter and have a separate microswitch on the left or something (not the same height to prevent pushing both at the same time). I own the same rock switch btw, salvaged from an USB MP3 player.

We really need people your age! I bet you're getting a lot of eyes because what you're doing is not typical for people your age, but when I was about 14 I started hacking together lots of stuff and studied boolean logic, digital signal processing and 3D raytracing, which are normally advanced college courses. When I grew older I stayed the same geek but with increasingly many ideas and less time on my hands I could barely finish any project anymore, and after even more time the motivation for starting projects got lost altogether.

I've definitely gained much attention with this project, Make: interviewed me and wrote an article, and my website and twitter have been exploding with curious and very supportive people. I'm warmly appreciative of all the support that I've received and am genuinely happy and excited so many in fact are interested. Watch this space for a prototype very soon!

I don't have an assembled prototype as of right now, that'll change very shortly, and one of the things to test is power consumption and battery life. It should definitely last over a day with 500mah, it's probably closer to 2 or 3.

Hello! Thanks for the interest! At the moment, no, I'm not planning to add a touch screen as I haven't worked with one before and so it wasn't a part of the design process. The 3 way switch is spring loaded, tactile, and feels good to casually flick up and down, and is in the perfect position on the watch to place your thumb on the left side, your middle finger in the middle of the switch's side, and actuate the switch with your index finger. Add a flowing UI and the switch should be more than enough and as simple as a touch screen to use. I have thought about it, but I'm not quite sure if they're made to my size or how to support them with arduino in hardware or software. Thanks for your question!

As now that the watch has such an incredibly accurate 9 DOF IMU, I scan detect taps on the screen with the accelerometer and use the spring switch to swipe up and down. You could tap on the sides of the watch to navigate that way too. Tilting to scroll when the watch is awake, anything really. You could hold a magnet and use it as a stylus with the magnetometer, there are an incredible amount of features I can make use of, and you can too with the open source code!

You should still submit it asap as community voting starts soon. It doesn't have to be finished at this point. We want to see the evolution through the project logs. Hope you have a great time on your holiday.

Hello Walltech, I'm really impressed with your project. Can't wait to see it develop over the summer.

btw - we've updated the submission process for The Hackaday Prize, so if you want to *officially* enter this project - login and use the 'submit to' under your project images on the left hand side.

Also, we're starting community judging shortly, so now is the time to make sure you've added info to the project so people can see why you should win The Hackaday Prize. You might also like to add a few more details to your profile page, so we can get to know you better.

Thanks for your interest! I won't have access to a printer/scanner for two more weeks as I'm on vacation, and as soon as I get back, I'll be officially entering the contest with the form. I'll be sure to apply your advice to the project page too! Thanks!