2,4 GHz: n 10-kanavainen kaukosäätimen kytkin

2,4 GHz: n 10-kanavainen kaukosäätimen kytkin

Tässä viestissä aiomme rakentaa 10-kanavaisen kauko-ohjauskytkimen, joka perustuu ISM (teollisuus, tiede ja lääketiede) -kaistaan.

Johdanto

ISM-yhtye toimii 2,4 GHz: n taajuudella, jota voidaan käyttää ilman lisensointia kohtuullisella lähtöteholla.



Ehdotettu projekti on yleiskäyttöinen langaton ON / OFF-kytkin, jota voidaan käyttää valojen, tuulettimien, kodinkoneiden kytkemiseen päälle / pois päältä kotiautomaatioon, jos he ovat riittävän varmoja tuomaan laitteistoon tai ohjelmistoon muutoksia tähän projektiin.



Projekti on jaettu kahteen osaan: kaukosäädin ja vastaanotin.

Kaukosäädin:

Kaukosäädin koostuu 10 painikkeesta 10 yksittäisen releen ohjaamiseksi vastaanottimessa. Kaukosäädintä käytetään 9 V: n paristolla, mikä tekee siitä kannettavan.



Projektin sydän on 2,4 GHz lähetin-vastaanotinmoduuli NRF24L01, joka mahdollistaa kahden Arduinon välisen viestinnän.

Kauko-ohjaimessa on kuittauksen LED.

Kuittauksen LED-valo syttyy hetkellisesti joka kerta, kun painamme kaukosäätimen painiketta ja vain, jos vastaanotin vastaanottaa lähetetyn signaalin ja sitten vastaanotin lähettää takaisinkytkentäsignaalin takaisin kaukosäätimeen LEDin laukaisemiseksi.



Tämä prosessi varmistaa, että kaukosäätimen ON / OFF-komento on saavutettu määränpäähän visuaalisen vahvistuksen avulla.

Kaukosäätimen piirissä on ON / OFF-kytkin, joka estää ylimääräisen energiahäviön joutokäynnillä.

Arduino Nano tai Arduino Pro-mini on suositeltava kauko-ohjaimen rakentamiseen, koska se on pienemmässä muodossa, joka tekee kannettavasta.

Piirikaavio:

2,4 GHz: n 10-kanavainen kaukosäädin

Yllä oleva on kauko-ohjaimen täydellinen kytkentäkaavio. NRF24L01: n nastaliitäntäkaavio on myös annettu samassa kaaviossa.

Sammuta kaukosäädin, kun olet valmis.

Lataa kirjastotiedosto täältä: github.com/nRF24/RF24.git

Ohjelma etäkäyttöön:

//-----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----//

Tämä päättää kaukosäätimen piirin.

Vastaanottaja:

Vastaanotinpiiri koostuu Arduinosta, joka voi olla valintasi, 10 virranrajoitusvastusta 330 ohmia, 10 transistoria ja 10 releä muodostavat lähtötason.

Arduinon jokaisessa 10 ulostulotapissa on kytketty 10 releeseen vastuksen ja transistorin kautta.

Varmista, että virtalähteesi pystyy tuottamaan vähintään 1 A virtaa, joka tarvitaan useiden releiden käyttämiseen kerralla.

2,4 GHz: n lähetin-vastaanotinmoduuli NRF24L01 tarjoaa tiedonsiirron kauko-ohjaimen välillä.

Piirikaavio:



2,4 GHz: n 10-kanavainen kaukosäädinvastaanotin

Jos olet hämmentynyt Arduino- ja NRF24L01-moduulien kytkentäkaavion kanssa, katsokaa vain kaavion vieressä olevaa taulukkoa, se on sama myös kaukosäädinpiirille.

Lähtösekvenssi ja lähtönastat ovat seuraavat:

Arduino PIN - Lähtösekvenssi

PIN 2 - LÄHTÖ 1
PIN 3 - LÄHTÖ 2
PIN 4 - LÄHTÖ 3
PIN 5 - LÄHTÖ 4
PIN 6 - LÄHTÖ 5
PIN 7 - LÄHTÖ 6
PIN 8 - LÄHTÖ 7
PIN A0 - LÄHTÖ 8
PIN A1 - LÄHTÖ 9
PIN A2 - LÄHTÖ 10

Tulostusvaihe:

2,4 GHz: n 10-kanavaisen kaukosäätimen releyhteydet

Tulos on vain esitelty kahdella lähtövaiheella kaavion yksinkertaisuuden vuoksi. Sinun on laajennettava se kymmeneen, jos käytät kaikkia 10 kanavaa.

Vastaanottimen ohjelma:

//-----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----//

Se päättää vastaanottimen.

Sen teoreettinen kantama on 100 metriä, käytännössä se voi toimia noin 30 metriä tai enemmän, se voi vaihdella riippuen kiinteistä esteistä kauko-ohjaimen ja vastaanottimen välillä.

Kuinka toteuttaa tämä projekti:

• Kytke ensin virta vastaanottimeen ja sitten kauko-ohjaimeen.

• Paina mitä tahansa kaukosäätimen painiketta yksi kerrallaan.

• Jos painat ensimmäistä painiketta, vastaava lähtö laukaistaan, eli lähtö 1 kytkeytyy päälle. Jos painat samaa painiketta kaukosäätimessä uudelleen, se sammuttaa vastaanottimen lähdön 1.

• Se koskee kaikkia painikkeita ja 10 lähtöä.

• Sammuta kaukosäädin käytön jälkeen.

Jos sinulla on kysyttävää yllä mainitusta 2,4 GHz: n 10-kanavaisesta kaukosäätimestä, ilmaise ne kommenttiosassa.




Edellinen: Arduino PWM-signaaligeneraattoripiiri Seuraava: Servomoottorin käyttäminen IC 555: n avulla