Week 8: Input Devices


I started this week assignment by wanting to continue what I had made during Week 5. During that week, I tried to mill a synthesizer PCB that would contain a Pico and 12 capacitive sensing keys, but the milling was estimated to take 5 hours, so I gave up. Instead, I started prototyping the actual software using a breadboard. I decided to use CircuitPython this time, since I wanted to try a new workflow, and also because I discovered that many libraries (like touchio for capacitive sensing) were incredibly easy to use with CircuitPython. Taking inspiration from the picotouch project, I wrote code to make three capacitive sensing buttons that I debounced, and that triggered MIDI signals on the serial port.

To continue the work this week, I decided to scale down my ambition and use a RP2040 with only 7 keys, in order to properly try out capacitive sensing. I therefore redesigned my board using a Xiao RP2040 on Kicad, and added a few 1 MOhm resistors to connect the pads to the ground.

I had been told by TAs that a reason why my initial board took so long to mill was because of the lack of a ground pour. Adding a ground pour actually made connecting the resistors much easier. An problem that arose, though, is that the ground pour did not leave clearance around the keypads. To do so, I had to use a specific 1-pin header on the schematic, which I mapped to a new footprint.

Milling was much faster.

Notes to a future me (learning outcomes):

  • Ground pours are great and save you a lot of time.