Smartwatch built from scratch, both hardware and software. Built on the Zephyr™ Project RTOS, hence the name ZSWatch - Zephyr Smartwatch.
Synced remote control over BLE
remote_control.mp4
Watch my presentation at Zephyr Developer Summit 2023
- Head over to the hardware repos https://github.com/jakkra/ZSWatch-HW and https://github.com/jakkra/ZSWatch-Dock for information about ordering the PCBs and assembly from PCBWay.
- Go to the Wiki for information how to print parts and assemble ZSWatch.
Some things are still in progress:
- Work in progress building instructions in Wiki
- Dock casing.
I'll also build a few initial kits (assembled) for those who don't want or can build ZSWatch themselves.
In addition to assembled ZSWatch and dock you will get the following compared to if you build it yourself:
- A magnetic dock connector and cable. I have got custom ordered cables to fit the needs of ZSWatch.
- Dock with onboard SEGGER J-Link OB debgger, which means you won't need an external debugger for ZSWatch development and flashing.
- Possibly CNC:ed casing in Stainless steel.
If you are interested in a kit, or want to get notified when the missing parts above are resolved, fill in your mail here (Google form) and I'll send a reminder when it's ready.
Or if you want to get notified for releases and when the missing parts are finished simply press the Watch
button (next to Fork and Star) -> Custom -> Releases
and you will see in your feed when it's officially released.
- Building or getting one
- Hardware features
- Charger/Dock
- Enclosure/Casing
- Software Features
- Watchfaces
- Smartphone communication
- PCB
- ZSWatch v1 in action (Note old, not updated for latest HW and SW).
- Environment, Compiling and running the code
- Writing apps for the Application Manager
- Other tools
- Licence GPL-3.0
- Thanks
- nRF5340 BLE chip (u-blox NORA-B10 module).
- 128 MHz Dual core.
- 512 KB RAM.
- 1 MB Flash.
- 30 MHz SPI for display.
- 240x240 round display with touch screen.
- IMU Bosch BMI270, with this one it's possible to do many fancy things such as navigation using gestures and the typical smartwatch wakeup by moving the arm so the display is viewable.
- Bosch BME688 Environmental sensor with AI.
- Bosch BMP581 High performance pressure sensor accuracy in units of ~20cm's.
- ST LIS2MDLTR Magnetometer.
- Renesas AT25SL128A 16 MB external flash.
- Broadcom APDS-9306-065 Light Sensor for automatic brightness control.
- Option to not mount some sensors to save BOM cost.
Option with and without onboard SEGGER J-Link OB debugger.
As the debugger requires a license, this will only be availible as part of a kit.
See more at https://github.com/jakkra/ZSWatch-Dock
3D printed casing with 3D printed buttons, option CNC:able casing in metal.
- Bluetooth LE communications with GadgetBridge Android app.
- Also support Bluetooth Direction Finding so the watch can act as a tag and is trackable using any u-blox AoA antenna board
- Multiple Watchfaces showing:
- Standard stuff as time, date, battery
- Weather
- Step count
- Number unread notifications
- Environmental data
- ...
- Pop-up notifications
- Application picker and app concept
- Step counting
- Gestures
- And much more ...
There are almost endless of posiblities for features that could be implemented, see here for full progress and in GitHub issues.
Alternative watch faces can be chosen by selecting one or many of the appropriate Kconfig.
Swiping left to right will change the watchface.
for something else, and can then be disabled.
CONFIG_WATCHFACE_ANALOG=n
CONFIG_WATCHFACE_DIGITAL=y
CONFIG_WATCHFACE_MINIMAL=y
To select watchface background see below config in prj.conf:
CONFIG_WATCHFACE_BACKGROUND_SPACE=y
CONFIG_WATCHFACE_BACKGROUND_FLOWER=n
CONFIG_WATCHFACE_BACKGROUND_PLANET=n
CONFIG_WATCHFACE_BACKGROUND_NONE=n
Fortunately there is a great Android app called GadgetBridge which handles everything needed on the phone side, such as notifications management, music control and so much more... The ZSWatch right now pretends to be one of the supported Smart Watches in Gadgetbridge, following the same API as it does. In future there may be a point adding native support, we'll see.
- In the watch go to Settings -> Bluetooth -> Enable pairing
- Now go reconnect to the watch from Gadgetbridge app.
- You should now be paired.
Apple exposes Apple Notification Center Service GATT server which handles notifications management on the phone side, music control is done in the same fashion using Apple Media Service... The ZSWatch communicates straight to the iOS with no extra Apps.
- In the watch go to Settings -> Bluetooth -> Enable pairing
- Now go to your device settings -> Bluetooth and choose "ZSWatch"
- You should be prompted to pair and allow share notifications
A 4 layer board which measures 38mm in diameter designed in KiCad.
More info here: https://github.com/jakkra/ZSWatch-HW
Music control | Accelerometer for step count and tap detection |
---|---|
Notifications from phone (Gmail here) | Settings |
toch_demo.mp4
- Visit https://jakkra.github.io/ZSWatch-Web-Dashboard to connect and view sensor data in a browser that supports Web Bluetooth (Source code)
Main difference from MIT is now that if anyone want to build something more with this, then they need to also open source their changes back to the project, which I thinks is fair. This is so everyone can benefit from those improvements. If you think this is wrong for some reason feel free to contact me, I'm open to change the LICENCE.
SEGGER for supporting with SEGGER-OB licenses which makes the dock a fully functional programmer and debugger for ZSWatch. Thanks to this the project will be much more approchable for persons without a J-Link debugger, letting them have full development and debugging capabilites.