Sie sind auf Seite 1von 41

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.

Das könnte Ihnen auch gefallen