Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
Go to file
2021-08-15 11:19:47 +02:00
.devcontainer Setup plugins for Clang-tidy/format 2021-08-09 00:16:17 +00:00
.github Small correction to git URL in documentation files 2021-03-15 23:13:46 +00:00
.idea/codeStyles Improved CLion configuration 2021-07-02 16:29:09 +02:00
.vscode Add VSCode ST-link debug config (#567) 2021-08-14 21:24:26 +02:00
bootloader Normalize all the line endings 2021-01-31 20:50:04 +01:00
cmake-nRF5x Enable various compilation flags to reduce the binary size (#401) 2021-06-01 21:03:01 +02:00
doc Add image with example layouts 2021-08-15 11:19:47 +02:00
docker docker: add git system package to image 2021-05-14 01:07:32 +03:00
hooks Made the pre-commit hook fail explicitly when the executable doesn't exist 2021-07-24 15:55:52 +02:00
images Update README.md and picture. 2021-04-21 21:56:43 +02:00
src Clean up using variables 2021-08-15 11:19:47 +02:00
tools bin2c: Don't assume that the default Python version is higher than 2 2021-04-17 13:16:15 +03:00
.clang-format Changed access modified indentation 2021-04-24 12:00:45 +03:00
.clang-tidy Disabled a few more unnecessary warnings, sorted a bit 2021-07-02 16:29:25 +02:00
.gitattributes Create .gitattributes 2021-01-30 18:52:14 +02:00
.gitconfig Create .gitconfig 2021-01-30 18:48:06 +02:00
.gitignore Added cmake variants 2021-08-07 18:19:11 +00:00
.gitmodules Using littlefs (#438) 2021-07-11 15:06:06 +02:00
.gitpod.yml Custom Dockerfile for gitpod.io 2021-01-05 00:34:15 +00:00
CMakeLists.txt minor changes regarding building (#356) 2021-07-24 15:39:24 +02:00
CONTRIBUTING.md Update contribute.md (#475) 2021-08-14 20:58:38 +02:00
gcc_nrf52-mcuboot.ld Refactor CMake files to allow building 2 binaries : one standalone and one compatible with mcuboot bootloader (the offset in memory is different). 2020-05-24 16:36:04 +02:00
gcc_nrf52.ld Refactor CMake files to allow building 2 binaries : one standalone and one compatible with mcuboot bootloader (the offset in memory is different). 2020-05-24 16:36:04 +02:00
LICENSE Add LICENSE file and information. 2020-08-02 17:38:51 +02:00
nrf_common.ld Fix link error because of missing file "nrf_common.ld" 2020-01-12 16:26:20 +01:00
nrf52.svd Added the nRF52 SVD file for ease-of-use to the repository 2020-10-02 23:11:27 +03:00
README.md Merge pull request #505 from geekbozu/devcon 2021-08-10 16:54:13 +02:00

PineTime

Build PineTime Firmware

The PineTime is a free and open source smartwatch capable of running custom-built open operating systems. Some of the notable features include a heart rate monitor, a week-long battery as well as a capacitive touch IPS display that is legible in direct sunlight. It is a fully community driven side-project, which means that it will ultimately be up to the developers and end-users to determine when they deem the PineTime ready to ship.

We envision the PineTime as a companion for not only your PinePhone but also for your favorite devices — any phone, tablet, or even PC.

https://www.pine64.org/pinetime/

The Pinetime smartwatch is built around the NRF52832 MCU (512KB Flash, 64KB RAM), a 240*240 LCD display driven by the ST7789 controller, an accelerometer, a heart rate sensor, and a vibration motor.

InfiniTime

InfiniTime logo

The goal of this project is to design an open-source firmware for the Pinetime smartwatch :

Overview

Pinetime screens

As of now, here is the list of achievements of this project:

  • Fast and optimized LCD driver
  • BLE communication
  • Rich user interface via display, touchscreen and pushbutton
  • Time synchronization via BLE
  • Notification via BLE
  • Heart rate measurements
  • Step counting
  • Wake-up on wrist rotation
  • Quick actions
    • Disable vibration on notification
    • Brightness settings
    • Flashlight
    • Settings
  • 3 watch faces:
  • Multiple 'apps' :
    • Music (control the playback of music on your phone)
    • Heart rate (measure your heart rate)
    • Navigation (displays navigation instructions coming from the companion app)
    • Notification (displays the last notification received)
    • Paddle (single player pong-like game)
    • Twos (2048 clone game)
    • Stopwatch
    • Steps (displays the number of steps taken)
    • Timer (set a countdown timer that will notify you when it expires)
    • Metronome (vibrates to a given bpm with a customizable beats per bar)
  • User settings:
    • Display timeout
    • Wake-up condition
    • Time format (12/24h)
    • Default watch face
    • Daily step goal
    • Battery status
    • Firmware validation
    • System information
  • Supported by 3 companion apps (development is in progress):
  • OTA (Over-the-air) update via BLE
  • Bootloader based on MCUBoot

Documentation

Getting started

Develop

Build, flash and debug

Contribute

API

Architecture and technical topics

Using the firmware

TODO - contribute

This project is far from being finished, and there are still a lot of things to do for this project to become a firmware usable by the general public.

Here a quick list out of my head of things to do for this project:

  • Improve BLE communication stability and reliability
  • Improve OTA and MCUBoot bootloader
  • Add more functionalities : Alarm, chronometer, configuration, activities, heart rate logging, games,...
  • Add more BLE functionalities : call notifications, agenda, configuration, data logging,...
  • Measure power consumption and improve battery life
  • Improve documentation, take better pictures and video than mine
  • Improve the UI
  • Create companion app for multiple OSes (Linux, Android, iOS) and platforms (desktop, ARM, mobile). Do not forget the other devices from Pine64 like the Pinephone and the Pinebook Pro.
  • Design a simple CI (preferably self-hosted and easy to reproduce).

Do not hesitate to clone/fork the code, hack it and create pull-requests. I'll do my best to review and merge them :)

Licenses

This project is released under the GNU General Public License version 3 or, at your option, any later version.

It integrates the following projects:

Credits

Im not working alone on this project. First, many people create PR for this projects. Then, there is the whole #pinetime community : a lot of people all around the world who are hacking, searching, experimenting and programming the Pinetime. We exchange our ideas, experiments and code in the chat rooms and forums.

Here are some people I would like to highlight:

  • Atc1441 : He works on an Arduino based firmware for the Pinetime and many other smartwatches based on similar hardware. He was of great help when I was implementing support for the BMA421 motion sensor and I²C driver.
  • Koen : Hes working on a firmware based on RiotOS. He integrated similar libs as me : NimBLE, LittleVGL,… His help was invaluable too!
  • Lup Yuen Lee : He is everywhere: he works on a Rust firmware, builds a MCUBoot based bootloader for the Pinetime, designs a Flutter based companion app for smartphones and writes a lot of articles about the Pinetime!

If you feel like you should appear on this list, just get in touch with me or submit a PR :)