Simple Arduino Audio Player and Amplifier with LM386 (2022)

Adding sounds or music to our project will always make it looks cool and sounds much more attractive. Especially if you are using an Arduino and you have lots of pins free, you can easily add sound effects to your project by just investing in an extra SD card module and a normal speaker. In this article I will show you how easy it is to Play music/add sound effects using your Arduino Board. Thanks to the Arduino community who have developed some libraries to build this in a fast and easy way. We have also used IC LM386 here for amplification and noise cancelation purpose.

In this project, we will play the .wav music files storesin an SD card. We will program the Arduino to read these .wav files and play the audio on a speak through an LM386 Audio amplifier. Now, since this code could only read .wav files, technically this project cannot be called as an Arduino Mp3 Player, but hey you will still be able to hear songs with it. If you are looking for simple alternatives like an Arduio music player without SD card, you should check out the Arduino melody player which we have built earlier.

Hardware Required:

  1. Arduino UNO
  2. SD Card Reader module
  3. SD card
  4. LM386 Audio Amplifier
  5. 10uf Capacitor (2 Nos)
  6. 100uf Capacitor (2 Nos)
  7. 1K,10K Resistor
  8. Push buttons (2 Nos)
  9. Breadboard
  10. Connecting Wires

Getting ready with your WAV audio files:

For playing sounds from SD Card using Arduino, we need audio files in .wav format because Arduino Board can play an audio file in a specific format that is wav format. To make an arduino mp3 player, there are a lot of mp3 shields are available which you can use with arduino.Orelse to play mp3 files in arduino, thereare websites which you can be used to convert any audio file on your computer into that specific WAV file.

So to convert any audio file into wav format, follow the below steps:

Step 1: Click on “Online Wav Converter” to enter into the website.

Step 2: Arduino can play a wav file in the following format. You can toy around with the settings later, but these settings were experiment to be the best in quality.

Bit Resolution

8 Bit

Sampling Rate

16000 Hz

Audio Channel

Mono

PCM format

PCM unsigned 8-bit

Step 3: In the website click on “choose file” and select the file you want to convert. Then feed in the above settings. Once done it should look something like this in the below image

Simple Arduino Audio Player and Amplifier with LM386 (1)

Step 4: Now, click on “Convert File” and your Audio file will be converter to .Wav file format. It will also be downloaded once the conversion is done.

(Video) How to make Arduino Audio Player DIY | LM386

Step 5: Finally format your SD card and save your .wav audio file into it. Make sure you format it before you add this file. Also remember the name of your audio file. Similarly you can select any of your four audios and save them with names 1, 2, 3 and 4(Names should not be changed). I have converted four songs and have saved them as 1.wav, 2.wav, 3.wav and 4.wav like shown below.

Simple Arduino Audio Player and Amplifier with LM386 (2)

Circuit and Hardware:

Circuit Diagram for this Arduino Audio File Player is simple. The complete circuit diagram is shown in the Image below.

As we know our audio files are saved into the SD card, hence we interface a SD card reader module with our Arduino. The Arduino and SD card communicate using the SPI communication protocol. Hence the Module is interfaced with the SPI pins of the Arduino as shown above in the diagram. It is further listed in the table below.

Arduino

SD card module

+5V

Vcc

Gnd

Gnd

Pin 12

MISO (Master In Slave out)

Pin 11

MOSI (Master Out Slave In)

Pin 13

SCK (Synchronous Clock)

(Video) 🔊 How to make an LM386 audio amplifier circuit

Pin 4

CS (Chip Select)

Now the Arduino will be able to read the music file from the SD card and play it on the pin number 9. But the audio signals produced by the Arduino on pin 9 will not be audible much. Hence we amplify it by using the LM386 Low voltage Audio amplifier IC.

The amplifier shown above is designed for a Gain of 200 and the Vdd (pin 6) is powered by the 5V pin of the Arduino. If you want to increase/decrease the sound you can increase/decrease the voltage provided to this pin. It can withstand a maximum of 15V. Learn more about this 200 gain amplification configuration for LM386 here.

We also have two push buttons connected to the pin 2 and 3 of the Arduino. These switches are used to play the next track of the song and play/pause the music respectively. I have used these buttons just to demonstrate its abilities; you can play the song whenever required. Check the Demo Video at the end.

You can assemble this circuit completely over a Breadboard as shown in the picture below

Programming your Arduino:

Once we are ready with the Hardware and the SD card, we are just one step away playing those songs. Insert the card into your SD card module and follow the steps below.

Step 1: As said earlier we will be using a library to make this project work. The link for the library is given below. Click on it and select “Clone or download” and choose download as ZIP.

