2,4 GHz 10-kanals fjärrkontroll

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget kommer vi att konstruera en 10-kanals fjärrkontrollswitch baserat på ISM-band (industriellt, vetenskapligt och medicinskt).

Introduktion

De ISM-band drivs med 2,4 GHz, som kan användas utan licensiering med rimlig effekt.



Det föreslagna projektet är trådlöst strömbrytare för allmänt ändamål, som kan användas för att tända / stänga av lampor, fläktar, hushållsapparater till hemautomation om de är självsäkra för att göra hårdvaru- eller programvaruändringar till detta projekt.

Projektet är uppdelat i två delar: Fjärrkontrollen och mottagaren.



Fjärrkontrollen:

Fjärrkontrollen består av 10 tryckknappar för att styra 10 enskilda reläer vid mottagaren. Fjärrkontrollen drivs av 9V batteri vilket gör den bärbar.

Hjärtat i projektet är 2,4 GHz transceiver-modul NRF24L01 som gör kommunikationen mellan två Arduinos möjlig.

Fjärrkontrollen har en bekräftelses-LED.

Bekräftelsedioden tänds tillfälligt varje gång vi trycker på en knapp på fjärrkontrollen och endast om den sända signalen tas emot av mottagaren och sedan mottagaren skickar en återkopplingssignal tillbaka till fjärrkontrollen för att utlösa lysdioden.

Denna process säkerställer att fjärrkontrollens PÅ / AV-kommando når sin destination med visuell bekräftelse.

En PÅ / AV-omkopplare finns i fjärrkontrollens krets för att förhindra överskott av energiförlust när den är på tomgång.

Arduino Nano eller Arduino Pro-mini rekommenderas för att bygga fjärrkontrollen eftersom den är i en mindre formfaktor som gör bärbar.

Kretsschema:

2,4 GHz 10-kanals fjärrkontrollsändare

Ovanstående är det fullständiga kretsschemat för fjärrkontrollen. Stiftanslutningsdiagrammet för NRF24L01 ges också i samma schema.

Stäng av fjärrkontrollen när du är klar.

Ladda ner biblioteksfilen här: github.com/nRF24/RF24.git

Program för fjärrkontroll:

//-----Program Developed by R.Girish----//
#include
#include
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----//

Det avslutar fjärrkontrollkretsen.

Mottagaren:

Mottagarkretsen består av Arduino som kan vara ditt val, 10 strömbegränsande motstånd på 330 ohm, 10 transistorer och 10 relä bildar utgångssteget.

Vid vart och ett av de 10 utgångarna på Arduino är anslutna till 10 reläer via motstånd och transistor.

Se till att din strömförsörjning kan tillhandahålla minst 1A ström som är nödvändig för att driva flera reläer på ett ögonblick.

En 2,4 GHz transceiver-modul NRF24L01 ger kommunikation mellan fjärrkontrollen.

Kretsschema:



2,4 GHz 10-kanals fjärrkontrollmottagare

Om du är förvirrad med kopplingsschemat mellan Arduino och NRF24L01-modulen, ta en titt på tabellen bredvid schemat, det är samma för fjärrkontrollkrets också.

Utgångssekvensen och uttapparna är som följer:

Arduino PIN - Utmatningssekvens

PIN 2 - UTGÅNG 1
PIN 3 - UTGÅNG 2
PIN 4 - UTGÅNG 3
PIN 5 - UTGÅNG 4
PIN 6 - UTGÅNG 5
PIN 7 - UTGÅNG 6
PIN 8 - UTGÅNG 7
PIN A0 - UTGÅNG 8
PIN A1 - UTGÅNG 9
PIN A2 - UTGÅNG 10

Utgångsstadium:

2,4 GHz 10-kanals fjärrkontrollreläanslutningar

Utgången visas bara med två utgångssteg för att göra det enkelt för diagrammet. Du måste utöka den till tio om du använder alla de 10 kanalerna.

Program för mottagare:

//-----Program Developed by R.Girish----//
#include
#include
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----//

Det avslutar mottagaren.

Det har ett teoretiskt räckvidd på 100 meter, praktiskt taget kan det fungera cirka 30 meter och uppåt, det kan variera beroende på de solida hindren mellan fjärrkontrollen och mottagaren.

Hur man driver detta projekt:

• Sätt på mottagaren först och sedan fjärrkontrollen.

• Tryck på någon av knapparna på fjärrkontrollen en i taget.

• Om du trycker på den första knappen aktiveras motsvarande utgång, dvs. utgång 1 slås PÅ. Om du trycker på samma knapp på fjärrkontrollen igen kommer den att stänga av utgång 1 på mottagaren.

• Det gäller för alla knappar och 10 utgångar.

• Stäng av fjärrkontrollen efter användning.

Om du har ytterligare frågor angående ovan diskuterade 2,4 GHz 10-kanals fjärrkontroll, vänligen uttryck dem i kommentarsektionen.




Tidigare: Arduino PWM Signal Generator Circuit Nästa: Hur man kör en servomotor med IC 555