This week, the printed circuit boards arrived in the mail. Upon inspection, I noticed the first problem: the holes for the 12 x 12 mm tactile switches were not big enough for the leads to fit into. Bending the leads of the buttons inwards allowed them to be surface mounted on the board.
While this worked brilliantly, the buttons would not have been flush with the board as they contain a little peg on the bottom. I ordered surface mount switches to compensate for this problem.
In addition, the resistor networks that I purchased were way too small for the board. The footprint in KiCAD was labeled as a 1206 x 4 part. Therefore, when I purchased the part on Mouser, I chose a 1206 sized part; this part was 1206 in LENGTH where as the footprint is 1206 in HEIGHT. This required me to place an order for new parts that would fit the board properly.
After soldering the parts onto the board, and testing with a multi-meter, I discovered that the unit powered on, but would not send MIDI when the buttons were pressed. Some more poking around with the multi-meter resulted in finding a short to +3V on the I2C bus SDA line. I then inspected the board, the schematic, and the PCB layout for anything that would bridge the two together. The Feather board worked, the other PCBs didn’t bridge the connection. I concluded that the MCP23017 chips were toast.
Upon removing the chips (and damaging them in the process), the SDA line was still being bridged to +3V. I decided to solder up one of the other boards with new components. Fortunately, the surface-mount buttons arrived earlier which allowed for the buttons to sit flush on the board and easily soldered on the through-hole pads.
After soldering to the second board, I decided to update the code so that the key presses would be more responsive. I did this by removing the debouncer library and adding a delay. During the testing of the code, the keyboard responded decently — for a minute.
While testing the second board, suddenly all of the notes were activated at once then the keyboard was no longer responsive. I tried to reset the microcontroller, upload the firmware again, reset the bluetooth module, and restart the phone without any result. The unit was dead!
I checked if the SDA line was shorting to +3V and it wasn’t. Hooking up the scope to the MCP23017 chips resulted in no activity as well — not even a clock signal.