Step 2: Add this Zip file into your Arduino IDE by selecting Sketch->Include Library -> Add .ZIP Library as shown below and select the ZIP file that we just downloaded.

Simple Arduino Audio Player and Amplifier with LM386 (5)

Step 3: The complete program of the arduinomusic player project is given at the end of this article, simply copy it and paste it in the Arduino Program. Now, click on Upload and get ready to play your audio files.

The program is self explanatory since they have the comment lines. But, I have also explained the ability of the TMRpcm library below.

Playing an audio file:

You can play any audio that is stored in Wav format inside the SD card module by using the line below.

music.play("3.wav");//object name.play (“FileName.wav”);

You can use this line at places where you want to trigger the Audio

Pause an audio File:

(Video) LM386 Mono Audio Amplifier Module Plays Super Mario theme

To pause an Audio file, you can simply call the line below.

music.pause();//objectname.pause();

Forwarding/Rewinding an Audio:

There are not direct ways to forward or rewind an Audio file, but you can use the line below to play a song at a particular time. This can be used to forward/rewind with some additional programming.

music.play("2.wav",33); //Plays the song from 33rd second//objectname.play(“Filename.wav”,time in second);

Setting the quality of the audio:

The library gives us two qualities to play the music, one is to play as normal mode the other to play with 2X oversampling.

music.quality(0); //Normal Modemusic.quality(1); //2X over sampling mode

Setting the Volume of the audio:

Yes, you can control the volume of the audio through software. You can simply set the volume by using the line below. Higher music volumes tend to affect the quality of the audio, hence use hardware control when possible.

music.setVolume(5); //Plays the song at volume 5//objectname.setVolume(Volume level);

Working of this Arduino Music Player:

After programming your Arduino simply press the button connected to pin 2 and your Arduino will play the first song (saved as 1.wav) for you. Now you can press the button again to change your track to the next song that is to play 2.wav. Likewise you can navigate to all four songs.

You can also play/Pause the song by pressing the button connected to pin 3. Press it once to pause the song and press it again to play it from where it stopped. Watch the video below for complete working (or maybe to relax yourself with some songs).

Simple Arduino Audio Player and Amplifier with LM386 (6)

Hope you enjoyed the project. Now it is up to your creativity to use them in your projects. You can make a speaking clock, voice assistant, talking robot, voice alert security system and much more. Let me know how you are planning to use it through the comment section and also if you have any problems in getting this thing work you can reach me through the forums or the comment section below.

Code

/*
Arduino Based Music Player

This example shows how to play three songs from SD card by pressing a push button

The circuit:
* Push Button on pin 2 and 3
* Audio Out - pin 9
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

(Video) Simple Arduino Audio Player

created 25 Jun 2017
by Aswinth Raj

This example code was created for CircuitDigest.com

*/

#include "SD.h" //Lib to read SD card
#include "TMRpcm.h" //Lib to play auido
#include "SPI.h" //SPI lib for SD card

#define SD_ChipSelectPin 4 //Chip select is pin number 4
TMRpcm music; //Lib object is named "music"

int song_number=0;
boolean debounce1=true;
boolean debounce2=true;
boolean play_pause;

void setup(){
music.speakerPin = 9; //Auido out on pin 9
Serial.begin(9600); //Serial Com for debugging
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}

pinMode(2, INPUT_PULLUP); //Button 1 with internal pull up to chage track
pinMode(3, INPUT_PULLUP); //Button 2 with internal pull up to play/pause
pinMode(3, INPUT_PULLUP); //Button 2 with internal pull up to fast forward

music.setVolume(5); // 0 to 7. Set volume level
music.quality(1); // Set 1 for 2x oversampling Set 0 for normal
//music.volume(0); // 1(up) or 0(down) to control volume
//music.play("filename",30); plays a file starting at 30 seconds into the track
}

void loop()
{

if (digitalRead(2)==LOW && debounce1 == true) //Button 1 Pressed
{
song_number++;
if (song_number==5)
{song_number=1;}
debounce1=false;
Serial.println("KEY PRESSED");
Serial.print("song_number=");
Serial.println(song_number);

if (song_number ==1)
{music.play("1.wav",10);} //Play song 1 from 10th second

if (song_number ==2)
{music.play("2.wav",33);} //Play song 2 from 33rd second

if (song_number ==3)
{music.play("3.wav");} //Play song 3 from start

if (song_number ==4)
{music.play("4.wav",25);} //Play song 4 from 25th second

if (digitalRead(3)==LOW && debounce2 == true) //Button 2 Pressed
{
music.pause(); Serial.println("PLAY / PAUSE");
debounce2=false;
}

if (digitalRead(2)==HIGH) //Avoid debounce
debounce1=true;

if (digitalRead(3)==HIGH)//Avoid debounce
debounce2=true;
}

}

