X أهلا و سهلا بك عزيزي الزائر لأسباب فنية تم نقل المدونة للموقع الجديد يرجى الإنتقال للرابط التالي هوريزون فور إلكترونيكس وشكرا

12‏/04‏/2015

بناء مرسل و مستقبل لا سلكي لطائرتك بـ 20$ فقط

المقدمة

كانت هواية الـ RC تقتصر على أصحاب الدخل الجيد دون غيرهم بسبب غلاء مكوناتها لكن بعد ثورة Arduino و الـ Open Source أصبح من السهل على كل هاوي أو مهندس بناء تطبيقاته بكل سهولة و يسر لما توفره بيئة Arduino من مكتبات في شتى المجالات و منها مشروعنا لهذا اليوم .

و هو بناء مرسل و مستقبل لا سلكي لهواة الطائرات و الذي يعتمد بالأصل على نواة الـ Arduino  وهي  Atmega328 و المديول الشهير RFM22B و بعض المكونات الإلكترونية البسيطة فقط وبما أننا ذكرناArduino   فالمشروع Open Source من شركة flytron الرائدة في هذا المجال

لن أتطرق لشرح المشروع بشكل كامل إنما سأكتفي بشرح أهم ما تحتاجه  لبناء المشروع  بالإضافة للتصميم و الكود و أخيرا روابط القطع المهمة لشرائها من المتجر الشهير aliexpress وهذا الأخير يعود لك في حرية الإختيار للموقع الذي يناسبك الشراء منه لكن أنا بحثت و وجدت أرخص الأسعار و الشحن المجاني عنده .


المرسل

 مواصفات المرسل 

  1. وحدة الإرسال تعتمد على الشريحة RFM22B تنتج طاقة من 0 إلى 100mWيصل مداها من 3KM إلى 5KM
  2. المتحكم المستخدم ATmega328PU + محمل الإقلاع Arduino Pro Mini
  3. دعم ميزة Failsafe الطيران الأمن وهذه الميزة الرائعة تخولك وضع قيم افتراضية يقوم المستقبل بإخراجها في حال انقطاع الاتصال مع المرسل ( مثلا Return to Home في حال وجود GPS)
  4. المنفذ التسلسلي لتحميل البرامج الثابتة وتطبيقات القياس عن بعد Telemetry و سنتحدث عنها في موضوع خاص ان شاء الله 
  5. منبه صوتي يعلمك بحالة المرسل .

البورد الأصلي للشركة المصنعة
المخطط النظري للمرسل














بورد المرسل من الخلف

بورد المرسل من الأعلى



ملاحظة : في مشروعنا تم الإستغناء عن الشريحة IC2 لأن وظيفتها عكس إشارة PPM في حال كانت الإشارة معكوسة من قبل جهاز التحكم

تهيئة البرنامج 

بعد تحميل الملفات و فك الضغط عنها قم بنسخ المجلد Open_LRS_TX إلى المسار المخصص لمشاريع Arduino لديك
و المسار الإفتراضي هو C:\Users\PcName\Documents\Arduino
ومن ثم شغل برمجية Arduino IDE و اختر المشروع من File=> Sketchbook
انتقل إلى ملف الرأس Config.h نحن بحاجة لان نقوم ببعض التعديلات في بعض القيم الأساسية لهذا الملف 


//###############################################################
//### Config.h Generated with thUndead's openLRS Configurator ###
//###############################################################

//####### TX BOARD TYPE #######
// 0 = Original M1 Tx Board
// 1 = OpenLRS Rx Board works as TX, reads your PPM signals from first servo port.
// 2 = Original M2 Tx Board
// 3 = OpenLRS Rx v2 Board works as TX, reads your PPM signals from first servo port.
#define TX_BOARD_TYPE 2

//####### BOOSTER #######
// 0 = No booster
// 1 = Booster
#define BOOSTER 0

//######### Band Select ##########
// 0 = 433Mhz
// 1 = 459Mhz
#define BAND 0

//######### TRANSMISSION VARIABLES ##########
#define CARRIER_FREQUENCY 435000  //  startup frequency

//####### Freq Hopping #######
// 1 = Enabled  0 = Disabled
#define FREQUENCY_HOPPING 1

//###### HOPPING CHANNELS #######
#define CHNO 6
static unsigned char hop_list[CHNO] = {43,31,39,9,46,18};

//###### RF DEVICE ID HEADERS #######
// Change this 4 byte values for isolating your transmission, RF module accepts only data with same header
static unsigned char RF_Header[4] = {'k','l','r','s'};

//###### SERIAL PORT SPEED #######
#define SERIAL_BAUD_RATE 115200 //115.200 baud serial port speed


  • تعمل FREQUENCY_HOPPING على تغيير التردد في كل مرة ترسل فيها البيانات وهي مفيدة جدا في حال كان أحد 
    الترددات متداخلة مع جهاز ارسال أخر لذالك أتركها كما هي 
  •  المصفوفة hop_list تحتوي على قيم ترددات Frequency Hopping حسب المعادلة التالية و بإمكانك تغيير القيم 
    من 0..255 في حال تداخل الإرسال بأكثر من قناة بشرط ان تضع نفس القيم في إعدادات المستقبل
Frequency = CARRIER_FREQUENCY + (StepSize(60khz)* Channel_Number) 

  • المصفوفة RF_Header تخولك ان تضع اسم فريد لجهازك مؤلف من 4 خانات بشرط ان يكون نفسه في إعدادات المستقبل

