Pinetime

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.

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

I’ve been very interested in this project since I’ve seen a tweet or forum post or blog post (I don’t remember) saying that we should contact the team from Pine64 if we were interested in developping a FOSS firmware for an open-source and community driven smartwatch project.

As an embedded software designer and open-source enthusiast, I couldn’t resist and directly sent an email to Pine64, saying that I have good ideas for the project, and a bit of experience with some MCU like ESP32, STM32,… To my surprise, they answered me and told me they would send me a devkit to my address!

Since I’ve received it, I spent many hours working on this nice device : creating a dev environment, a base project, device drivers, experimentations, performance improvements, battery life improvements,…

I’ve also spent a lot of time with the community, on the forums, the chat rooms, and even went to FOSDEM in Brussels to meet the team behind Pine64 and some others guys working on the Pinetime

In this page, I’ll try to present you some of my achivements and developpments on the project. I hope you’ll find this interesting and that some of you will join me and contribute to the project !

My goal is to create a firmware for the PineTime in C++ (yes, you can do embedded systems in C++) and based on FreeRTOS.

The project is available on Github : https://github.com/JF002/Pinetime.

The actual pinetime running my firmware next to my ‘stub’ running on a NRF52-DK board. This is the first « smartface » I’ve implemented using a custom graphics library. It displays the date and time, the status of the BLE connection, the battery level and the firmware version.
Touchpanel
Time synchronisation with BLE (NRFConnect on my smartphone)
Screen refresh
F aster screen refresh
Vertical scrolling
Vertical scrolling
Infinite rainbow using vertical scrolling
Infinite rainbow using vertical scrolling (faster)
Integration of LittleVGL (instead of homebrew UI lib) for more functionalities and fonts, first user interaction via the touchpanel. Perfs are quite bad, but can be improved (give me some time!).
More test apps that implements a gauge and a meter widget from LVGL.
Same as the previous video (test of lvgl widgets) after some optimizations on the display driver.