PIP-Watch (Personal Information Panel) is an open-source smart watch with an ePaper display, a bluetooth modem and a Li-Ion accumulator.


This is a work in progress… And this project takes part in the HACKADAY Prize contest!


Pip-Watch uses a small ePaper/eInk electrophoretic display (EPD). Electrophoretic displays have high contrast even in sun light, and very low power consumption, making them suitable for always-on battery-powered embedded devices. Low power consumption comes from the fact that the EPD draws no power when just displaying still image; it needs energy only when redrawing the screen.

Communication with a mobile phone (or any internet-connected device) is via a Bluetooth modem module. As the modem implements the standard Bluetooth Serial Port Profile (SPP), Pip-Watch can be controlled over any terminal application even by hand. A smartphone app will transmit notifications to Pip-watch when an SMS arrives, a calendar event pops out, or an incoming call is being received.

Pip-Watch is powered by a small Li-Ion accumulator that is recharged via a standard Micro USB connector. When connected, the USB can be also used to communicate with the device.

Hardware Block Schema

Hardware is built around the STM32F103 microcontroller. CPU timing is derived from an 8MHz crystal; it provides a clock stable enough for an on-chip USB interface to function correctly. An auxiliary low-speed precision 32.768kHz crystal is used for real-time clock (RTC), which is also included in the microcontroller.

Bluetooth modem is implemented by a pre-built commercial module. The first prototype uses OEMSPA310 from connectBlue, later the BTM431 from Laird will be used. The BTM431 has the advantage of lower power consumption and smaller size. These modules implement complete Bluetooth stack beginning with built-in ceramic antenna, and ending with a UART interface. Both modules are controlled via AT-style modem commands (albeit different between the types).

All power is normally delivered from Li-On battery, type Nokia BL-4C. The battery is charged form a Micro-USB connector via a charging controller MCP73831. The whole device runs at 3.3V, which is generated by a low-drop regulator LD59015C33R from a battery voltage. Current battery voltage is monitored by an A/D converter in the microcontroller, so the remaining battery charge can be computed and displayed on screen.

The display is implemented by GDE021A1, a small 3” electrophoretic display with the resolution 172×72 pixels. Communication with the display is via simple SPI-like interface. The display requires a charge pump with a coil and MOSFET.

Besides the display, the rest of human interface comprises of at least three buttons, three LEDs, and a vibrating motor(s) to give tactile notifications.

Software Block Schema

Software is organized in three layers. At the bottom there is a hardware access library from STM. The middle layer is composed mainly of the FreeRTOS operating system and a graphics drawing library u8g, both open-source. FreeRTOS is a simple multi-tasking operating system with pre-emptive scheduling, and with support for simple inter-task communication primitives such as queues and semaphores. The u8g is a drawing library: it is used to draw text and graphics such as lines and circles into a frame-buffer. The frame-buffer is then transmitted to the display.

The top software layer are tasks. The main tasks include a “Bluetooth Modem” task which communicates with a smartphone via Bluetooth, a “Battery” task that monitors battery charge using A/D converter, and a “Display Drawing” task that refreshes the display. Other tasks may be added as needed.

All source files are hosted in a project repository at https://github.com/jsyk/PIP-Watch

Relevant blog posts:



Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.