stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

Keyboard

Hardware
  • 4 Devlogs
  • 66 Total hours

A 3D printed piano keyboard powered by an ESP-32

Open comments for this post

31h 22m 23s logged

Ok I was busy with life and getting back motivation and doing some other stuff and I really did not want to post devlogs, but I guess I’m back, even if I’m wasting 20 hours by not committing earlier. I was initially making and iterating on my keyboard keys/base just fine (see the 1st image with a ton of my test prints for the best key shape), but the reason why I lost motivation was because Onshape, my initial 3d modeling program, proved to be too laggy to work with with my trash wifi (waiting 20s for each change to propagate gets old real fast). I then went on a whole arc trying to learn the code-based CAD tool build123d (2nd pictures below is of me attempting to make a spring; I did a lot more than just that with the ~20hr I spent learning it), which I can ultimately say was sort of a mistake. learning code-based CAD was definitely valuable, but I just ended up hating Python even more after this. I went through a few iterations from my previous models from Onshape, but even when I did manage to remake my designs with it, it just felt horrible using the API, and I just quit this project out of frustration for a while. Now though, I am taking AP Music Theory in school, so I figured why not come back to it, since I still do want to make my own keyboard. I then found out that FreeCAD has made the UX actually bearable to use (it is infamously horrible to use compared to other solutions that I cannot afford, or that’s what I thought until I realized that 1.1 got released a couple months earlier and that I only had 1.0 installed when I tested it, so I didn’t have to go through the torture of learning build123d at all, but oh well). There’s only a couple weeks left of this as of I am writing this, so I’ll have to crunch this alongside my college applications that I’m doing, but hopefully it should be fine. Anyways, now that I’m back, I have cleaned up the Rust codebase just to familiarize myself with it again, and I have started working on making the keys again in FreeCAD (the black key holes are now accurate to a real keyboard, as they each are actually slightly offset from the white key edges if you look closely enough, and even such irregular offsets were made somewhat trivial by FreeCAD’s automation tools). FreeCAD can still sometimes be a pain to use (it took me 20 minutes just to arrange the keys!), but I am ultimately glad that I am back, and hopefully I finish everything in time.

0
0
21
Open comments for this post

22h 32m 32s logged

On the microcontroller side of things, I have started implementing a WiFi Access Point on an esp32. This is going to serve as the gateway to the configuration of the device, which I am trying to make it so that it is as simple as being a captive portal (a page that immediately pops up once you connect to the network). Making the esp32 do that required a ton of moving parts: the esp32 is serving as the access point, the DHCP server, the DNS server, and the HTTP server all at once. I was completely new to anything networking, so it took me a while to research what any of those were and how to implement them (albeit mainly by importing libraries but still). I did try to implement the DNS parsing by myself, but it turns out that every bitwise parsing abstraction I could find (packed_struct or deku) depended on a foundational package (bitvec) that could not compile on the esp32, and I wasted the whole day scouring the github issues of all the projects for solutions which all ended up not working. Espressif themselves literally even have a patch of the library of their own (https://github.com/EspressoSystems/bitvec-patch), but no matter what I did, nothing ended up working, and I was too exhausted to go implement the server manually by myself at that point. Anyways, I still need to tweak the DNS response for the captive portal to work, but everything else is working

0
0
3
Open comments for this post

9h 31m 41s logged

Finished modelling the initial base models. It took quite a while to align and correct everything, but the base plate finally fits a whole octave of keys correctly. There were a lot of things I had to consider, like how the keycaps are to be connected to a controller (I opted for the easy option of leaving it up to the user to manually solder) and how other octaves should be connected (I initially added dovetails for extending the keyboard, but I removed them for some reason that I honestly can’t remember; i should probably go back and add them back). Also, I forgot to add this to my previous devlog, but the reason why I opted for DS6 sizing is so that a whole octave is safely printable on my Bambu A1 mini (the base plate is ~160mm wide compared to the A1 having an 180mm build plate). Note that there are supposed to be mechanical keyboard switches separating the keys from the base, but I’ve accounted for them so that they should fit.

0
0
1
Open comments for this post

2h 43m 10s logged

I modeled mechanical switch keycaps in Onshape. I have no prior knowledge on pianos, so I had to research their size quite a bit, but I managed to piece together how I wanted it to have similar sizing as the DS6 standard. I am still unsure about how long and high the keys should be, but the dimensions right now look correct enough. I am still quite new to Onshape, so I had to remake the keys more than what I would like to admit, and so I am praying I don’t get flagged for inflating hours for only producing what is more or less a glorified rectangle

0
0
1

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…