What it does

When the EyeWaker program is run on your computer, it begins searching for a face and the corresponding eyes using OpenCV AI. It will highlight any eyes on the webcam camera display, tracking them around. If they are obstructed, closed, or leave the camera view, our program will send a signal to the Arduino to begin a short timer. The LEDs progressively light up as the timer ticks down. Once the final LED is turned on, our passive buzzer will play a custom tune, alerting the user and getting them back on track. However, if the program detects any eyes during the timer duration, the LEDs will stop lighting up and the timer will be terminated.

Inspiration

Late night study sessions... especially for ENSC 100W. We found that RedBull was usually not enough to get all our work done at 2AM, so we decided to build a system that could wake us up whenever we start to drift off to sleep!

How we built it

We used an Arduino and some electronic components, namely LEDs, passive buzzer, and resistors. For the code, we started with a simple C++ program to ensure we can control the LED's and the buzzer. From there, we used python and opencv face detection AI to track the users face and eyes. By doing so, we can track whenever the users eyes can not be seen and send the data to the Arduino using pyserial, which will then start a countdown.

ChatGPT was used to aid in our design process, teaching us which python extensions to use and what each parameter is.

Challenges we ran into

Figuring out AI detection, as it could be inconsistent at some times. We had to make sure it detected eyes and not mouths. Figuring out how to communicate between python and the Arduino. Learnt to use pyserial

Accomplishments that we're proud of

Tuning the passive buzzer! We were excited to discover that we could play literally any song that we wanted to. We were also excited to discover our AI worked properly.

What's next for EyeWaker

Possible servos to physically interact with the user, maybe even tasers :))

Built With

Share this project:

Updates