I found this novelty gift in the free-cycling bins at work - Touch sensitive finger drums in the shape of Caribbean steel pans. It should play steel pan sounds through the integrated speaker whenever you touch the metal pads. It unfortunately no longer works.
Opening it up reveals a single circuit board with two blobs. As the LED doesn't even light, I assume that whatever broke was under one of those blobs. Needless to say, I wasn't able to fix it. This gave me the idea to replace those faulty blob chips with a microcontroller such as the ESP32 which has 10 capacitive touch pins.
The space restrictions meant using a D1 mini board but 2 of the capacitive touch pins had been tied down to ground. That still left 8 for soldering to the finger drum pads. I also wanted the ESP32 to read the buttons and control the LED. I could have used any of the GPIO pins on the ESP32 D1 mini for this, but I wanted to reserve the serial (TX/RX) interface, I2C, and SPI for possible future use, so opted to use the input-only GPIO (34, 35, 36, and 39), which lacked the necessary pull-down resistors. So I soldered 10K pull down resistors on 4 of the buttons.
Even though it was a tight fit for the ESP32 D1 mini board, it was still possible to shift it out of position when inserting the USB cable. I cut a wooden ice-lolly stick to an appropriate size to act as a brace, and drilled a hole in the case to accommodate the USB cable.
I'm using the excellent ESP32 BLE Mouse library on Github in my Arduino program which sends the HID mouse events over Bluetooth connection. The proof-of-concept test code uses the same theshold for all 8 capacitive touch pins. Implementing a calibration phase will probably improve the responsiveness.
Although this project was largely experimental, and the resulting wireless mouse device is often more frustrating to use than a regular mouse, there are some use cases where this device could well suited:
- Precise pixel-exact mouse movements - useful for clicking on those vanishingly small close-window icons on adverts
- Etch-a-sketch interface with no moving parts - you even get pen-up and pen-down for free!
- Mandatory Manhattan mouse movement - great for selecting along rows or columns of text