Mp3 Player Using DFPlayer - Full Design Details
In this post we are going to construct an Mp3 player using arduino and DFPlayer. The
proposed article has two Mp3 player designs, one with push button control and another
one with IR remote control. We will also take a look at DFPlayer (Mp3 player module)
and its specifications.
By Girish Radhakrishnan
We all love music, we would like to hear it while at gym, reading, moments before
sleeping or while soothing our self after a hard day work.
Constructing a music player at home few decades back was a near impossible for an
electronics enthusiast because of constructional complexity due to mechanical
components.
In those days only limited number of songs could be accommodated in a cassette.
Replicating a song to another cassette was a nightmare too. But now, thanks to
advancement in electronics an Mp3 player can be made from scratch with your pocket
money.
Now let’s move on to technical details of the project.
The heart of the project is DFPlayer which is a small Mp3 player module which can
accommodate micro SD card and can be controlled using a microcontroller.
Illustration of DFPlayer:
It has in-build amplifier which can drive 3 watt loudspeakers in stereo or mono. It has
24-bit digital to analog converter (DAC) which is pretty good for such low cost and
compact module.
Bottom view of the DFPlayer:
It supports MP3 and WMV hardware decoding. It supports sampling rate of
8KHz,11.025KHz, 12KHz,1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.
It can support up to 32GB micro SD card. It supports up to 100 folders, each folder can
be assigned up to 1000 songs.
It has 6 different levels of equalizer; and 30 levels of volume adjust control. It can
operate from 3.2V to 5V.
Pin configuration of DFPlayer:
The above specifications are based on DFPlayer’s data sheet.
By now you would have familiar with DFPlayer and its specification. You can purchase
this module from e-commerce sites or from local electronics market.
Now let’s jump into the schematic diagram.
Push-button Mp3 player design:
The above circuit is very simple; the arduino sends commands to the DFPlayer module
to control the songs. The user can input their choice via push buttons.
The arduino’s built-in pull-up resistor has been activated in the program, so that we no
need to attach a physical resistor to push buttons.
Try to use good quality speakers; the DFPlayer can deliver very good quality sound.
If you find any distortion in the sound at higher volume levels, power the DFPlayer
module externally at 5V DC with common ground connection between arduino and
DFPlayer.
If you want stereo sound setup, connect the one of the speaker to SPK1 of DFPlayer and
another speaker to SPK2 and ground the remaining speaker wires.
Program for push button control:
//---------Developed by R.Girish------//
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
const int btnNext = A0;
const int btnPause = A1;
const int btnPrevious = A2;
const int volumeUP = A3;
const int volumeDOWN = A4;
int volume = 15;
boolean Playing = false;
void setup ()
{
pinMode(btnPause, INPUT);
pinMode(btnNext, INPUT);
pinMode(btnPrevious, INPUT);
pinMode(volumeUP, INPUT);
pinMode(volumeDOWN, INPUT);
digitalWrite(btnPause, HIGH);
digitalWrite(btnNext, HIGH);
digitalWrite(btnPrevious, HIGH);
digitalWrite(volumeUP, HIGH);
digitalWrite(volumeDOWN, HIGH);
mySerial.begin(9600);
delay(1000);
playFirst();
Playing = true;
void loop ()
{
if (digitalRead(btnPause) == LOW)
if(Playing)
pause();
Playing = false;
}
else
{
Playing = true;
play();
if (digitalRead(btnNext) == LOW)
if(Playing)
next();
if (digitalRead(btnPrevious) == LOW)
if(Playing)
previous();
}
if(digitalRead(volumeUP) == LOW)
volumeINC();
if(digitalRead(volumeDOWN) == LOW)
volumeDEC();
}
}
void playFirst()
exe_cmd(0x3F, 0, 0);
delay(500);
exe_cmd(0x06, 0, volume);
delay(500);
exe_cmd(0x11,0,1);
delay(500);
void pause()
exe_cmd(0x0E,0,0);
delay(500);
void play()
exe_cmd(0x0D,0,1);
delay(500);
void next()
exe_cmd(0x01,0,1);
delay(500);
}
void previous()
{
exe_cmd(0x02,0,1);
delay(500);
void volumeINC()
volume = volume+1;
if(volume==31)
volume=30;
exe_cmd(0x06, 0, volume);
delay(500);
void volumeDEC()
volume = volume-1;
if(volume==-1)
{
volume=0;
exe_cmd(0x06, 0, volume);
delay(500);
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD +
Acknowledge + Par1 + Par2);
byte Command_line[10] = { Start_Byte, Version_Byte,
Command_Length, CMD, Acknowledge, Par1, Par2,
highByte(checksum), lowByte(checksum), End_Byte};
for (byte x=0; x<10; x++)
mySerial.write(Command_line[x]);
//---------Developed by R.Girish------//
Now let’s move on to IR remote based design.
Schematic for IR controlled Mp3 player:
The above design is simple as the push button based; the only difference is removal of
push buttons and inclusion of TSOP 1738 IR receiver. The received signal from IR
remote is fed to A0 pin of arduino.
Now to control this Mp3 player you need a spare TV, or any other IR based remote
which might be lying on your junk box. You have to decide which the buttons for
controlling the functions like play & pause etc.
There are 6 functions:
1) Play and pause
2) Next song
3) Previous song
4) Volume increase
5) Volume decrease
6) Sound equalizer (Normal/Pop/Rock/Jazz/Classic/Base)
You need to choose the buttons on the remote and find its Hexadecimal codes of those
buttons which will be transmitted by the remote. To find the hexadecimal code,
download the IR library if not done so.
github.com/z3t0/Arduino-IRremote
Add the library to arduino software and navigate to File> Examples> IRremote >
IRrecvDemo and upload the code with completed hardware setup.
Open the serial monitor and press the buttons on remote, you will see the hexadecimal
codes, note it down to corresponding button on piece of paper.
You need to enter the hexadecimal code on the program given below. Once you entered
the hexadecimal codes in the given program, upload it. You are ready to control your
songs from your remote.
Program for IR remote based design:
//---Developed by R.Girish--//
#include <SoftwareSerial.h>
#include <IRremote.h>
SoftwareSerial mySerial(10,11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//--------------------------------------------------------//
# define pause_play 0x2FD08F7
# define next_song 0x2FDD827
# define prev_song 0x2FDF807 //REPLACE THESE HEX CODE WITH
YOUR REMOTE BUTTON CODE STARTS “0x”
# define vol_inc 0x2FD58A7
# define vol_dec 0x2FD7887
# define sound_equalizer 0x2FD30CF
//-------------------------------------------------------//
const int receive = A0;
IRrecv irrecv(receive);
decode_results dec;
int volume = 15;
int eqset = 0;
boolean Playing = false;
void setup ()
irrecv.enableIRIn();
mySerial.begin(9600);
delay(1000);
playFirst();
Playing = true;
void loop ()
if(irrecv.decode(&dec))
{
if (dec.value==pause_play)
if(Playing)
pause();
Playing = false;
}
else
{
Playing = true;
play();
if (dec.value==next_song)
if(Playing)
next();
if (dec.value==prev_song)
if(Playing)
previous();
}
}
if(dec.value==vol_inc)
volumeINC();
if(dec.value==vol_dec)
{
volumeDEC();
}
if(dec.value==sound_equalizer)
equalizer();
irrecv.resume();
void playFirst()
exe_cmd(0x3F, 0, 0);
delay(100);
exe_cmd(0x06, 0, volume);
delay(100);
exe_cmd(0x11,0,1);
delay(100);
void pause()
{
exe_cmd(0x0E,0,0);
delay(100);
void play()
exe_cmd(0x0D,0,1);
delay(100);
}
void next()
exe_cmd(0x01,0,1);
delay(100);
void previous()
exe_cmd(0x02,0,1);
delay(100);
void volumeINC()
volume = volume+1;
if(volume == 31)
volume = 30;
exe_cmd(0x06, 0, volume);
delay(100);
void volumeDEC()
volume = volume-1;
if(volume == -1)
{
volume = 0;
}
exe_cmd(0x06, 0, volume);
delay(100);
void equalizer()
eqset = eqset+1;
if(eqset == 6)
eqset = 0;
exe_cmd(0x07, 0 ,eqset);
delay(100);
void exe_cmd(byte CMD, byte Par1, byte Par2)
word checksum = -(Version_Byte + Command_Length + CMD +
Acknowledge + Par1 + Par2);
byte Command_line[10] = { Start_Byte, Version_Byte,
Command_Length, CMD, Acknowledge, Par1, Par2,
highByte(checksum), lowByte(checksum), End_Byte};
for (byte x=0; x<10; x++)
mySerial.write(Command_line[x]);
}
//---------Developed by R.Girish------//
NOTE 1: you may see warning in the program while compiling, please ignore it.
NOTE 2: Try to put all your songs in SD card without folders.
Author’s prototype:
You May Also Like: Arduino Engineering Projects, Audio Projects,
Audio Record/Playback using IC ISD1820
OCL Amplifier Explained
Arduino Full-Bridge (H-Bridge) Inverter Circuit
Learning Basic Arduino Programming - Tutorial for the Newcomers
50 Best Engineering Projects for Final Year Students
Wireless Office Call Bell
Vehicle Speed Detector for Traffic Police
USB 5V Audio Amplifier for PC Speakers
120 Watt Amplifier Circuit using TDA 2030 IC
Simple 150 Watt Amplifier using Transistors
2.4 GHz 10 Channel Remote Control Switch
In this post we are going to construct a 10 channel remote control switch based
on ISM (industrial, Scientific and Medical) band.
By Girish Radhakrishnan
Introduction
The ISM band is operated at 2.4 GHz, which can be used without licensing with
reasonable power output.
The proposed project is general purpose ON/OFF wireless switch, which can be
utilized to turn ON/OFF Lights, fans, home appliances to home automation if are
confident enough to bring hardware or software alterations to this project.
The project is divided into two parts: The remote and the receiver.
The Remote Controller:
The remote controller consists of 10 push buttons for controlling 10 individual
relays at the receiver. The remote is operated by 9V battery which makes it
portable.
The Heart of the project of is 2.4 GHz transceiver module NRF24L01 which
makes the communication between two Arduinos possible.
The Remote sports an acknowledgement LED.
The acknowledgement LED will light up momentarily every time when we press
a button on the remote and only if the transmitted signal is received by the
receiver and then the receiver send a feedback signal back to remote to trigger
the LED.
This process will ensure the remote controller’s ON/OFF command is reached its
destination with visual confirmation.
An ON/OFF switch is provided in remote controller’s circuit for preventing from
excess energy loss while at idle.
Arduino Nano or Arduino Pro-mini is recommended for constructing the remote
as it is in a smaller form factor which makes portable.
Circuit Diagram:
The above is the complete circuit diagram for the remote controller. The pin
connection diagram for NRF24L01 is also given in the same schematic.
Turn off the remote when you are done.
Please download the library file here: github.com/nRF24/RF24.git
Program for Remote:
//-----Program Developed by R.Girish----//
#include <RF24.h>
#include<SPI.h>
RF24 radio(9,10);
const byte address[][6] = {"00001", "00002"};
const int ip1 = 2;
const int ip2 = 3;
const int ip3 = 4;
const int ip4 = 5;
const int ip5 = 6;
const int ip6 = 7;
const int ip7 = 8;
const int ip8 = A0;
const int ip9 = A1;
const int ip10 = A2;
const int buzzer = A3;
char buzzchar[32] = "";
const char constbuzzer[32] = "buzz";
const char button1[32] = "activate_1";
const char button2[32] = "activate_2";
const char button3[32] = "activate_3";
const char button4[32] = "activate_4";
const char button5[32] = "activate_5";
const char button6[32] = "activate_6";
const char button7[32] = "activate_7";
const char button8[32] = "activate_8";
const char button9[32] = "activate_9";
const char button10[32] = "activate_10";
void setup()
{
pinMode(ip1, INPUT);
pinMode(ip2, INPUT);
pinMode(ip3, INPUT);
pinMode(ip4, INPUT);
pinMode(ip5, INPUT);
pinMode(ip6, INPUT);
pinMode(ip7, INPUT);
pinMode(ip8, INPUT);
pinMode(ip9, INPUT);
pinMode(ip10, INPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(ip1, HIGH);
digitalWrite(ip2, HIGH);
digitalWrite(ip3, HIGH);
digitalWrite(ip4, HIGH);
digitalWrite(ip5, HIGH);
digitalWrite(ip6, HIGH);
digitalWrite(ip7, HIGH);
digitalWrite(ip8, HIGH);
digitalWrite(ip9, HIGH);
digitalWrite(ip10, HIGH);
radio.begin();
radio.openWritingPipe(address[1]);
radio.openReadingPipe(1, address[0]);
radio.setChannel(100);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.stopListening();
}
void loop()
{
if(digitalRead(ip1) == LOW)
{
radio.write(&button1, sizeof(button1));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip2) == LOW)
{
radio.write(&button2, sizeof(button2));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip3) == LOW)
{
radio.write(&button3, sizeof(button3));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip4) == LOW)
{
radio.write(&button4, sizeof(button4));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip5) == LOW)
{
radio.write(&button5, sizeof(button5));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip6) == LOW)
{
radio.write(&button6, sizeof(button6));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip7) == LOW)
{
radio.write(&button7, sizeof(button7));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip8) == LOW)
{
radio.write(&button8, sizeof(button8));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip9) == LOW)
{
radio.write(&button9, sizeof(button9));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
if(digitalRead(ip10) == LOW)
{
radio.write(&button10, sizeof(button10));
radio.startListening();
while(!radio.available());
radio.read(&buzzchar, sizeof(buzzchar));
if(strcmp(buzzchar,constbuzzer) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
radio.stopListening();
}
}
//-----Program Developed by R.Girish----//
That concludes the Remote controller circuit.
The Receiver:
The receiver circuit consists of Arduino which can be of your choice, 10 current
limiting resistors of 330 ohm, 10 transistors and 10 relay forms the output
stage.
At each of the 10 output pins of Arduino is connected to 10 relays via resistor
and transistor.
Please ensure your power supply is capable of providing at-least 1A of current
which is necessary to operate multiple relay at an instant.
A 2.4 GHz transceiver module NRF24L01 provides communication between
remote.
Circuit Diagram:
If you are confused with wiring diagram between Arduino and NRF24L01
module, just take a look at the table beside the schematic, it is same for remote
controller circuit too.
The output sequence and output pins are as follows:
Arduino PIN – Output sequence
PIN 2 – OUTPUT 1
PIN 3 – OUTPUT 2
PIN 4 – OUTPUT 3
PIN 5 – OUTPUT 4
PIN 6 – OUTPUT 5
PIN 7 – OUTPUT 6
PIN 8 – OUTPUT 7
PIN A0 – OUTPUT 8
PIN A1 – OUTPUT 9
PIN A2 – OUTPUT 10
Output Stage:
The output is just showcased with two output stages for simplicity of the
diagram. You must expand it to ten, if you are using all the 10 channels.
Program for Receiver:
//-----Program Developed by R.Girish----//
#include <RF24.h>
#include<SPI.h>
RF24 radio(9,10);
const byte address[][6] = {"00001", "00002"};
const int op1 = 2;
const int op2 = 3;
const int op3 = 4;
const int op4 = 5;
const int op5 = 6;
const int op6 = 7;
const int op7 = 8;
const int op8 = A0;
const int op9 = A1;
const int op10 = A2;
const char buzzer[32] = "buzz";
char buttonstate[32] = "";
const char button1[32] = "activate_1";
const char button2[32] = "activate_2";
const char button3[32] = "activate_3";
const char button4[32] = "activate_4";
const char button5[32] = "activate_5";
const char button6[32] = "activate_6";
const char button7[32] = "activate_7";
const char button8[32] = "activate_8";
const char button9[32] = "activate_9";
const char button10[32] = "activate_10";
boolean status1 = false;
boolean status2 = false;
boolean status3 = false;
boolean status4 = false;
boolean status5 = false;
boolean status6 = false;
boolean status7 = false;
boolean status8 = false;
boolean status9 = false;
boolean status10 = false;
void setup()
{
Serial.begin(9600);
pinMode(op1, OUTPUT);
pinMode(op2, OUTPUT);
pinMode(op3, OUTPUT);
pinMode(op4, OUTPUT);
pinMode(op5, OUTPUT);
pinMode(op6, OUTPUT);
pinMode(op7, OUTPUT);
pinMode(op8, OUTPUT);
pinMode(op9, OUTPUT);
pinMode(op10, OUTPUT);
radio.begin();
radio.openReadingPipe(1, address[1]);
radio.openWritingPipe(address[0]);
radio.setChannel(100);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.startListening();
}
void loop()
{
while(!radio.available());
radio.read(&buttonstate, sizeof(buttonstate));
Serial.println(buttonstate);
if((strcmp(buttonstate,button1) == 0) && status1 == false)
{
digitalWrite(op1, HIGH);
status1 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button1) == 0) && status1 == true)
{
digitalWrite(op1, LOW);
status1 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button2) == 0) && status2 == false)
{
digitalWrite(op2, HIGH);
status2 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button2) == 0) && status2 == true)
{
digitalWrite(op2, LOW);
status2 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button3) == 0) && status3 == false)
{
digitalWrite(op3, HIGH);
status3 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button3) == 0) && status3 == true)
{
digitalWrite(op3, LOW);
status3 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button4) == 0) && status4 == false)
{
digitalWrite(op4, HIGH);
status4 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button4) == 0) && status4 == true)
{
digitalWrite(op4, LOW);
status4 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button5) == 0) && status5 == false)
{
digitalWrite(op5, HIGH);
status5 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button5) == 0) && status5 == true)
{
digitalWrite(op5, LOW);
status5 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button6) == 0) && status6 == false)
{
digitalWrite(op6, HIGH);
status6 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button6) == 0) && status6 == true)
{
digitalWrite(op6, LOW);
status6 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button7) == 0) && status7 == false)
{
digitalWrite(op7, HIGH);
status7 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button7) == 0) && status7 == true)
{
digitalWrite(op7, LOW);
status7 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button8) == 0) && status8 == false)
{
digitalWrite(op8, HIGH);
status8 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button8) == 0) && status8 == true)
{
digitalWrite(op8, LOW);
status8 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button9) == 0) && status9 == false)
{
digitalWrite(op9, HIGH);
status9 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button9) == 0) && status9 == true)
{
digitalWrite(op9, LOW);
status9 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button10) == 0) && status10 == false)
{
digitalWrite(op10, HIGH);
status10 = true;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
else if((strcmp(buttonstate,button10) == 0) && status10 == true)
{
digitalWrite(op10, LOW);
status10 = false;
radio.stopListening();
for(int i = 0; i < 10; i++)
{
radio.write(&buzzer, sizeof(buzzer));
delay(10);
}
radio.startListening();
}
}
//-----Program Developed by R.Girish----//
That concludes the Receiver.
It has theoretical range of 100 meter; practically it may work around 30 meters
and above, it may vary depend on the solid obstacles between remote and
receiver.
How to operate this project:
• Turn on the Receiver first and then Remote.
• Press any of the buttons in the remote one at a time.
• If you press the first button the corresponding output gets triggered i.e.
output 1 turns ON. If you press the same button on remote again, it will turn
OFF the output 1 at receiver.
• It applies for all the buttons and 10 outputs.
• Turn off the remote after use.
If you have any further questions regarding the above discussed 2.4 GHz 10
channel remote control switch, please express them in the comment section.