I added bluetooth functionality and support for multiple alarms.
I made 3 alarm profiles which you can now switch btw and configure by pressing the 6th button in alarm menu. If you may want you can set the alarm using Bluetooth from your phone. Whatever time you send will be automatically configured for the last profile selected. This is what the webpage looks like -
I made a looooooot of progress. I am still not done though its just that you must write a devlog every 10 hours. I made the following things in the firmware
It’s literally a whole menu which we interact with a few buttons and on hour 10 I am starting to forget what i did on hour one bcz the code gets so confusing. I will be writing very specific comments throughout my code so that I don’t forget how I made things work after a week or so.
I mostly did this myself but I used AI to make the ringtone for me. Other then that lil bit help I took of AI to fix small bugs in the logic.
I am pretty impressed already but now I have to finish the alarm and create timer + stopwatch.
once that’s all done the main thing is that I have to make games like simon says which if not finished, the clock wont stop beeping. idk if I have time for all this bcz stardance is ending on 31st, though I will try my best. **Enjoy this video of the project and lemme know ur thoughts. **
I built the clock!! Getting the display to stay at its place was very hard, but I managed to do it and stuck it in place. Also my usb port in the back was slightly misplaced to i had to make the hole bigger with soldering iron. the display cutout also needs fixing. Next I will make these fixes in the CAD and a looooot of work is left in making the firmware.
Everything is completed! I made the firmware so that the keys and rotary are assigned to F13-20 on the keyboard. they are then mapped to whatever actions we want them to take via a python file. that python file is to be run on system startup. Right now you can only control the rgb led and the display just shows “TapPad!” for now. I will make it customizable in future. I also added extra clearances in CAD.
I recieved the kit yesterday and finished the build! then I flashed the firmware, everything worked except the oled display, it was glitched. I tried fixing, it worked in simplified tests but did not work with qmk. I tried to fix it but then I got frustrated!! then I mindlessly used AI and the AI slop made it even worse and I did not understand anything that it wrote. So I reverted back to an older version of my repository. now I will work on firmware again fresh start from where I left it. It has a few dark burn like marks from when i was trying to slightly adjust the holes for led and display. I placed them slightly off while building. I will add extra clearances in the cad model.
I made this quite a while ago and then got sick, forgot to log this. I added Mouse scroll and zoom functionality. The zoom works by bringing thumb and index finger close, then using the middle finger to zoom as you can see in the video. You can also use the mouse in a similar way. your mouse moves with the midpoint of your index and thumb. when you tap them its a left click, when you touch your thumb and middle finger, the tracking stops for you to adjust your hand if it goes out of the camera. You can switch between the 3 modes by pressing “P” while keeping the camera window in focus
I decided to build this project which will have a really cool and responsive backlight system. Making it was quick, I just had to downscale the frames of the screen, assign each row/column to a LED in the strip and send the data. I struggled a bit the last step bit with a bit of searching I had 4 arrays with colours of each side which i rendered as 4 windows for demonstration.
Today I mapped the scroll wheel with pyautogui to scroll as I move my hand up or down while keeping my finger and thumb in contact.
To do so I calculated the mid point between my thumb and finger. This point acts as the main point whose position is considered for scrolling. You can see it in the video as well, it turns red when my fingers come in contact
Next to actually scroll I use the following code ->
diff = ti_mid[1]-prev_ti_midpt_y
if abs(diff) > small_movement:
pyautogui.scroll(int(diff*sensitivity))
prev_ti_midpt_y = ti_mid[1]
Here I Compare the position of the mid pt in each iteration, calculate the difference and multiply with a constant which acts a sensitivity. Finally we use pyautogui to scroll it by that amount. Also if the magnitude of diff is too small (ie. less than small_movement variable) then the movement is not considered.
I also defined these variables at the top for easier configurations
sensitivity = 4
small_movement = 5
tap_threshold = 0.3
hand_detection_confidence=0.2
tracking_confidence=0.1
scroll_mode = True
Tap threshhold here is how close the fingers have to be to consider them in contact
Next I will be adding the mouse movement. I tried to implement that today but its gonna take more time so I’ll continue it in the next session. For that reason only I also added the variable, scroll_mode
I have some plans for this project. I want to build a software which will let me control my pc from my hands via gestures.
Today I had setup a git repo and started writing the code. Till now I have made a basic structure which captures input via opencv, makes a dictionary with coordinates of all points in a hand and finally calculates the distance between thumb and index finger. Then it also detects if the thumb and middle finger are in contact.
However I faced one issue when calculating the distance. when I move forward and backward, the distance between 2 fingers is constant in the real world but it keeps changing for the camera as I move hand closer and further from the camera.
To fix this we understand that the ratio between the distance of my wrist and the point right where the pinky finger starts and the distance between fingers is always constant (because the palm never bends so it gives us a reference point to calculate distance), even when I move hand closer or far away. so that’s what I did, I calculated the ratio and used it as the distance which you can also see in the video below. There is also score which is the confidence of hand tracking and contact which tells if the index and thumb are in contact.