Go Down

Topic: Rugged Audio Shield for Arduino (Read 24303 times) previous topic - next topic


Rugged Circuits is pleased to announce the new Rugged Audio Shield for Arduino

Features include:

  • 3.5mm stereo jacks for Line In, Mic In, Headphone Out

  • socket for microSD cards

  • shield has BUILT-IN FAT filesystem drivers! No drivers needed in your Arduino code!

  • supports WAV file playback from microSD card, WAV file recording to microSD card, real-time streaming from Arduino, pass through from Line In/Mic In to Headphone Out, or "Karaoke Mode": mix Line In+Mic In to Headphone Out

  • Open source Arduino Library with example sketches

  • Built-in Mic In microphone amplifier with 25X gain and software selectable additional 1X, 2X, 4X, or 8X gain

  • Software selectable 1X, 2X, 4X, or 8X gain on Line In

  • Software controlled volume control on Headphone Out

  • Undedicated analog potentiometer on pin A3

  • Uses only SPI pins and D8 for slave select -- cuttable-jumpers make it easy to rewire to other pins

  • Compatible with Arduino Uno/Duemilanove, Ruggeduino, Mega/Mega2560 and all compatible boards, including 5V/3.3V boards

  • 12-bit audio input/output resolution, with dedicated Atmel ATxmega32A4 processor to handle all audio and microSD card functions

  • ATxmega32A4 is reprogrammable: just put a PROGRAM.BIN file on the microSD card, reset the shield, and the shield reprograms itself using a built-in bootloader

  • Fully assembled -- not a kit!

Check out the product page for more information, or purchase from our on-line store.


Rugged indeed ;)

12-bit audio input/output resolution,

Can I use that as a 12 bit ADC? e.g. and do some FFT or a more accurate read of some thermistor / sensor ...

Idem output as DAC?

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


Not really, it was designed for audio inputs so there are DC blocking capacitors that filter out DC offsets.

Same for the DAC: DC blocking capacitors prevent steady state values from persisting.

The Rugged Circuits Yellowjacket: 802.11 WiFi module with ATmega328P microcontroller, only 1.6" x 1.2", bootloader



If there was a way to do a little text-to-speech, even just for numbers and etc. this could be very attractive for home automation, automated machinery etc.. Weather station?

Regards, Terry King terry@yourduino.com  - Check great prices, devices and Arduino-related boards at http://YourDuino.com
HOW-TO: http://ArduinoInfo.Info


For a limited vocabulary it's certainly easy enough to store pre-recorded words on the microSD card and just play them back in sequence as necessary:

Code: [Select]
RAS.PlayWAV("EIGHT.WAV"); RAS.WaitForIdle();
RAS.PlayWAV("SIX.WAV"); RAS.WaitForIdle();
RAS.PlayWAV("SEVEN.WAV"); RAS.WaitForIdle();
// etc.

The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons


and of course just generate the filename from the digit in question e.g.   sprintf(fname,"%d.wav", number);
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


I've been able to sample a Mic on an analog pin at 20khz.  Would your results be much different?
My problem is where to store the data.  The SD card and XBee are plenty fast serially, but...
SD card loses data when it has to allocate a cluster.
XBee causes hum on Mic while it is transmitting.

How does your board overcome the SD lost data?
A much larger than 2k buffer?


I've been able to sample a Mic on an analog pin at 20khz.  Would your results be much different?

You had some kind of amplification on the mic, right? The A/D on the analog pins is a 10-bit A/D, and the Rugged Audio Shield has 12-bit A/D's so you get (theoretically) 12dB improvement in SNR. Plus you can sample at higher frequencies on our shield.

How does your board overcome the SD lost data?

Several things help:

  • Don't record too fast for your SD card (and different cards from different manufacturers vary in write speeds) -- use an appropriate sampling rate

  • Record mono instead of stereo if that's acceptable

  • Format the card using the EraseFilesystem method which properly aligns sectors

  • Pre-size the recording file using the PresizeFile method which pre-allocates all the clusters if you know about how much time you'll be recording

The Flexible MIDI Shield: MIDI IN/OUT, stacking headers, your choice of I/O pins


Thank you for your accurate answers.  Pre sizing is a great solution for me.  I average every 2 samples giving me 10k sample rate.  I assume my processor would be completely free to run in loop while it's recording with your hardware?


Correct, the Arduino is completely free to do whatever it wants while recording is in process since it all happens on the shield. To stop recording you just call the Stop method.

The Basic Motor Driver: simple, inexpensive motor driver for 1 stepper motor or 2 DC motors


Sep 27, 2012, 04:47 pm Last Edit: Sep 28, 2012, 02:54 pm by goldenfool Reason: 1
wow just found this,   looks very nice

Is it possible to edit, manage, save, read the files on the SD Card with a Linux computer?

How fast is the shield? How long does it take in-between the command   RAS.PlayWAV("SOMEFILE.WAV");   until it's starting to play?  is there a lag appreciable? Is there a gap in-between two sounds played?
Is there a possibility for a auto-rec function? To start the recording when a specified threshold is reached? Would the shield be fast enough for this?  

To avoid clicks, is it possible and necessary to fade-in and fade-out sounds? I was reading about the   void OutputVolumeSet(uint8_t volume);  function.
Would this be possible to do very fast?
Is the your shield always faster than the Arduino because it runs with 32 MHz?

Can you play only one or several files at the same time? I imagine only one, but what if they are very short and small?  
And is it possible to run 2 or 3 Audio Shields with only one Arduino (Mega)?
Yes it should be possible as I can call different shields via SPI Slave Select. How long does it take to  do      void begin(uint8_t SSpin = 8);    ? Can you switch fast in between multiple shields???

How does the Rugged Audio Shield sound? 12-bit? 16-bit? Something in-between?  Hi-fi lo-fi?
Thank you!


Hello Guys, I am trying to use this board as a room sound recording activated by the change in the sound level. I have read the instruction but I haven't found something to allow to control the information entered through the mic input.

i appreciate your help...



I'm also looking at being able to monitor the input for a certain threshold. The library doesn't include support for this I don't think so I'm looking into the firmware of the shield and writing my own code for the arduino.


I brought this shield last month ago and  found that, the maximum file name that can be input is 12345678.WAV (8.3format).. How to modify the program to allow user enter large file name 1234567890.WAV (10.3 format).. I try to change RAS.ccp library but it gives nothing..

void RAS::_send_filename(uint8_t cmd, const char *str)
  uint8_t buf[13]; ---------------->15

  memset(buf, 0, sizeof(buf));
  strncpy((char *)buf, str, 12);------------------>14
  _spi_send_buf(buf, sizeof(buf));

any idea?


What are you sending the longer names to? Just sending a longer name to the function is not sufficient. If the code that you are sending the name to expects a 8.3 format name, you will not be able to change that easily.
The art of getting good answers lies in asking good questions.

Go Up