|# Antiprocrastinator (Watch)
- Kyle Chiu (kchiu6)
- Taylor Plummer (tnp3)
- Brandon Wong (bjwong3)
Procrastination has been a huge hurdle in the lives of many students and workers. While some people have the self-discipline to get work done, many people like our group aren't great at staying focused. Some of our members have participated in procrastination and have also had firsthand experience of the consequences of procrastination (e.g. all-nighters, lower grades). Many procrastinators like ourselves push school and work to the side and instead pursue various forms of entertainment, such as computer games or internet videos, in order to avoid doing work. This forces procrastinators to put off their assignments until the deadline, to which they are forced to cram a few days' worth of work into a few hours, which consequently means that the procrastinator will be physically and mentally exhausted, and the work completed will be of mediocre quality at best.
The solution is to make procrastinating harder. Specifically, we will be hindering the access of any websites or computer programs that the user has blacklisted. There are browser extensions that can block websites, but those just leave the user waiting in anticipation until their websites are unblocked when the timer ends. Our goal is to use a wireless, battery-powered watch with an integrated speaker that, upon receiving a signal from the computer that the user is using blacklisted sites/programs, continuously plays an annoying sound until said sites/programs are closed.
This watch consists of a few components in order for it to work:
- Computer software that detects what programs are being run and what websites are currently open
- A Bluetooth module that will receive signals from the user's computer
- A sound-emitting device (i.e. a piezo buzzer)
- A small microcontroller that handles the signals from the Bluetooth module
- Power circuit for handling the different voltages and charging
# Solution Components
## Computer Software
The user's computer will be connected to the watch via Bluetooth and also be running software that can detect what computer programs are currently running and what websites are currently open. If any user-blacklisted programs/websites are open, then the software will send a wireless signal to the Bluetooth module to communicate that a sound should be played. This software will be written in C++ and/or Python.
## Bluetooth Module
The watch needs Bluetooth capabilities in order to communicate with the user's computer. A Bluetooth module will suffice. We plan on using https://www.mouser.com/ProductDetail/Olimex-Ltd/BLUETOOTH-SERIAL-HC-06?qs=tMOYG%252Bw4%252BLzhaOkVjDuAYw%3D%3D. It will then be able to receive signals from the user's computer to decide whether or not a sound should be played and at what volume/frequency.
## Sound-Emitting Device
The watch needs to be able to play loud noises in order for it to annoy the user so that they would close the blacklisted programs/websites. To do that, we need a component that emits sound. While a speaker would be cool to have, we really only need buzzing noises as they are very annoying, and using speakers would most likely require an amplifier circuit, which would be too large. https://www.adafruit.com/product/1740 is a small piezo buzzer that we plan on using.
The watch needs to be able to receive data from the Bluetooth module somehow and then determine whether or not it should send a signal to the piezo buzzer. If a sound should be sent, then we need to be able to generate an analog square wave since the piezo we plan on using requires an analog wave in order to work properly. A microcontroller, specifically the https://www.sparkfun.com/products/9378 (ATtiny85) is good enough because it is small and it has 6 GPIO pins, which is enough for our case since we only need to hook up the Bluetooth module and the piezo buzzer.
## Power Circuit
Since the watch is wireless, it needs to be battery-powered and also rechargeable. We will be using https://www.adafruit.com/product/4237, which is a small 3.7-volt battery. The microcontroller and piezo buzzer can run on 3.7-volts, but the Bluetooth module requires 3.3-volts, so we need this https://www.sparkfun.com/products/526 3.3-volt regulator. Lastly, charging will be handled by this https://www.adafruit.com/product/4410 charging circuit.
# Criterion For Success
- Software correctly detects all running programs and websites
- Software correctly detects when a blacklisted program/website is running and sends a signal to the Bluetooth module
- Bluetooth module receives signal from computer only when a blacklisted program/website is running
- Microcontroller detects signal received by Bluetooth module and generates square wave to feed to the piezo buzzer, which should produce a loud continuous buzzing noise until blacklisted programs are closed
- Watch should only buzz when blacklisted programs/websites are open
- All components should fit in a reasonably-sized chassis that can be worn on the wrist