Website Blocking Pomodoro Timer


The small final project I had in mind was the Tomagotchi Pomodoro Timer, which is a productivity timer that tracks work intervals and break intervals. Overall productivity goals would then be tracked and made entertaining with a companion pet system that would depend on how true you stayed to following the intervals. However, the code for this would have taken a long time. Software alongside hardware would've taken too long in the time period alloted, so I shifted my focus to making the base product first and having a simple and well-made pomodoro system instead.



Initally, I wanted to make a timer that could sense being flipped on its z-axis. The timer would then respond like a hourglass, but that would change later when I found a design that I wanted to continue with.


Heres some acceleromter feature testing witht the LIS3DH



Putting it in PCB form:



To add the readings from the acceleromter to an OLED screen, for uniformity, I wanted to make another PCB on the 5V side of the ESP32. The problem is that 5V would surpass max logic voltage for the SSD1306, so I tried to use a 3.3V linear regulator.



The component got so hot it decided to desatuer itself, so I scrapped that idea and just wired it up to the 3.3V pin.


Tap detection with acceleromter.




3D printed case that has a slot for an led on the bottom and an led on the bottom so when its flipped a green LED for work is shown and a red LED for break is shown when turned the other way.





This box wasn't quite enough to contain my wiry monster, so I shrunk her down.






Dissapointingly, I tugged too hard when shoving my electronics into the case which made one of the LEDs loosen from the pad causing it to have bad contact with the copper, so I just ripped it off. There was no saving it.





Clothes fitting session.



The design choice for a mini chonky monitor was that I didn't have enough time for the battery so the flipping controls would be inconvenient because the wire attatched to the device. Thus, a stationary device controlled by tilting was what I chose. Plus this looks ways better than the straightforward box I had before.

Had to add a few pieces of duct tape for the aesthetics.




For website blocking it actually wasn't as bad as I thought. Just had to install Flask on a python environment and then write a python script to block certain websites. In Arduino, I just had to add the Wi-Fi SSID, passwd, and my devices IP address on top of my existing code so the 2 device's could communicate.



                br1yen@bb-LMX1C:~$ ip addr

                br1yen@bb-LMX1C:~$ source ~/pomodoro-env/activate

                br1yen@bb-LMX1C:~$ sudo ~/pomodoro-env/bin/python3 pomodoro_server.py
            





This system isn't perfect at all though. First, the script is on the device the timer will be blocking on, so the user has to manually run the script everytime they want to work (or if you're a smarty pants just run the script on startup). Second, the nature of Arduino IDE makes it so that tilt detection, tap detection, and also website blocking are happening in sequence so it can feel non-responsive and laggy at times, but I mitigated some slowness by utlizing interrupt (not a perfect solution however).


Demo: