Skip to the content
PCBKitNew board
2 layers57.1 × 12.7 mmKeyboard, the printed circuit board in 3D

A smartwatch running on the ESP32 + Arduino. Designed to run on cheap boards that have inbuilt LiPo battery circuitry and an OLED screen.

Size
57.1 × 12.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
12
Pads
46
Tracks, vias
92, 7
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
21 Jan 2018
Updated
1 Feb 2025

Overview

Keyboard is an open-source printed circuit board by jhud, from the jhud/hackwatch repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 57.1 × 12.7 mm with 14 parts on 12 nets, routed with 92 tracks and 7 vias.

Its parts include 6 resistors, 4 switches, 2 transistors and 2 connectors. It belongs with the power and keyboards and input boards of this library.

README

README.md

hackwatch

Want to run your Arduino code anywhere, any time? How about running a webserver from your wrist? This is a smartwatch running on the ESP32 + Arduino + 0.96' OLED (color or monochrome). Designed to run on cheap boards that have inbuilt LiPo battery circuitry and an OLED screen. It makes for quite a chunky watch, but the "always on" glow looks very cool, and a 500mAH battery currently lasts 10+ hours without any optimisation. The whole prototype was built for $12.

Picture of hackwatch prototype

Currently, the code uses your WiFi to sync with an NTP server, then show the time and date. I'll improve this project as I need features and find time.

The "flash" button on the GPIO0 of the development board is repurposed as a function button for the watch.

Features

  • Flashlight, Stopwatch, Timer, Wifi Scan, UV Sensor with daily exposure graph
  • BLE connection with message notifications
  • Hardcoded calendar functionality, which will remind you when you need to catch buses, etc.
  • Screen off button, goes into sleep mode
  • Switch between color or B&W display on the application level, via a high-level UI interface.

Setup

Installation

Install the following dependencies:

  • Time (from Arduino library manager)
  • git clone https://github.com/mgo-tec/ESP32_SSD1331 (for the color SSD1331 display)
  • git clone https://github.com/Smartphone-Companions/ESP32NotificationsLib.git (for the Bluetooth LE notifications)

You need to create a file called "secrets.h" which has your WiFi SSID and password:

const char ssid[] = "my access point"; // your network SSID (name) const char pass[] = "MyPassword12345"; // your network password

If you have an SSD1306 monochrome display, remove the #define COLOR_SCREEN. If you have an SSD1331 color display, set that define. Make sure you have the correct pins set in layout.cpp.

OSX Troubleshooting

Fabrication

The SVG file can be printed out, and the pieces cut from 1.5mm rubber. For attaching rubber, here are the methods tried (1 star fail, 5 star excellent):

  • Stitching with nylon thread *****
  • Double-sided tape ***
  • Vulcanising rubber cement **
  • Electrical tape **
  • Hot glue * The best method was to stick pieces with double-sided tape, and then stitch any load-bearing joins.

Major tasks yet to do:

  • Big refactor of messy prototype code
  • Reduce power consumption (i.e. deep sleep when not changing display)
  • Piezo chime or vibrate

Parts

14
QtyValueFootprintReferences
5RResistor_SMD:R_1206_3216Metric_Pad1.42x1.75mm_HandSolderR2, R3, R4, R5, R6
4SW_PushButton_Switch_SMD:SW_SPST_TL3342SW1, SW2, SW3, SW4
22N7002Package_TO_SOT_SMD:SOT-23Q1, Q2
133KResistor_SMD:R_1206_3216Metric_Pad1.42x1.75mm_HandSolderR1
1Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Pin headerConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ1

Questions

How big is the Keyboard PCB?

It measures 57.1 × 12.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard use?

14 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Keyboard KiCad files?

From the jhud/hackwatch repository on GitHub, at the commit this page was made from: the board is hardware/keyboard/keyboard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keyboard design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers116.8 × 30 mmType d, the printed circuit board in 3D

    Type d

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    14 parts3kApache-2.0
  • 2 layers32 × 22 mmDiff driver, the printed circuit board in 3D

    Diff driver

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    14 parts990GPL-3.0
  • 2 layers34 × 45 mm2032Charger, the printed circuit board in 3D

    2032Charger

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    14 parts915
  • 2 layers34 × 109.9 mmTdisplay s3, the printed circuit board in 3D

    Tdisplay s3

    landonr/homeThing

    Wifi Smart Home Remotes that run on ESPHome

    14 parts551GPL-3.0
  • 2 layers45.3 × 42.7 mmMainPcb, the printed circuit board in 3D

    MainPcb

    adamb314/ServoProject

    Getting the most out of your hobby servo

    14 parts545
  • 2 layers42.5 × 28.8 mmC5VRX JACK DIY, the printed circuit board in 3D

    C5VRX JACK DIY

    Twotoz/C5VRX

    Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation & resistor DAC CVBS

    14 parts515GPL-3.0
  • 2 layers62 × 24 mmMai button, the printed circuit board in 3D

    Mai button

    whowechina/mai_pico

    Pico controller for Maimai

    14 parts475