Skip to content

Bluetooth GPS Watch, Step Counter, and HR Monitor

Notifications You must be signed in to change notification settings

modularizer/weargaroo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weargaroo

Make your own smart watch! Built with the Seeeduino XIAO BLE Sense microcontroller, this watch can be programmed in either Arduino or CircuitPython. For the purposes of this project we will be using CircuitPython.

Features

  • Color Screen (240x240 RGB TFT via SPI)
  • GPS (receives lat, lng, alt, date, time, velocity, position of satellites, etc. via UART)
  • Acceleromenter & Gyroscope (for running cadence, step counting, fall detection, detecting motion/position etc. via I2C)
  • Heart Rate Monitor (receives raw analog data based on intensity of reflected light via AnalogIn)
  • Microphone (via PDM In)
  • 3 buttons (via Digital Pins with internal pull-up)
  • Vibrational Motor (via AnalogOut/DigitalOut)
  • 120mAh LiPo Battery (connected to builtin battery charging pins)
  • Solar Panels (wired in series and connected to boost converter to 5V in. not currently working)
  • On-Board File System (easy to modify code with any text editor, no need to rebuild)
  • BLE (wireless file transfer and communication with phone/laptop, etc.)
  • CircuitPython REPL (easy to test code)
  • Arduino or CircuitPython compatible (easy to get started and lots of open source examples)
  • NFC pins (not currently used)

Software Used

  • KICAD (free PCB Design Software)
  • Fusion 360 (free CAD Software)
  • Mu (free CircuitPython IDE)
  • PyCharm (free fully fledged Python IDE)
  • Gimp (free Image Editor)
  • Ultimaker Cura (free gcode 3D print setup software)
  • git (free version control software)

Resources

Components

Item Reference Quantity Price Shipping Features Price at Scale
*Seeed XIAO BLE nRF52840 Sense nRF2580 1 $15.99 $8.99 BLE, MicroPython, 6-axis IMU, Microphone, Battery Charger, 5uA sleep mode $13.90
MakerFocus 1.3", 240 x 240 Color TFT ST7789 1 $12.99 $0 (w/ Prime) square, color, backlight, easy to use $3.78
Gooouuuunu Tech GPS module GT-U7 1 $11.59 $0 (w/ Prime) GPS with antenna, 2.5m accuracy $5.49
Pulse Sensor Arduino Heart Rate Sensor N/A 1 $8.99 $0 (w/ Prime) small analog pulse sensor $1.38
120 mAh LiPo Battery PL521521 1 $8.39 $0 (w/ Prime) 3.7V, 120mAh $4.14
Vibrational Motor N/A 1 $7 $0 (w/Prime) works on analog or digital output pins $0.20
Momentary Buttons N/A 3 $7 $0 (w/Prime) Momentary Buttons $0.15
Flexible PLA FPLA 1 $33 $0 (w/ Prime) flexible brown PLA ~$2
Custom PCB N/A 3 $15.70 $5 0.8mm ~3
**Solar Cells IXOLARTM SolarBITs 10 $29.4 $4.99 0.56V, 24.5mW $18.7
**Boost Converter N/A 5 $7.99 $0 (w/ Prime) 0.9-5V to 5V $0.5

*$16 Seeed BLE can be replaced by $6 Seeed if bluetooth, accelerometer, and gyroscope are not desired
** Adding solar panels costs ~$40 and has so far not been effective

Supplies

Item Price
Soldering Iron $21
Wire Strippers $7
Solder $7
Small Gauge Wire (30) $13
Ender 3 Pro 3D Printer $236
Gorilla Glue Gel $8

Price

  • Without solar panels the components in the watch cost ~$70 or ~$40 if produced at scale.
  • When building just one there will be some waste (e.g. you have to buy PCBs in batches of 3)
  • Without solar panels, accelerometer, gyro, ble, or heart rate a gps watch could be made for ~$55, or ~$30 at scale.
  • The simplest smart watch requires only a $6 Seeed, a $13 screen ($4 at scale), and a 3D printed band and could be produced for ~$20 or ~$10 at scale.
  • Solar panels add ~$40 to the price and so far have not been effective (but I'm holding out hope).

Pinout

Component Part Pin Board Pin
Screen SCL SCK
Screen SDA MOSI
Screen Res D4
Screen DC D5
GT-U7 TXD RX
Bottom Button + *A0
Middle Button + A1
Top Button + A2
Vibrational Motor + *A0
Pulse Signal A3

Notes

Screen

IMU

  • The internal IMU works using I2C. Before reading data, power the IMU and allow time to sleep before initializing (see accel.py)

GPS

  • Make sure TX on the GPS is wired to RX on the Seeed

Vibrational Motor / Bottom Button

  • The vibrational motor and the bottom button use the same pin A0, so only one can be used at onse.

Getting Started

Building Hardware

Unfortunately the pads on the custom PCB do not fit the Seeed quite right so soldering will be tough but possible. The next revision of the board should improve this.

Booting

To boot the Seeed:

  • double click the boot button (located on right side of USB-C port).
  • a File Explorer window should pop up on your computer with a CircuitPython D: drive
  • drag and drop boot/adafruit-circuitpython-Seeed_XIAO_nRF52840_Sense-en_US-20220607-ee3ccbc.uf2 into the CircuitPython folder
  • once the .uf2 file gets loaded, the device will boot up and a new File Explorer window should pop up, now showing a folder containing code.py and a lib folder
  • copy and paste the contents of src into the CircuitPython device folder

Running Code

When the Seeed is turned on or rebooted, either code.py or main.py will be run. The easiest way to test code is to use the Mu Editor in RP2040 Mode. You can run files individually with the Run button, or use the REPL to test stuff.

Interested in a Doing It Yourself?

If you are interested in this idea and want to do some or all of this project on your own, I'd love to hear about it. I am toying with the idea of selling kits of materials as well, so let me know if you are interested! modularizer@gmail.com

About

Bluetooth GPS Watch, Step Counter, and HR Monitor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages