Keyboard
Hardware- 3 Devlogs
- 23 Total hours
A 3D printed piano keyboard powered by an ESP-32
A 3D printed piano keyboard powered by an ESP-32
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
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.
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