+++ /dev/null
-===============================================================================
- ESP32 SMART WATCH
- Georgia Tech Class Project
-===============================================================================
-
-Authors:
- Advaith Menon
- Anish Gajula
-
-Task List
-===========
-
-Anish
-
-- Workouts App
-- RTC & AM/PM logic
-- Rings (Move, Exercise, and Standing) (extra)
-- Snake Game (extra)
-- Messaging (extra)
-- 2035le (extra)
-- Pedometer
-- Calories burned
-
-Advaith
-- Button Shortcuts
-- Simon Says (extra)
-- Settings
-- Wireless app
-
-
-Together:
-- Inkscape for graphics/UI
-- Color coded key for button controls
-- Haptics
-- Battery
-- Threads
-
-DESCRIPTION
-===========
-
-APPS:
-Clock face
-Pedometer
-Settings
-Compass
-Messaging
-Simon Says Color Game
-Snake Game
-Wireless App (for now)
-Wordle game from 2035
-Also have a color coded key for button controls
-
- Startup & Watch Face UI
-Design the startup and primary display screens on the uLCD (SPI communication).
-* Display a startup splash screen on boot.
-* Implement a watch face with an analog clock and moving hands.
-* Use RTC module to keep accurate time.
-
-Application Grid UI
-Create a 2 × 3 grid menu interface on the uLCD showing all available watch applications.
-* Use graphic assets stored on microSD card.
-* Optimize loading for efficient battery use.
-
-Menu Navigation via Buttons
-Implement menu control using hardware input buttons.
-* Up, Down, Left, Right buttons → Navigate the grid apps.
-* Select button → Open selected app.
-* Back button → Return to previous screen.
-* Support interrupts & digital input.
-* Implement shortcuts from watch face (e.g., long press to open an app quickly).
-
-Pedometer & IMU Functionality
-Use IMU for activity recognition.
-* Detect basic movement for pedometer app.
-* Differentiate running, walking, and sitting/standing.
-* Display step count in pedometer app.
-* Adding a compass app into the watch
-
-Messaging App with Serial Communication
-Enable messaging functionality between two ESP modules.
-* Implement wireless communication via Bluetooth, WiFi, or ESP-NOW.
-* Display incoming messages in the messaging app.
-* Optional: Basic message composing via UI.
-
-Settings App
-Allow user configuration.
-* Adjust settings such as time sync, haptic intensity, brightness, etc.
-* Store settings on microSD or in flash memory.
-
-Battery & Power Efficiency
-Design to operate using a battery power source.
-* Display the battery percentage/charge level
-* Optimize firmware for low power consumption.
-* Consider sleep modes and screen power-down.
-* Manage charging/power regulation.
-
-Haptic Feedback System
-Control vibration motor via PWM.
-* Provide tactical feedback on app selection.
-* Trigger a vibration every hour using RTC timing.
-
-MicroSD Storage Integration
-Use microSD module for storing graphics and configuration files.
-* Load UI element images from SD card.
-* Store saved preferences or logs if needed.
-
-Threaded System Architecture
-Implement the firmware using multithreading, not sequential execution.
-* Separate threads for UI refresh, IMU data processing, communication, RTC update, and user input.
-* Ensure safe data sharing between threads.
-
-RTC Integration
-Accurately maintain time across operations.
-* Constantly update watch face time.
-* Provide time reference for vibrating every hour.
--- /dev/null
+= The Go Smart Watch
+Diego Fratta <dfratta3@gatech.edu>; Anish Gajula <agajula7@gatech.edu>; Advaith Menon <advaith@gatech.edu>
+v0.1.0, 2025-12-01
+:toc:
+
+[.text-center]
+Authors: {authors}
+
+This document can also be accessed in PDF form via an AWS bucket. Normal GitHub
+uses Asciidoctor, the standard Asciidoc renderer to render AsciiDoc. If this
+feature is not supported, Asciidoc is very readable as plain text. This is also
+why it was chosen over Markdown.
+
+== Abstract
+This document acts as a report to describe the purpose of the project, what each
+component in the project does and why said components are necessary. The report
+also details on similarities and differences from this project to other
+real-world embedded systems, and also talks about how certain things might have
+been done differently.
+
+== Purpose
+The Go Smart Watch is intended to be the "jack of all trades" smartwatch. Not
+only can it act as a fitness tracker by keeping track of the steps taken and the
+calories while wearing it, but also has a framework which enables potential for
+many more apps, such as utility apps and games.
+
+== Component Description
+. Espressif `ESP32-C6` (or `ESP32-C6-MINI-1U`): main microcontroller
+. SparkFun Battery Babysitter: battery power for the smartwatch. A smartwatch
+ must be portable and easily reusable. This board allows using a rechargeable
+ LiPo battery with the smartwatch.
+. Push Buttons: Act as user input. Two buttons mimic a rotary encoder and the
+ third one acts as a 'select'. There is a global 'back' button and an
+ application specific 'red' button.
+. SD Card: User-configurable settings that would be hard to change in the watch
+ interface. This includes things like Wi-Fi usernames and passwords that would
+ be annoying to type using the 5-button controls.
+. IMU: Accelorometer whose data can be extrapolated to form a step count.
+. uLCD-144-G2: This is a display which shows watch output. Using a screen
+ instead of a mechanical watch face allows a lot of versatility.
+
+== Similarities and Differences
+* **Apple Watch:** The Apple Watch is an IoT-enabled wearable device
+ manufactured by the Cupertino based company of the same name. Other than
+ showing the time, this watch has a versatile collection of apps that enable it
+ to be used for a plethora of other purposes, including but not limited to
+ contactless payments, calling, messaging and fitness tracking.
++
+While SWOS (the FreeRTOS-based OS Go runs) does not have an App Store, it does
+not take much effort to add new apps. There is a built-in Clock app that can
+sync to the current time using Wi-Fi, and a pedometer that can count the steps
+and calories one has taken.
++
+Due to cost limitations, the Go does not have the plethora of sensors that the
+Apple Watch has, such as a heart rate sensor. It also does not have a proper
+implementation of a rotary encoder, substituting it with pushbuttons instead.
++
+The Apple Watch does not have expandable storage support with SD cards.
+
+== Improvements
+* **Rotary Encoder:** If the part could've been procured in time, the team would
+ have used a rotary encoder as the primary scrolling and selection interface to
+ the watch in lieu of the triple-button system.
+* **Settings App:** A user-friendly Settings app would have been added that
+ would allow the user to change their weight, height and adjust the current
+ time zone.
+* **Icons:** The team was unable to get the `BLIT` instruction of the uLCD to
+ work. If they had gotten these to work, apps would have had icons displayed.
+* **Printed Curcuit Board:** Due to the time constraints of the class, the team
+ was unable to get the printed circuit board and its necessary SMD components
+ ordered in time. The team would have made a simpler, less compact THT version
+ which would not have required as many complications, worrying about space
+ layout in a future release.
--- /dev/null
+===============================================================================
+ ESP32 SMART WATCH
+ Georgia Tech Class Project
+===============================================================================
+
+Authors:
+ Advaith Menon
+ Anish Gajula
+
+Task List
+===========
+
+Anish
+
+- Workouts App
+- RTC & AM/PM logic
+- Rings (Move, Exercise, and Standing) (extra)
+- Snake Game (extra)
+- Messaging (extra)
+- 2035le (extra)
+- Pedometer
+- Calories burned
+
+Advaith
+- Button Shortcuts
+- Simon Says (extra)
+- Settings
+- Wireless app
+
+
+Together:
+- Inkscape for graphics/UI
+- Color coded key for button controls
+- Haptics
+- Battery
+- Threads
+
+DESCRIPTION
+===========
+
+APPS:
+Clock face
+Pedometer
+Settings
+Compass
+Messaging
+Simon Says Color Game
+Snake Game
+Wireless App (for now)
+Wordle game from 2035
+Also have a color coded key for button controls
+
+ Startup & Watch Face UI
+Design the startup and primary display screens on the uLCD (SPI communication).
+* Display a startup splash screen on boot.
+* Implement a watch face with an analog clock and moving hands.
+* Use RTC module to keep accurate time.
+
+Application Grid UI
+Create a 2 × 3 grid menu interface on the uLCD showing all available watch applications.
+* Use graphic assets stored on microSD card.
+* Optimize loading for efficient battery use.
+
+Menu Navigation via Buttons
+Implement menu control using hardware input buttons.
+* Up, Down, Left, Right buttons → Navigate the grid apps.
+* Select button → Open selected app.
+* Back button → Return to previous screen.
+* Support interrupts & digital input.
+* Implement shortcuts from watch face (e.g., long press to open an app quickly).
+
+Pedometer & IMU Functionality
+Use IMU for activity recognition.
+* Detect basic movement for pedometer app.
+* Differentiate running, walking, and sitting/standing.
+* Display step count in pedometer app.
+* Adding a compass app into the watch
+
+Messaging App with Serial Communication
+Enable messaging functionality between two ESP modules.
+* Implement wireless communication via Bluetooth, WiFi, or ESP-NOW.
+* Display incoming messages in the messaging app.
+* Optional: Basic message composing via UI.
+
+Settings App
+Allow user configuration.
+* Adjust settings such as time sync, haptic intensity, brightness, etc.
+* Store settings on microSD or in flash memory.
+
+Battery & Power Efficiency
+Design to operate using a battery power source.
+* Display the battery percentage/charge level
+* Optimize firmware for low power consumption.
+* Consider sleep modes and screen power-down.
+* Manage charging/power regulation.
+
+Haptic Feedback System
+Control vibration motor via PWM.
+* Provide tactical feedback on app selection.
+* Trigger a vibration every hour using RTC timing.
+
+MicroSD Storage Integration
+Use microSD module for storing graphics and configuration files.
+* Load UI element images from SD card.
+* Store saved preferences or logs if needed.
+
+Threaded System Architecture
+Implement the firmware using multithreading, not sequential execution.
+* Separate threads for UI refresh, IMU data processing, communication, RTC update, and user input.
+* Ensure safe data sharing between threads.
+
+RTC Integration
+Accurately maintain time across operations.
+* Constantly update watch face time.
+* Provide time reference for vibrating every hour.