Here is a prototype of one of my circuit boards for the planned BOOMstick Audio board family. This series was introduced in my previous post. It is intended for use with Lutz Lisseck's SimpleSDAudio Arduino library and my port of that library to ChipKit, BasicSDAudio. Really, it should work for any PWM-based audio system, including the Tone library.
Top side of the BabyBOOMER Audio board prototype
Here are the goals I was trying to meet with this board:
small (only 0.56 sqin)
breadboard friendly (basic 0.1" headers)
at least 1W speaker output using 8ohm speaker (efficient class D amplifier)
easily accessible volume control (right out on top)
lower PWM noise including buffers, filters, and a pseudo 16-bit mode
Bottom side of the BabyBOOMER Audio board prototype
I did a preliminary test just running the ToneMelody Arduino example sketch with a 4ohm speaker. It was *very* loud for such a small board. I had to run off a battery since my wimpy USB cable cannot reliably supply 5V with the estimated 2W output using a 4ohm load.
The SnakeEyes V0.02 board has most everything I want but still needs some tweaking. I did not like the 0402 components, so I am going back to 0603. Additionally, I think people are interested in having exactly what they need and not much else in order to save costs. With that in mind, my next iteration of the audio board will actually be a small collection of breadboard-friendly modules:
BOOMStick:
Closest derivative to the V0.02 but only mono output. This will have a buffered SD Card, buffered PWM, improved 1W class D audio amplifier, headphone jack, and volume control.
BabyBOOMER:
Pared down version that scraps the headphone jack and SD card support. This can be paired with the BOOMStick for stereo output. Or, two BabyBOOMERS can be used with a SD-enabled microcontroller, such as the Fubarino SD, for an even more streamlined stereo output with 1W output per channel when using 8ohm speakers.
BabyBOOMER prototype
Speaker:
These will be small breadboard friendly speakers with current limiting resistors
A few months ago, I started work on an audio board for Arduino and Chipkit microcontrollers. I wanted something that could play good quality sound effects and music with a small form factor.
SnakeEyes V0.01
My first attempt was a mash up of an Arduino Pro Mini and the same functional structure of the Adafruit Wave Shield. I wanted something that could play all by itself when given a few commands. The host processor would then be free from the low-level audio generation. Small speakers were to be soldered directly to the board in the space above the SD card. This was not a good design from a manufacturing standpoint and frankly, I am not a huge fan of Atmel microcontrollers. I abandoned the project for a while since I was discontent with the results with this board.
SnakeEyes V0.01 Audio Board (front and back)
SnakeEyes V0.02
As noted in some of my previous posts, I found Lutz Lisseck's SimpleSDAudio library for Arduino that used high speed PWM to generate audio from a streamlined SD library. I have a working port of the library to the Microchip-based PIC32 Chipkit processors. The library is very simple and requires very little hardware to get basic functionality. To get higher quality sound, however, more circuitry is necessary.
V0.02 of the SnakeEyes Audio board was born. This used a completely different form factor and used SimpleSDAudio type hardware rather than Wave Shield inspired hardware. It sports Stereo 16-bit 78.125kHz buffered PWM audio generation when using a Chipkit board. The host processor handles all audio generation. It has a headphone jack and thumb wheel volume control as well as two small speakers. There is also the option to use external speakers.
SnakeEyes V0.02 Audio Board
Check for the next post about future audio boards.
I have been working on a few Arduino and Chipkit projects that could use some decent audio generation. Many people have used Adafruit's Wave Shield in the past, but I dislike the idea of having to bit-bang the second SPI port, it requires additional hardware, and there was no simple way to port the library over to ChipKit.
SimpleSDAudio minimal setup
Enter Lutz Lisseck's SimpleSDAudio library for Arduino. It uses a stripped down SD card library and hardware PWM to output 8 or 16 bit audio in mono or stereo. I tried it out on my Arduino Pro Mini and was pleased with the results. Since it is interrupt driven, you are free to do other things in your sketch during audio playback, so long as you call the "worker" routine--which updates the audio buffer--often enough.
The library code is pretty straightforward so it was easy to go in an change ATMEGA specific code for the Arduino to PIC32 specific code for the ChipKit. I have an preliminary version working, so check it out:
The audio in the video is 8 bit stereo, sampled at 78.125kHz. Without using any more pins, the ChipKit will be capable of 10bit output at this sample rate, and 11bit output at 39.062kHz. The Arduino is only capable of 8 bit stereo when using only two PWM pins.