This repository contains the software and design files for my custom smartwatch thing. The system is built on an ESP32, and the software is written in C++, using ESP-IDF and Arduino. The software includes a few "apps", which are shown below.
The device uses a custom PCB that holds the ESP32, and all the other electronics that make the system work. The PCB was designed in KiCad, and the enclosure for the device was made in OpenSCAD.
The system isn't as powerful as existing smartwatches, but it was a really great way for me to learn a lot of electronics and programming concepts and tools. This isn't supposed to be a marketable product, but a proof of concept thing, and a way for me to develop my skills. This repository is here as a kind of archive to show the level my skills are at at time of writing, and hopefully as a thing to look back on and learn from.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
components
ESP-IDF componentsdesign_files
KiCad files for the schematic and PCBdocs
documentation for the system (see docs/readme.md
for more detail)extras
other stuff like icons, data files, and pinout for the original breadboard prototypemain
where all the code livesspiffs
data and images for the SPIFFS partitionThese are some rough instructions for installing and flashing the software on to an ESP32 board. These steps are mainly aimed for Linux systems.
git clone
this repository somewhere - git clone https://github.com/atctwo/watch-II.git
cd
into the project directory
chmod +x install_libraries.sh
./install_libraries.sh
idf.py menuconfig
to tell ESP IDF the flash size of the ESP32 you are using
Serial flasher config → Flash size
and select the right flash size (i've only created partition files for 8MB and 16MB at the minute)Partition table → Custom partition CSV file
and enter either partitions_8mb.csv
or partitions_16mb.csv
idf.py build
, and to write the built firmware to an ESP32 board, run idf.py flash
(see the ESP-IDF documentation for more detail on these commands)next, flash an SPIFFS image to the device
# if you're using an 8 MB flash
esptool.py --port /dev/ttyUSB0 write_flash 0x340000 spiffs/spiffs_8mb.bin
esptool.py --port /dev/ttyUSB0 write_flash 0xE20000 spiffs/spiffs_16mb.bin
- more info on how SPIFFS is used can be found at [spiffs/readme.md](spiffs/readme.md)
docs/notes/libraries.md