به نام خدا
پروژه ی ساخت یک ریموت کنترل ۲٫۴ گیگا هرتز برای ۱۰ کانال
در این پروژه قصد داریم تا یک ریموت کنترل ده کاناله در پهنای باند مورد استفاده ی صنعتی ، علمی و پزشکی بسازیم. این ریموت کنترل از ده میکروسوئیچ تشکیل شده است که از هر کدام از آن ها می توان برای مقاصدی استفاده کرد. هر کدام از این میکرو سوئیچ ها یک رله را در گیرنده ی سیستم کنترل می کنند. با استفاده از منبع تغذیه ی ۹ ولتی این سیستم قابل حمل خواهد بود. قلب این پروژه ماژول NRF24L01 می باشد که در خود هم گیرنده دارد و هم فرستنده. این ماژول امکان ارتباط بین دو آردوینو را فراهم می سازد. هنگامی که یک میکروسوئیچ فشرده شود ال ای دی جهت اطلاع روشن خواهد شد. همچنین هنگامی که یک سیگنال ارسالی دریافت شود ال ای دی نیز روشن می شود.
شماتیک مدار و اتصالات آن :
تصویر بالا شماتیک کامل مدار است. همچنین کتابخانه ی NRF24L01 را نیز می توانید از لینک زیر دانلود کنید.
دانلود فایل
کد برنامه فرستنده:
#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(); } }
گیرنده:
قسمت گیرنده شامل آردوینو می شود اگر ده کانال یا ده عمل متفاومت مورد نظر باید از ۱۰ عدد مقاومت ۳۳۰ اهمی که جهت محدود کردن جریان به کار می رود استفاده کنید. همچنین از ۱۰ ترانزیستور و ۱۰ رله نیز باید استفاده کنید. منبع تغذیه باید توانایی تهییه حداقل یک آمپر جریان برا داشته باشد.
شماتیک مدار:
در تصویر بالا شماتیک مدار گیرنده را مشاهده می کنید . همچنین در زیر پین های خروجی و ورودی آورده شده است:
خروجی – پین آردوینو
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
نمای قسمت رله:
در تصویر بالا شما خروجی را مشاهده می کنید. اما در این تصور تنها دو قسمت از خروجی آورده شده است شما باید آن را تا ده عدد ادامه دهید.
کد برنامه ی گیرنده:
دانلود فایل#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(); } }
سلام کد مدار فرستنده نیست اگه میشه لطف کنید بزارید
سلام. اصلاح شد و کد برنامه فرستنده گذاشته شد
سلام و خسته نباشید
اینجا فقط برنامه گیرنده واسه دانلود هست
پس برنامه فرستنده کجاست؟
سلام. اصلاح شد و کد برنامه فرستنده گذاشته شد
سلام تو قسمت یکی مونده به اخر(قبل از کد برنامه ی گیرنده) چجوری باید رله رو به برد متصل کنم تا جواب بده؟؟
از سمته مقاومت باید صورت بگیره؟
پایه های تحریک رله رو یکی به 9 ولت یکی رو هم به پایه کلکتور ترانزیستور.... اگرم رله 5 ولت داشتید به جای 9 ولت به 5 ولت وصل کنید
برای جلوگیری از تداخل ریموت های فرستنده مثلا اگه دو تا فرستنده داشته باشیم چجوری میشه ؟
باید کتابخونه رو دستکاری کنید
چجوری میشه کتابخونه را دستکاری کرد؟
برای دستکاری کتابخونه باید توی کد نویسی مهارت داشته باشید.... روش خاصی نداره، بازش کنید و تغییراتی که میخواید رو اعمال کنید...
بعد اون خط چین ها مربوط به چیه ؟؟
_ _ _ _
وسایل مورد نیاز تو این مرحله رله۹v مقاومت ۳۳۰ اهم و ترانزیستور BC548 هست فقط دیگه؟؟
علاوه بر این ها توی مدار فرستنده یه تعداد میکروسوئیچ میخواید البته برد آردوینو هم یادتون نره. ماژول فرستنده گیرنده هم که nrf24l01 هست. به جای رله 9 ولت از 5 ولت هم میتونی استفاد کنی منتهی به جای اتصال به 9 ولت به 5 ولت وصلش کن
لطفا یه توضیحی درباره اون قسمت بدین برای ما تازه وارد ها.
خط چین ها چیز خاصی نیست.. میتونی پایه 9 ولتشون رو به هم وصل کنی
سلام کدوم فایلو اپلود کنم
برنامه فرستنده و گیرنده که نوشته رو آپلود کنید. کتابخونه رو هم به کتابخونه آردوینو اضاف کنید
سلام بسیارعالی و ممنون
آیا امکان استفاده هم زمان از چند خروجی در این برنامه هست یا نه ؟
سلام... خواهش میکنم
ممنون
بله امکان استفاده چند خروجی وجود داره
با سلام
خسته نباشید .کدهای گیرنده به Arduino uno آپلود نشد خطا دادن مشکل از کجاست ممنون میشم کمک کنید.با تشکر
سلام
ممنون
اگه موقع آپلود خطا داده ربطی به کد ما نداره مشکل از برد آردوینو شما هست یا اینکه درست آپلود نکردید یا اینکه درایور ch340g رو که بعضی از برد های آردوینو میخواد رو نصب نکردید.... اگر کد خطا میده خطا رو بفرستید تا راهنماییتون کنیم
سلام
ممنون از سایت خوب و عالی تون
میخواستم بدونم میشه وسایلی رو که میخوام به کیرنده مستقیم متصل کنیم مثلا یه آرمیچر رو مستقیم به گیرنده متصل کرد اگه میشه که هیچ اگه نمیشه یه توضیحی میدید
با تشکر
سلام
خیلی ممنون
میتونی به آرمیچر وصل کنی ولی مستقیم نه.... یه درایور واسه آرمیچر باید بذاری، حالا یا ترانزیستور یا ماسفت بذار یا از آی سی هایی مثل L293 استفاده کن.... اگرم میخوای سرعتش رو کم و زیاد کنید از PWM باید استفاده کنی..... توی محصولاتمون بری پروژه رادیوکنترل هست
سلام ببخشید این مدار بردش چقدره و اینکه میشه ازش برای کنترل ماشین rc استفاده کرد؟
سلام بستگی به نوع ماژول nrf که روش میذارید از 100 متر تا یک کیلومتر، بله واسه ماشین rc هم میشه منتهی یه سری تغییرات باید توی کد ایجاد کنید.....