Inspiration
Our phones are attention sucking, addicting boxes conveniently placed less than a couple feet away at all times. We found ourselves increasingly unable to control our phone usage and had to resort to Screen Time controls on our phones and laptops to combat unproductivity. Unfortunately, before long, we found ourselves completely ignoring the screen time limits and quickly bypassing the restrictions. Blocking an app doesn’t actually address the root cause -- the app is still addictive. So what’s the solution? We need to cue our body to want to stop using the app.
What it does
Bazinga takes a proactive approach to managing screen addiction. Integrated directly with your mobile device and browser, it enforces screen time restrictions you set. Here's how it works:
- We've modified a Chrome browser extension that tracks your screen time and enforces the app restrictions you've set.
- You have the flexibility to set custom time limits for any number of websites or even block them entirely.
- If you venture onto a blocked site or stay on a time-limited one, the extension communicates with a connected "wristwatch" device.
- This wristwatch, currently in its prototype stage on a breadboard, houses two electrodes. When triggered, they deliver a gentle shock as a physical reminder to disconnect.
How we built it
Bazinga is composed of two primary components: the browser extension and the prototype "wristwatch".
The Browser Extension: We utilized an open-source Chrome extension provided by Femi Oladeji. The original code can be accessed on GitHub at the given link link . Our modifications are mainly in the
background.jsfile. Instead of just logging and closing tabs that exceeded set limits or accessed blocked sites, our adapted version sends an HTTP request to a server on the ESP32 inside the "wristwatch".The Prototype "Wristwatch": The wristwatch is built around an ESP32-S2, a Wi-Fi and Bluetooth enabled chip. This chip manages a "shocker" circuit. The circuit is powered by six 9-volt batteries in series, which charge a 450 uF 50V capacitor. A transistor in the circuit connects to an output pin on the ESP32. When the browser extension detects a violation of set screen time rules, the output pin on the ESP32 is activated, powering the transistor's base. This action charges the capacitor and allows it to discharge through two wires in contact with the user's skin, resulting in a brief shock.
In summary, when screen time limits are breached, the browser extension communicates with the wristwatch. This prompts the ESP32 to activate the shocker circuit, delivering a short jolt to the user.
Challenges we ran into
While developing Bazinga, we encountered several challenges, primarily on the hardware side:
Browser Extension: Modifying the open-source Chrome extension to send the HTTP request to the ESP32 was a straightforward process and posed minimal issues.
Webserver on the ESP32: Setting up the webserver on the ESP32 presented connectivity problems. Initially, we struggled to connect the ESP32 to the HackMIT wifi. After some troubleshooting, we discovered the ESP32's inability to connect to 5 GHz wifi. Switching to the "MIT" wifi resolved the connectivity issue.
"Shocker" Circuit Construction: Our initial plan for the shocker circuit involved creating a small transformer to step up the voltage to levels sufficient for a mild shock. However, sourcing the parts, especially the ferric core necessary for the transformer, became a significant challenge. In the absence of a ferric core, we attempted to use galvanized stainless steel washers from the New Vassar makerspace. This approach was unsuccessful as the circuit couldn't produce a shock; the losses from the makeshift transformer were too high.
*Finding an alternative: We dedicated nearly 8 hours searching for a suitable ferric core across electronics hobby shops, campus maker-spaces, and the Stata loading docks. Despite our efforts, we couldn't locate one. Instead, we connected six 9-volt batteries in series. While this setup doesn't provide the voltage necessary for a direct shock, it can charge a 50V capacitor. When discharged, the capacitor produces a loud sparking sound, serving as an auditory jolt.
The absence of a ferric core was a significant setback. Had we secured one, we believe we could have assembled a fully functional prototype wristwatch.
Accomplishments that we're proud of
While we weren't able to produce the prototype we desired, we've gotten everything taken care of on the software side!
Since none of us had any experience working with the ESP32, we felt amazing after all the debugging when the browser extension could finally send a HTTP request to the ESP32.
What we learned
We’ve learned plenty about transformers. In our initial design for the circuit, we included transformers to step-up our voltage from a 9V battery. However, in practice, implementing a suitable transformer – one that was small, yet relatively potent with a 4-5x increase in voltage – presented some interesting challenges. We tried first looping copper wire around steel bases, finding that even with 100:5 turn ratio (between the primary and secondary coils), the steel core severely damped the magnetic effects, to the point that the transformer didn’t work. Searching for a ferrite core would’ve been difficult, so we then tried stripping parts with suitable transformers, such as motherboards and lighters. This was hard to get working, due to damage incurred during the stripping process.
So we instead redesigned the circuit, opting for the much simpler solution of putting batteries in series to increase our initial voltage. This worked, and was a great lesson in taking into account time considerations in engineering design.
We’ve also learned about working together as a team. Delegating the hardware and software layers was a good exercise in modularity and abstraction, allowing us to complete the project.
Rapidly learning Swift, Chrome extension development, and the basics of transistors and transformers has been a great experience.
What's next for Bazinga
There’s definitely potential in our idea. Almost every person we talked to said that they loved it and we know for sure there’s a niche market for people that have trouble controlling their screen time and need a Pavlovian way to enforce good habits.
Our next step is to create the circuit that we originally planned, prototype that with the ESP32 web server / chrome extension. After that works, we plan to create an iOS + Android application to track screen time there too and link that to the ESP32. Ultimately, we want to combine all this in an integrated circuit that’s small enough to go on a watch.
Additionally, currently the system only works if the device is connected to the same network as the user, but this wouldn’t work for mobile phones. Ideally, we’d want a server backend where the device and user’s app both ping to connect. This removes the need for being on the same wifi network and the device itself hosting a web server.
We see this as fitting either as a standalone watch or miniaturized to fit into a replacement watch band.
Built With
- chrome
- esp32
- extensions
- html
- javascript
- wifiserver
Log in or sign up for Devpost to join the conversation.