The Project

A solid-state USB-based guitar controller for kids to build at summer camp. The controller worked with Frets on Fire, and used an infrared break-beam sensor to detect the strum action, and capacitive touch sensing for the fret buttons.

Design Constraints

  • Cost – This was the major project for a higher-level camp, so more budget than usual was available, however a lid still needed to be kept on costs.
  • Ease of construction – Even though this was a major project, it still had to be easy to build, as the kids building it were not likely to be skilled in soldering. Also, time would be required to assemble the final product into a guitar-like final product.
  • Compatibility – Had to be compatible with a wide variety of computers, ideally without drivers. USB HID fit the bill nicely.
  • Fun – The final product had to be worth the effort for the kids.

My Role

  • Parts Selection. Ideally the PIC18F14K50 was going to be used, however it wasn’t ready in quantity in time, so the more available but more expensive PIC18F2550 was used instead. Other parts, like the PNA4602 IR receiver, were used due to their robustness and low cost.
  • Circuit Board Layout. The fret board had to be designed to work nicely with capacitive touch sensing, and both boards had to be both easy to assemble, as well as no larger than necessary to allow enough flexibility to make a guitar in the end.
  • Programming. Two separate boards with two separate microcontrollers – one doing USB and debouncing for menu buttons, and another handling capacitive sensing for the fret buttons. The boards communicated over I2C.
  • Documentation. The setup had to be documented well enough for counsellors to lead kids in building them successfully.

Lessons Learned

  • USB devices – This was my first time working with USB on my own code, and my first time using Microchip’s USB stack. I had to learn about HID descriptors, and study working examples, to get this going. The final code shared a lot in common with the Microchip sample, of course, but then it had to be working on a fairly tight time constraint.
  • Capacitive touch sensing – Compared to prior experience with capacitive touch sensing on devices that did not have built-in peripherals for doing so, using Microchip’s mTouch with their software library was a refreshing and rewarding experience. It worked reliably, and felt like so much less of a hack.