## Inspiration

What time is it? Well, unfortunately, people think Millennials and Gen Zs can't read analogue clocks, so why not just make some AR glasses that can do it for you!

We heard a call for "Useless Inventions" so we thought, "what is the most overcomplicated, unnecessary, yet still fun idea for a project?" After a session of brainstorming, we settled on AR glasses that turn an analogue clock into a digital clock. Like the true engineers we are, why would we need a cell phone or watch to tell the time, when we could just create the most geeky, and overengineered way to tell the time with a single glance.

## What it does

NextTime is our take on augmented reality glasses. The whole premise of NextTime is that it turns an analogue clock into a digital clock.

While wearing the AR glasses, a user can look directly at any analogue clock. Using a camera built into an Arduino on the left side of the glasses, the Arduino detects if an analogue clock is within a specified border range on the camera. In the event that an analogue clock is detected, the Arduino will then send a signal, prompting the current time to be printed on a small display on the right side of the glasses. The text is printed as a mirror image of itself. The lens in front of the glasses then reflects the display back to the user in the correct orientation.

## How we built it

We used an AI Thinker ESP32 Arduino as the main board on the glasses themselves, it is an Arduino compatible board with an attached camera and Wi-Fi. It is powered by a 2000mAh LiPo battery connected through a 5v boost converter. The Arduino connects to a wireless hotspot and runs a web server which streams the camera feed and listens for get requests. A python script is run on a desktop computer which takes the video feed from the camera and does real-time opencv processing on it to detect if the user is looking at a clock. If a clock is detected near the center of the user's field of view, a request is sent by the desktop back to the Arduino which indicates a clock is being viewed. The Arduino then pulls the current time from time.nist.gov and displays it on the 1.3" OLED display connected via SPI.

## Challenges we ran into

The major challenge we faced was at the beginning of our project. Essentially, the compiling and uploading time for all of our code written using the Arduino IDE was extremely slow. Each time we needed to edit code, it would take at least 5 minutes to re-upload to the Arduino. This made debugging and testing difficult to complete, since we didn't account for the extra time needed for this stage. This is the main reason why we spent over a quarter of hacking time trying to get the display to correctly turn off, when we initially thought it would only take an hour at most. We really struggled to overcome this, but eventually after trial and error, we optimized our debugging process by being very selective in the lines of code we were changing, resulting in as few re-uploads as possible to save time.

## Accomplishments that we're proud of

We are proud that we managed to actually make usable augmented reality glasses with fun and mildly comedic functionality. Our time management was amazing and the hardware components worked so much better than we expected.

We all agree that the sole reason that we wanted to participate in this hackathon was to learn and have fun, which, in our opinions, was achieved with flying colours.

## What we learned

We learned that programming Arduinos is a lot harder than it looks. There are a lot of libraries available to use, but not all of them do what you want them to, even if you try. We now have a better understanding of how to integrate

Additionally, we learned that you should plan the overall design of your project near the beginning, instead of attempting to attach hardware randomly where there really isn't space for it. This would've saved us the headache discovering that the placement of wires and batteries wasn't suitable. Design plays a large role in the appeal of a project, like it or not. You could have the coolest project features ever, but if it doesn't fit together into one cohesive and well thought out product, no one will pay attention.

## What's next for NextTime

There are many areas of improvement for NextTime. Ideally, we would like the hardware to be much lighter, as currently it is very heavy to wear. The extra weight causes the glasses to slightly slip down the user's face, running the risk of falling off, in turn damaging the glasses. Also, we would like to make this detachable rather than a semi-permanent modification to a pair of glasses. This could be done by creating housing for the hardware that can clip onto the arms of glasses.

The main software feature we would like to add is analogue clock hand detection. Currently, the Arduino only detects if an analogue clock is present, and it will display the current time based on the internet time. We could add the functionality of detecting where the hands of the clock are and displaying the time seen on the clock (correct or not) and not just the current time no matter what.
## Inspiration

During COVID-19, members of our team completed our first years of university remotely from our home countries. As a result we had to spend a lot of time on screens, which affected our eyesight and posture. We wanted to design a device that assisted us in maintaining a healthy distance from our laptop screens, especially since the "at home" culture that has sprouted from the pandemic is widespread.

## What it does

The eyeWatch is a wearable that complements an ultrasonic sensor latched onto a laptop. When the user is within the 47 cm safe distance from the screen the wearable begins flashing, alerting the user to move back. If the user gets closer, the flashing increases in frequency.

## How we built it

We split work between two parts: the ultrasonic sensor and the LED 8x8 matrix display. Our team was divided into two, each exploring the libraries, circuitry, and code needed for their respective parts. We used the Raspberry Pi Pico to program both parts, and integrated our respective parts into the final solution.

## Challenges we ran into

Integrating the two parts took time, especially since code was written separately for distance input to the sensor and LED display output. We had to iron out nuances in the interaction between these parts, such as what distance should trigger flashing, and formulating an equation for flashing rate based on distance. With the sensor being imperfect, there were occasional anomalous readings that could've interrupted the continuity of the flashing. To account for this, we set calibration limits to the flashing rate, such that flashing would not suddenly stop after flashing rapidly.

## Accomplishments that we're proud of

This was our first hackathon, and we were proud to produce a functional, multi-part system that we personally found useful.

## What we learned

We learnt how to read data sheets and search for libraries to program hardware. We also learnt that design is an iterative process, and combining the two parts of our system involved iteratively altering code for each individual part.

## What's next for eyeWatch

Firstly, we want to implement a lithium ion battery to make the wearable wireless. We would also need Bluetooth to communicate with the sensor, as opposed to the wires we have now. Secondly, from a structural perspective, we would like to use CAD and 3D print casings for the display and the sensor, as well as design a strap for the wearable.
## Inspiration

Millions of people around the world are either blind, or partially sighted. For those who's vision is impaired, but not lost, there are tools that can help them see better. By increasing contrast and detecting lines in an image, some people might be able to see clearer.

## What it does

We developed an AR headset that processes the view in front of it and displays a high contrast image. It also has the capability to recognize certain images and can bring their existence to the attention of the wearer (one example we used was looking for crosswalk signs) with an outline and a vocal alert.

## How we built it

OpenCV was used to process the image stream from a webcam mounted on the VR headset, the image is processed with a Canny edge detector to find edges and contours. Further a BFMatcher is used to find objects that resemble a given image file, which is highlighted if found.

## Challenges we ran into

We originally hoped to use an oculus rift, but we were not able to drive the headset with the available hardware. We opted to use an Adafruit display mounted inside a Samsung VR headset instead, and it worked quite well!

## Accomplishments that we're proud of

Our development platform was based on macOS 10.12, Python 3.5 and OpenCV 3.1.0, and OpenCV would not cooperate with our OS. We spent many hours compiling and configuring our environment until it finally worked. This was no small feat. We were also able to create a smooth interface using multiprocessing, which operated much better than we expected.

## What we learned

Without the proper environment, your code is useless.

## What's next for EyeSee

Existing solutions exist, and are better suited for general use. However a DIY solution is endlessly customizable, we this project inspires other developers to create projects that help other people.

## Links

Feel free to read more about visual impairment, and how to help;
<https://w3c.github.io/low-vision-a11y-tf/requirements.html>