This project is the most recent iteration of my personalized fully custom smart watch. The general purpose of this project is to serve as a learning tool and to have complete control over the functionality of a smartwatch. The current status of the project is ongoing, but in it's current state it is fully functioning and is used daily.
The major components of the project, all of which are completely custom, include the smartwatch itself, a charging dock, a development board and an android application.
The smartwatch hardware centers around an nRF52840 for it's bluetooth low energy performance with additional supporting hardware including,
- Battery and protection hardware
- Battery Fuel Gauge
- Temperature Sensor
- BMA400 Accelerometer
- nPM1100 Power Management IC (PMIC)
- Pogo-pin based charging
- 16 MB of External Flash (used for mass data storage)
- 240x240 16-bit RGB IPS LCD Display with Display Dimming Hardware
- TAG Connect target for mass data upload and general debugging
The firmware developement utilized the Zephyr RTOS and nRF Connect SDK in conjunction with LVGL for rendering graphics.
The case of the smartwatch was custom designed to fit the hardware and was made using traditional SLA 3D printing techniques using a biocompatible resin.
The design of the case and subsequent printing took a vast amount of time and was one of the largest pain points for the project.
In addition to the resin shell, there are a few additional aftermarket components.
These include a watchglass to protect the screen from damage, a standard smartwatch wristband, a small magnet for easy docking, and screws.
In order to charge the smartwatch without having to disassemble the watch, a pogo-pin based charging system was implemented centered around an external power delivery board. This power delivery board, or charing dock, simply passes power provided through a USB-C connector to a set of pogo-pins that interface with a target on the bottom of the smart watch. In addition, the case of the dock was designed to hold a strong neodymium magnet for easy alignment.
To ease the development process and to better characterize the power requirements of the smartwatch, a development board was created. The development board is a one for one copy of all the smartwatch hardware with an additional USB-UART IC for easy debug output. The development board was also fitted with a jumper in series with each device's power input making it possible to characterize the overall power requirements on a component by component basis.
Although the smartwatch is cool on it's own, without a proper connection to the outside world, it doesn't serve much use. To get useful information to display on the watch such as phone notifications, accurate time, and whatever else I may want to scrape from the web, an android application was built. The base function of the app is communicating an accurate time and sending notification info but can also read device information from the watch such as battery level and temperature. The intention was not to make the app pretty or easy to use, just that provides the desired functionality to the watch.