(Video) Audio/Music Player with Amplifier using Arduino

FAQs

Simple Arduino Audio Player and Amplifier with LM386? ›

Hence we amplify it by using the LM386 Low voltage Audio amplifier IC. The amplifier shown above is designed for a Gain of 200 and the Vdd (pin 6) is powered by the 5V pin of the Arduino.
...
Circuit and Hardware:
ArduinoSD card module
+5VVcc
GndGnd
Pin 12MISO (Master In Slave out)
Pin 11MOSI (Master Out Slave In)
2 more rows
Jun 26, 2017

How connect LM386 to Arduino? ›

Arduino VU Meter With LM386 Amplifier - YouTube

Can we use Arduino as amplifier? ›

You can supply the LM386 connecting the Vs pin with different voltages sources, like for example the +5 V present on the 5V pin of the Arduino Zero / MKRZero or an external 9V battery. The gain of the amplifier is given by the capacitor connected to pin 1 and 8 of the LM386.

How do I play music from my Arduino SD card? ›

Steps to follow:
  1. Follow the below-mentioned circuit diagram to build the circuit. ...
  2. Select any audio and convert it into 8 bit, monotype Wav file. ...
  3. Open Arduino software.
  4. Include the header file in the coding. ...
  5. Initialize the coding by including all the header files required, like SPI.h, SD.h, TMRpcm.h, etc.:
Apr 15, 2020

Can Arduino play audio files? ›

For playing sounds from SD Card using Arduino, we need audio files in . wav format because Arduino Board can play an audio file in a specific format that is wav format. To make an arduino mp3 player, there are a lot of mp3 shields are available which you can use with arduino.

How do I amplify my Arduino speakers? ›

How to amplify your ARDUINO tone's the easy way - YouTube

What is audio amplifier circuit? ›

The circuit of the audio amplifier consists of a transistor a device to apply the input signals and a speaker at the output. The transistors are connected based on the necessity. The important factors that need to be considered while designing a audio amplifier is gain,noise, frequency response and distortion.

What is DAC Arduino? ›

A DAC is a circuit that allows you to translate numeric values into analog signals, so you can have output voltages variable from 0 to 5V by setting only a variable. If you want to do this with an Arduino different from the Due you can't without using an external chip.

Can we connect speaker to Arduino? ›

It is very easy so that every beginner can do this. Connect Speaker gnd(Ground) [Black Wire] to Arduino Uno's gnd pin. Connect Speaker 5v (Signal )[Red Wire] to Arduino Uno's 3 pin. This is a simple connection.

How do I run speakers on Arduino? ›

Play Sounds With Arduino || Passive vs. Active Speakers - YouTube

Does Arduino have a speaker? ›

How Does the Arduino Speaker Work? The Arduino in this circuit creates tones of different frequencies and plays it through the speaker connected to it. The variation of the frequency of the tone (a.k.a. pitch) with correct timings (a.k.a. rhythm) creates music.

Can Arduino play wav? ›

This article shows how to easily play wave audio files (files with . WAV extension) using Arduino UNO board. The Arduino loads wave audio files from FAT16 or FAT32 formatted SD card and a simple PC speaker is used to amplify the audio signal generated by the Arduino microcontroller.

What is a DF player? ›

The DFPlayer Mini is a small and low cost MP3 module player with a simplified output directly to the speaker. The module can be used as a stand-alone module with attached battery, speaker and push buttons or used in combination with an Arduino UNO or any other with RX/TX capabilities.

What is SD card module? ›

SD Card Module is a breakout board used for SD card processes such as reading and writing with a microcontroller. The board is compatible with microcontroller systems like Arduino. A standard SD card can be directly inserted into the board, but to use microSD cards, you need to use an adapter.

What is Arduino Nano? ›

The Arduino Nano is Arduino's classic breadboard friendly designed board with the smallest dimensions. The Arduino Nano comes with pin headers that allow for an easy attachment onto a breadboard and features a Mini-B USB connector. The classic Nano is the oldest member of the Arduino Nano family boards.

Videos

1. Arduino digital audio player + LM 386 audio amplifier
(corvin elettronica)
2. How to Play audio with Arduino
(Electronics BD)
3. LM386 Audio Amplifier Simple Setup
(learnelectronics)
4. Arduino PCM audio using lm386 amplifier
(David ONeill)
5. LM386 Audio Amplifier Module/ Explanation & Testing / DIY
(Tech with Murali Krishna)
6. Build a Simple Audio Amplifier!
(Fungineers)

Top Articles

You might also like

Latest Posts

Article information

Author: Duane Harber

Last Updated: 07/11/2022

Views: 6092

Rating: 4 / 5 (71 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.