מתג שליטה מרחוק 2.4 GHz 10 ערוצים

נסה את הכלי שלנו לביטול בעיות





בפוסט זה אנו מתכוונים לבנות מתג שליטה מרחוק בן 10 ערוצים המבוסס על פס ISM (תעשייתי, מדעי ורפואי).

מבוא

ה להקת ISM מופעל על ידי 2.4 GHz, אשר ניתן להשתמש ללא רישיון עם הספק סביר.



הפרויקט המוצע הוא מתג אלחוטי הפעלה / כיבוי למטרות כלליות, שניתן להשתמש בו להפעלת אורות, מאווררים, מכשירי חשמל לבית לאוטומציה ביתית אם הם בטוחים מספיק בכדי להביא שינויים בחומרה או בתוכנה לפרויקט זה.

הפרויקט מחולק לשני חלקים: השלט והמקלט.



השלט הרחוק:

השלט הרחוק מורכב מעשרה כפתורי לחיצה לשליטה של ​​10 ממסרים בודדים במקלט. השלט מופעל על ידי סוללת 9V מה שהופך אותו לנייד.

לב הפרויקט הוא מודול משדר 2.4 GHz GHz NRF24L01 המאפשר את התקשורת בין שני Arduinos.

השלט מרחוק נורית אישור.

נורית האישור תידלק לרגע בכל פעם שנלחץ על כפתור בשלט הרחוק ורק אם האות המשודר מתקבל על ידי המקלט ואז המקלט ישלח אות משוב חזרה לשלט כדי להפעיל את הנורית.

תהליך זה יבטיח שפקודת ON / OFF של השלט רחוק תגיע ליעדה עם אישור חזותי.

מתג הפעלה / כיבוי מסופק במעגל הבקר מרחוק למניעת אובדן עודף אנרגיה בזמן סרק.

Arduino Nano או Arduino Pro-mini מומלצים לבניית השלט הרחוק מכיוון שהוא נמצא בצורת צורה קטנה יותר שהופכת ניידת.

תרשים מעגל:

משדר שלט רחוק 2.4 GHz 10 ערוצים

האמור לעיל הוא תרשים המעגל השלם עבור השלט הרחוק. דיאגרמת חיבור הסיכה עבור NRF24L01 ניתנת גם באותה סכמה.

כבה את השלט כשתסיים.

אנא הורד את קובץ הספרייה כאן: github.com/nRF24/RF24.git

תוכנית מרחוק:

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

זה מסכם את מעגל השלט הרחוק.

המקבל:

מעגל המקלט מורכב מארדואינו שיכול להיות לבחירתכם, 10 נגדי הגבלת זרם של 330 אוהם, 10 טרנזיסטורים ו -10 ממסרים מהווים את שלב הפלט.

בכל אחד מ -10 סיכות הפלט של Arduino מחובר ל -10 ממסרים באמצעות נגר וטרנזיסטור.

אנא וודא כי אספקת החשמל שלך מסוגלת לספק לפחות 1A זרם הנחוץ להפעלת ממסר מרובה ברגע.

מודול משדר 2.4 GHz של NRG24L01 מספק תקשורת בין שלט רחוק.

תרשים מעגל:



מקלט שלט רחוק 2.4 GHz 10 ערוצים

אם אתה מבולבל עם דיאגרמת החיווט בין Arduino למודול NRF24L01, רק תסתכל על הטבלה לצד הסכימה, זה גם לגבי מעגל הבקר מרחוק.

רצף הפלט וסיכות הפלט הם כדלקמן:

PIN של Arduino - רצף פלט

PIN 2 - פלט 1
PIN 3 - פלט 2
PIN 4 - פלט 3
PIN 5 - פלט 4
PIN 6 - פלט 5
PIN 7 - פלט 6
PIN 8 - פלט 7
PIN A0 - פלט 8
PIN A1 - פלט 9
PIN A2 - פלט 10

שלב פלט:

חיבורי ממסר שלט רחוק 2.4 GHz 10 ערוצים

הפלט מוצג רק עם שני שלבי פלט לפשטות התרשים. עליך להרחיב אותו לעשרה אם אתה משתמש בכל 10 הערוצים.

תוכנית למקלט:

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

זה מסכם את המקלט.

יש לו טווח תיאורטי של 100 מטר. זה עשוי לעבוד בערך 30 מטר ומעלה. זה עשוי להשתנות בהתאם למכשולים המוצקים בין השלט למקלט.

כיצד להפעיל פרויקט זה:

• הפעל תחילה את המקלט ואז את Remote.

• לחץ על אחד מהלחצנים בשלט הרחוק בכל פעם.

• אם תלחץ על הכפתור הראשון הפלט המתאים מופעל כלומר פלט 1 נדלק. אם תלחץ שוב על אותו כפתור בשלט הרחוק, הוא יכבה את פלט 1 במקלט.

• זה חל על כל הלחצנים ו -10 היציאות.

• כבה את השלט לאחר השימוש.

אם יש לך שאלות נוספות בנוגע למתג שליטה מרחוק 2.4 GHz עם 10 ערוצים שנדון לעיל, אנא הביע אותם בסעיף ההערות.




קודם: Arduino PWM מעגל מחולל אותות הבא: כיצד להפעיל מנוע סרוו באמצעות IC 555