From: Advaith Menon Date: Mon, 1 Dec 2025 21:48:05 +0000 (-0500) Subject: Update README X-Git-Url: https://git.devinivas.org/?a=commitdiff_plain;h=d5339c4d646049be58c0902134320c52196a6857;p=smartwatch.git Update README * Make README into a report per 4180 guidelines --- diff --git a/README b/README deleted file mode 100644 index 98ac93f..0000000 --- a/README +++ /dev/null @@ -1,115 +0,0 @@ -=============================================================================== - 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. diff --git a/README.asciidoc b/README.asciidoc new file mode 100644 index 0000000..b6ca94e --- /dev/null +++ b/README.asciidoc @@ -0,0 +1,73 @@ += The Go Smart Watch +Diego Fratta ; Anish Gajula ; Advaith Menon +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. diff --git a/README.old b/README.old new file mode 100644 index 0000000..98ac93f --- /dev/null +++ b/README.old @@ -0,0 +1,115 @@ +=============================================================================== + 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.