The Arcology Garden

PineTime

LifeTechEmacsTopicsArcology

I used Pebble watches for a long time and I really still like them but they're a pain to keep running these days and I never got around to writing custom code or apps or watchfaces for it. After my Pebble Time 2 HR bit the dust, I ended up buying a Amazfit Bip S, and it sort of worked, but I needed to install an extra app to get Sleep as Android sleep tracking working with it and it's a sort of weird, closed ecosystem. I probably should have tried to get GadgetBridge to work with it, oh well.

I bought a PineTime from Ameridroid on a lark when I wanted to get a Radxa Zero and a Pinecil from them. They're 25$ nRF52 smart watches with heart rate sensing, accelerometer, and 8 bit color LCD touch screen.

So with the PineTime, I decided sooner rather than later I should try to write the watch face I wanted, and wrote that in an evening. Maybe I'll code up some other features. I'd like to add a meditation timer next.

The PineTime Fuzzy Clock Face

On my Pebble and on my desktop and laptops I use a "fuzzy" clock – rather than saying "it's 12:41", my computer tells me "it's a quarter to one" which is about the level of detail I care about when I am reading the time or telling it to others. It's a pretty rare thing to see (though my local coffee house has a really cool fuzzy clock on their wall:

(apropos nothing, i want one of these and would love to know how to get one lol)

Anyways, I wrote one for the PineTime. It even has Vulfpeck Fonts to own the haters. This won't compile since I don't have the legal right to share the Vulf Mono Italic fonts, so you'll need to do some small work to make it use another font or add Vulf_Mono-Italic.woff to src/displayapp/fonts.

The tutorials and whatnot were fine, basically, to get going (see the Resources below), and I got to something quickly which ran in the Simulator but I had some real issues getting an actual firmware pumped out for it, the binary was way too large in a way that didn't make sense given the watch face is only ~150 lines of code.

It turns out I was #include <iostream>'ing so that I could do some printf debugging in the simulator and that include was enough to bloat the firmware significantly. Once I removed that, I had a firmware, but I wasn't able to get GadgetBridge to flash it, I had to use WatchMate on my laptop and that worked.

Anyways, I think this watch will be pretty nice and maybe better than the Amazfit notwithstanding the custom watch face.

I might try to Create Your Own PineTime Watch Face in Rust… And Publish on crates.io eventually, since I almost immediately bit myself with a trivial Out of Bounds array access bugs within a few hours of writing it.

NEXT PineTime Meditation Timer/doan app

Resources

PineTime Product Page

[2023-09-26 Tue 12:29]

  • Open-source operating systems
  • 1.3 inch IPS capacitive touchscreen
  • Week-long battery life
  • Bluetooth 5 and BLE
  • Heart rate sensor
  • Step counting

InfiniTimeOrg/InfiniTime: Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS

[2023-09-26 Tue 12:30]

This is what I used for building my PineTime Fuzzy Clock Face, it's fine! LVGL is neat, I think.

PineTime Custom Watchface Tutorial - PINE64

[2023-09-26 Tue 12:31]

This documentation is basically fine, I would start by just copying the WatchFaceDigital.{cpp,h} and modifying them rather than starting from scratch. Wiring it up is a bit of pain since a WatchFace needs to touch like 4 different files (See 9241d4783c7abf466827f98269efac31588b4003 in my PineTime Fuzzy Clock Face branch.)

Don't be like me and include C++ std for cout debugging in the Simulator or it'll end up too large to flash and the nRF5 SDK will refuse to output an ELF that can be evaluated to see what is causing the overflow. That was a huge PITA.

Create Your Own PineTime Watch Face in Rust… And Publish on crates.io

[2023-09-26 Tue 12:34]

It would be nice to build a PineTime watchface in Rust, the LVGL bindings seem like they're a bit more legible at least.

at the very least I wouldn't have trivial Out of Bounds array access bugs within a few hours of writing it.

Gadgetbridge for android

[2023-09-26 Tue 12:52]

Gadgetbridge is an Android (5.0+) application which will allow you to use your Pebble, Mi Band, Amazfit Bip and HPlus device (and more) without the vendor's closed source application and without the need to create an account and transmit any of your data to the vendor's servers.

azymohliad/watchmate: PineTime smart watch companion app for Linux phone and desktop

[2023-09-26 Tue 12:53]

subject says it all…