Nov 29, 2015
When Pebble announced the new Pebble Time smartstrap functionality during their Kickstarter campaign, I remember being intrigued by the possibility of hardware add-ons, but it seemed like something distant at the time. When the Hardware specification was published, however, I realized that this was something that could be hacked on, rather than just a protocol for big 3rd party manufacturers to leverage. I started spending all of my available time hacking on smartstraps - even before the firmware to support them was released, and modified the initially Teensy-focused serial library to work on the Arduinos I had at hand, eventually resulting in a working smartstrap once the firmware was released! Next up was the charging cable hack once it became clear that the 3d-printed connector, which lacked magnets, was not even close to being stable enough to maintain a connection. And then I had the chance (of a life time!) to participate in Pebble’s smartstrap hackathon, Pebble Rocks Boulder!
Hot off of a win with our Team Hack Dads Pebble Altimeter Smartstrap, I became consumed with enthusiasm for the platform. Inspired by Matt Hungerford’s demonstration of the Pebble Time’s frame buffer being transmitted to an external display, I set out to do similar using the Gameduino 2 that I already had, but got distracted by the Gameduino’s touchscreen and widget capabilities and decided it would be more fun to use it as an input, the most exciting (and ridiculous!) form of which that occurred to me at the time being a keyboard input for the Pebble Time!
By far the biggest issue encountered during development so far was difficultly successfully transmitting a 32-bit epoch time value from the Pebble Time to the Arduino (the latter lacks an RTC so leveraging the Pebble to help the Arduino tell time seemed like a fun exercise at the time!) since despite both systems being confirmed little-endian, the 32-bit integer was behaving as though its most significant 16 bits had been lopped off on arrival. Unpacking the byte array by hand and combining (after appropriately shifting) the results provided a fix for now, though I plan to explore assurances from the Pebble team that just casting (i.e.
*(uint32_t *)buffer) should work just as well (keep an eye on my Pro Pebble Development blog for a more detailed analysis?).
The result of my experiments with adding an external touchscreen to the Pebble Time are encapsulated in the video demonstration below, where a hacked watchapp version of my PW-DOS Command Line Watchface for Pebble receives keyboard input and emulates the DOS
DIR command. Source for each is available, but in desperate need of clean-up - being presently hacked however was required to allow the below video demonstration to be achieved - but will be refining and expanding as time allows!