This is, essentially, two mono audio breakout boards on one FeatherWing. The board takes audio from a microphone input and sends it the the I2C bus, then back from the I2C bus and out to a speaker. This allows the user to process the audio in various ways, depending on the needs of the application.
Thus, any of these functions (and sometimes more than one at the same time) can potentially be either turned into or integrated into a Feather project:
- Voice changer (primarily for cosplay, Halloween costumes, and similar projects; fit the device inside a helmet, or in your pocket!)
- Voice amplifier for teachers and other small-room speakers, actors in live theater (for smaller houses), or those with certain medical conditions (such as some forms of muscular dystrophy) that result in an unusually quiet voice
- Electronic megaphone
- Two-way communicator (over wires, or whatever wireless protocol you deem best -- LoRa, XBee, Bluetooth, etc.)
- Effects processor for musical instruments (generally, but not necessarily, acoustic instruments on mikes)
- Smart speaker (or interface with an existing smart speaker system)
- Hearing aid (probably with some extra features that can't be found in commercial hearing aids, since those can fit inside your ear)
- Boom mike operator's sound unit (in a film/TV setting)
- Parabolic microphone
- Electronic tuner/pitch pipe
- Record/playback device
- Myriad things I haven't thought of yet! (If you have an idea, please put it in the Comments below!)
While many of these applications involve only amplification (making the processor hardly even necessary), others involve changing the sound in some way, and/or sending it to and receiving it from another device.
Obligatory Tech Info:
The microphone input is an MAX4468 from Maxim, while the speaker output comes from an ON Semiconductor NCS2211D. Both are 8-pin SOIC chips -- a nice, compact size. In each case the application, other than connecting directly to two of the Feather's Analog pins, follows the suggested application on the respective chip's data sheet (page 9 in both cases).
The MAX4468 has a Shutdown pin which may be connected to D12. It normally is set to Low; set it to High, and the chip enters a power-saving Shutdown mode (supply current drops to 5nA, output enters a high impedance state, and bias current is switched off). In case you don't want to use it, a jumper is available to connect it to Ground full-time; it should not be left unconnected. (A jumper header is my preferred way of running an on-board selection for something that might change after installation, but not often.)
The input and output are connected to the I2C bus with an NXP Semiconductors PCF8591T/2,518 A/D and D/A Converter (a 16-pin SOIC). The default I2C address (with all three address pins connected to GND) is 1001000; the last three digits can be changed with solder jumpers. This means that one Feather can have a maximum of eight of these on board! (It's unlikely that you'll ever need more than one, but the possibility is there if I'm wrong. Besides that, there's room in any event for up to eight boards using the same or a similar I2C chip.)
Besides the Analog Reference for the PCF8591T, the only connections on the board not already mentioned are for the 3.3V and Ground.
The MAX4468 is explicitly designed for an electret microphone; I don't know for sure whether it would work with a piezoelectric mike, but I think it should. (I hope it does; one of my own designs calls for it!)
The actual connections for the mike and speaker are simple right-angle wire-to-board terminals. This is probably the cleanest solution, since the overall device will probably be kept in an enclosure that includes either mounts or jacks for these parts. You may, of course, replace them with whatever type of connector that you find appropriate (though you may need to edit the .fzz file, depending on what you choose).
Other than the mike and speaker connections, the board should be a simple "plug-and-play" affair, at least in terms of hardware.
Bill of Materials at Octopart (excludes headers, other than the jumper header)
I'm open to just about any input on these questions. I've divided them into those calling for a bit of expertise that I don't have, and those calling for opinions from a prospective user's perspective. On any of these, if nobody says anything, I'll just assume I got it right, at least until any breadboarding or other real-world attempt on my part shows otherwise.
- I'm pretty sure -- but not 100% -- that I'm reading this right: the 600kHz Gain Bandwidth Product on the MAX4468 is better than the 200kHz on the MAX4467. If anyone knows differently, or knows of any other reason that the MAX4467 would be a better choice for this device, please say so. (Anyone who knows that I got it right and feels inclined to put my anxiety-prone mind at ease is also encouraged to speak up!)
- Adafruit uses the MAX4466 on their microphone breakout, leaving off the need for a Shutdown pin. Should I do the same here? I kind of like having the function available, but I'm not sure what to do about the Bias pin.
- There's also the question (alluded to above) of whether any modification would be needed for this design to work with a piezoelectric microphone -- for example, a switchable resistor.
- It's also occurred to me that the resistor and capacitor values, taken from the manufacturers' "typical" applications, may not be the most appropriate for a FeatherWing. Or they could be. I'd appreciate anyone sharing their knowledge on the matter.
- If anyone knows of a single chip that could handle both input and output for this, please let me know. I've been looking around and found one or two potential candidates, but had to rule them out based on compatibility issues (voltage requirements, stereo vs. mono, etc.). Since I've already found an I2C two-way converter, this is for the mike + speaker.
- Is there anything that would be handy to add with the available open space? There's not a lot of it, but there might be room for something. Any suggestions, requests, or other expressions of ideas (within reason) would be welcome. I can't think of anything, myself.
As it appears right now, a fair bit of this design is based on educated guesswork; there's been no breadboarding or any other real-world testing of any kind. (If someone's willing to go to that work, I'll gladly add them as a contributor!)