ضوبط إضافية

بعد ان تقوم بشحن البرنامج إلى المتحكم  يتوجب عليك ضبط بعض الإعدادات الإضافية وهي 
  1. ضبط خاصية Failsafe للطيران الآمن بعد ان تحدد وضع العصي و مفاتيح نظام الطيران ( مثلا Return to Home في حال وجود GPS) قم بالضغط على المفتاح اللحظي في المرسل حتى تسمع صوت Beep يعلمك بأنه قام بتخزين هذه القيم في ذاكرة المستقبل .
  2. في بعض البلدان يخظر استخدام قوة ارسال عالية لذالك بإمكانك ان تجعل المرسل يعمل بأقل طاقة إرسال بالضغط  مطولا على المفتاح اللحظي في المرسل و من ثم شغيل المرسل (وصل الطاقة له) و إنتظار حتى تسمع صوت Beep طويلة تعلمك بأن المرسل يعمل الأن على اقل قوة إرسال .

 المستقبل

مواصفات المستقبل 

  1. وحدة الإستقبال تعتمد على الشريحة RFM22B 
  2. المتحكم المستخدم ATmega328PU + محمل الإقلاع  Arduino Pro Mini 
  3. المنفذ التسلسلي لتحميل البرامج الثابتة وتطبيقات القياس عن بعد Telemetry
  4. منفذ I2C 3.3V لدعم أجهزة الإستشعار مثل WiiMotionPlus, WiiNunchuk, MEMs gyros, barometers and accelerometers
  5. 9 مخارج متوافقة مع Servo Motor
  6. مخرج PWM لعرض قيمة RSSI قوة الإشارة المستلمة من قبل المرسل .

المخطط النظري للمستقبل

البورد الأصلي للشركة الصانعة










بورد المستقبل من الأعلى


بورد المستقبل من الإسفل

تهيئة البرنامج 

بعد تحميل الملفات و فك الضغط عنها قم بنسخ المجلد Open_LRS_RX إلى المسار المخصص لمشاريع Arduino لديك
و المسار الإفتراضي هو C:\Users\PcName\Documents\Arduino
ومن ثم شغل برمجية Arduino IDE و اختر المشروع من File=> Sketchbook
انتقل إلى ملف الرأس Config.h نحن بحاجة لان نقوم ببعض التعديلات في بعض القيم الأساسية لهذا الملف 


//###############################################################

//### Config.h Generated with thUndead's openLRS Configurator ###

//###############################################################



//####### RX BOARD TYPE #######

// 1 = Rx v1 Board

// 2 = Rx v2 Board

#define RX_BOARD_TYPE 2



//###### SERIAL PPM Type #######

// Plug a jumper between Ch1 and CH3 for switching your Rx to SerialPPM mode

// =Serial PPM Types=

// 0 is classic SerialPPM, disables parallel outputs and uses CH8 for serial PPM output.
// 1 is Mixed PPM, uses CH4 for serial PPM output and last 4 channels (CH5,CH6,CH7,CH8) works normally as ParallelPPM mode.
// 2 Standard SerialPPM on Pin9 (v2RX)
#define SERIAL_PPM_TYPE 0

//######### Band Select ##########
// 0 = 433Mhz
// 1 = 459Mhz
#define BAND 0

//######### TRANSMISSION VARIABLES ##########
#define CARRIER_FREQUENCY 435000  //  startup frequency

//####### Freq Hopping #######
// 1 = Enabled  0 = Disabled
#define FREQUENCY_HOPPING 1

//###### HOPPING CHANNELS #######
#define CHNO 6
static unsigned char hop_list[CHNO] = {43,31,39,9,46,18};

//###### RF DEVICE ID HEADERS #######
// Change this 4 byte values for isolating your transmission, RF module accepts only data with same header
static unsigned char RF_Header[4] = {'k','l','s','r'};

//###### SERIAL PORT SPEED #######
#define SERIAL_BAUD_RATE 115200 //115.200 baud serial port speed
 


نقوم بمطابقة جميع القيم التي عدلناها في  ملف الرأس Config.h الخاص بـ Open_LRS_TX مع هذا الملف بحيث تكون جميع القيم متوافقة لكل من  
RF_Header , FREQUENCY_HOPPING and hop_list
و أخيرا نحدد طريقة إخراج البيانات على دبابيس المستقبل عن طريق الخاصية SERIAL_PPM_TYPE
0- الوضع الكلاسيكي : يتم إخراج البيانات بشكل تفرعي PWM
1-  الوضع المزدوج : يتم اخراج البيانات فيه بحيث تكون القناة رقم 4 للخرج التسلسلي PPM والقنوات  (CH5,CH6,CH7,CH8) بشكل تفرعي PWM
2- الوضع القياسي :  يتم اخراج البيانات تسلسليا PPM على القناة رقم 8

ملفات المشروع Open LRS V1.0

روابط لأهم القطع

إن لم يكن لديك مبرمجة تدعم 3.3V لشحن محمل الإقلاع Bootloader للمتحكم فعليك ان تقتنيها USBASP 
أخيرا إن لم يكن لديك USB 2 TTL تدعم 3.3V عليك أن تقتنيها USB to TTL Serials Adapter

المصدر www.flytron.com

أخيرا ان كنت اصـــبت فمن الله وحـــــده؛ وان اخطــــــأت فمن نفسي ومن الشيطآن

م.عبدالله جلول

    هناك تعليق واحد: