2.4 جيجا هرتز 10 قنوات مفتاح التحكم عن بعد

جرب أداة القضاء على المشاكل





في هذا المنشور ، سنقوم ببناء مفتاح تحكم عن بعد مكون من 10 قنوات بناءً على نطاق ISM (الصناعي والعلمي والطبي).

مقدمة

ال ISM band يعمل بتردد 2.4 جيجا هرتز ، ويمكن استخدامه بدون ترخيص مع خرج طاقة معقول.



المشروع المقترح هو مفتاح تشغيل / إيقاف لاسلكي للأغراض العامة ، والذي يمكن استخدامه لتشغيل / إيقاف تشغيل الأضواء ، والمراوح ، والأجهزة المنزلية إلى التشغيل الآلي للمنزل إذا كنت واثقًا بدرجة كافية لإدخال تعديلات على الأجهزة أو البرامج لهذا المشروع.

المشروع مقسم إلى قسمين: الريموت و الريسيفر.



جهاز التحكم عن بعد:

تتكون وحدة التحكم عن بعد من 10 أزرار ضغط للتحكم في 10 مرحلات فردية في جهاز الاستقبال. يتم تشغيل جهاز التحكم عن بعد بواسطة بطارية 9 فولت مما يجعله محمولاً.

قلب المشروع هو وحدة الإرسال والاستقبال 2.4 جيجا هرتز NRF24L01 مما يجعل الاتصال بين اثنين من Arduinos ممكنًا.

جهاز التحكم عن بعد رياضي LED للإقرار.

سيضيء مؤشر LED للإقرار مؤقتًا في كل مرة نضغط فيها على زر على جهاز التحكم عن بُعد وفقط في حالة تلقي الإشارة المرسلة بواسطة جهاز الاستقبال ثم يرسل جهاز الاستقبال إشارة مرجعية إلى جهاز التحكم عن بُعد لتشغيل مؤشر LED.

ستضمن هذه العملية وصول أمر التشغيل / الإيقاف الخاص بجهاز التحكم عن بُعد إلى وجهته مع التأكيد المرئي.

يتم توفير مفتاح تشغيل / إيقاف في دائرة وحدة التحكم عن بُعد لمنع فقدان الطاقة الزائد أثناء الخمول.

يوصى باستخدام Arduino Nano أو Arduino Pro-mini لإنشاء جهاز التحكم عن بُعد لأنه في شكل أصغر مما يجعله محمولًا.

مخطط الرسم البياني:

2.4 جيجا هرتز 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----//

هذا يخلص دائرة التحكم عن بعد.

المستقبل:

تتكون دائرة الاستقبال من Arduino التي يمكن أن تكون من اختيارك ، وتشكل 10 مقاومات مقيدة للتيار تبلغ 330 أوم و 10 ترانزستورات و 10 مرحل مرحلة الإخراج.

في كل من 10 دبابيس الإخراج من Arduino متصل بـ 10 مرحلات عبر المقاوم والترانزستور.

يرجى التأكد من أن مزود الطاقة الخاص بك قادر على توفير ما لا يقل عن 1A من التيار الضروري لتشغيل مرحلات متعددة في لحظة.

توفر وحدة الإرسال والاستقبال بتردد 2.4 جيجا هرتز NRF24L01 الاتصال بين جهاز التحكم عن بعد.

مخطط الرسم البياني:



2.4 جيجا هرتز 10 قنوات جهاز استقبال للتحكم عن بعد

إذا كنت مرتبكًا مع مخطط الأسلاك بين وحدة Arduino و NRF24L01 ، فما عليك سوى إلقاء نظرة على الجدول الموجود بجانب التخطيطي ، فهو نفسه بالنسبة لدائرة التحكم عن بُعد أيضًا.

تسلسل الإخراج ودبابيس الإخراج كما يلي:

Arduino PIN - تسلسل الإخراج

رقم التعريف الشخصي 2 - الإخراج 1
رقم التعريف الشخصي 3 - الإخراج 2
رقم التعريف الشخصي 4 - الإخراج 3
رقم التعريف الشخصي 5 - الإخراج 4
رقم التعريف الشخصي 6 - الإخراج 5
رقم التعريف الشخصي 7 - الإخراج 6
رقم التعريف الشخصي 8 - الإخراج 7
رقم التعريف الشخصي A0 - الإخراج 8
رقم التعريف الشخصي A1 - الإخراج 9
رقم التعريف الشخصي A2 - الإخراج 10

مرحلة الانتاج:

2.4 جيجا هرتز 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 مترًا وما فوق ، وقد يختلف اعتمادًا على العوائق الصلبة بين جهاز التحكم عن بُعد والمستقبل.

كيفية تشغيل هذا المشروع:

• قم بتشغيل جهاز الاستقبال أولاً ثم عن بعد.

• اضغط على أي من الأزرار الموجودة في جهاز التحكم عن بعد في وقت واحد.

• إذا ضغطت على الزر الأول ، فسيتم تشغيل الإخراج المقابل ، أي يتم تشغيل الإخراج 1. إذا قمت بالضغط على الزر نفسه على جهاز التحكم عن بُعد مرة أخرى ، فسيتم إيقاف تشغيل الإخراج 1 في جهاز الاستقبال.

• ينطبق على جميع الأزرار و 10 مخرجات.

• قم بإيقاف تشغيل جهاز التحكم عن بعد بعد الاستخدام.

إذا كان لديك أي أسئلة أخرى بخصوص مفتاح التحكم عن بعد 2.4 جيجا هرتز 10 قنوات الذي تمت مناقشته أعلاه ، فيرجى التعبير عنها في قسم التعليقات.




زوج من: دائرة مولد إشارة Arduino PWM التالي: كيفية تشغيل محرك سيرفو باستخدام IC 555