بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
كل سنة وانتم طييبين وجميع الامه الاسلامية
بمناسبة شهر رمضان الكريم اقدم هذا المجهود البسيط
اولا
ما هو ال RF Module ؟؟
هو دائرة مصنعه جاهزة يستخدم فيها انظمة مختلفة فى نقل البيانات
وتعمل من خلال موجات الراديو التى تخترق الحواجز
وهى تعمل على ارسال 0 او 1 اى ديجيتال
ويوجد منة انواع ترسل بقدرات مختلفة منها ما يرسل 20 كيلوا بت فى الثانية
ومنها ما يرسل 250 كيلوا بت فى الثانية واكثر من ذلك
ويصل مداه فى انواعه المنتشرة الى 1500 متر فى الهواء بدون حواجز
و 100 متر داخل الحواجز ((هذا بالطبع على حسب الحواجز))
وتوجد انواع اخر بقدرات اخرى .
__________________________________________________ __
ثانيا
ما هى انواع ال RF Module ؟؟
_________________________________________
ملحوظة:
كل الانواع تستخدم نفس المبادىء ما عدا شىء واحد
وهو كيفية نقل البيانات وباى نظام سوف تنقل ..
_________________________________________
يوجد اكثر من نظام للنقل ولكنى سوف اذكر 4 انظمة فقط وهى الاشهر استخداما
1 - OOK ..
وهذا رابط لمن يريد التعرف علية
http://ar.wikipedia.org/wiki/%D8%AA%...BA%D9%84%D9%82
2 - ASK
وهذا رابط لمن يريد التعرف علية
http://ar.wikipedia.org/wiki/%D8%AA%...B3%D8%B9%D8%A9
3 - PSK
وهذا رابط لمن يريد التعرف علية
http://ar.wikipedia.org/wiki/%D8%AA%...B7%D9%88%D8%B1
4 - FSK
وهذا رابط لمن يريد التعرف علية
http://ar.wikipedia.org/wiki/%D8%AA%...B1%D8%AF%D8%AF
__________________________________________________ _____________
ثالثا
سوف اتحدث عن مزايا وعيوب نظامين فقط باختصار
النظام الاول وهو
FSK -1
مميزاته هى
انه لا يتاثر بالضوضاء ولا تشتت موجاتة ولا تتعدد المسارات ولا التدخلات ..
_____
عيوبة
دوائرة معقدة شيأ ما فى تصنيعها.
________
هو الافضل فى الاستخدام مع المشاريع الهامة التى تتطلب دقة نسبة ما فى الارسال والاستقبال ويمكنة التعامل مع الميكرو من خلال uart او manchester code
او اى طريقة تريدها .
____________________________________
النظام الثانى هو
2- ASK
مميزاتة هى
انه اقل تعقيدا فى التصنيع .
_____
عيوبة
يتاثر جدا بالضوضاء و تشتت موجاتة ويتعدد مساراتها و يحدث له تدخلات ..
_____________
للاسف هو النوع المنتشر والذى جن بعضنا بسب انه لا يعمل  
والذى سوف استخدمة لكى نسطيع كلنا العمل علية بدون قلق ولا مشاكل
ان شاء الله
وهذا الفديو يوضح مدى الضوضاء به ويثبت فعلا انه سىء
http://www.youtube.com/watch?v=3QLT4...ature=youtu.be
فى هذا الفديو اوضح ما اكتشفتة بة
وهو انة عند توصيل طرف المرسل بالارضى او ترك الطرف بدون توصيلة بشىء
وجدت ان المستقبل فى هذه الحالة دائما يخرج 0و1 بسرعه طوال الوقت بدون توقف
اما اذا وصلت على طرف المرسل 5 فولت فانه يثبت ولا يخرج اى شىء ويبقى طبيعى
ولهذا سوف تجد اننى عندما اوصل طرف المرسل ب5 فولت ان الليد ينطفاء
وعندما ازيل ال 5 فولت ينور الليد وهذا طبعا بسبب الضوضاء ورداءة هذا النوع
ولهذا هو لا يمكن ان يعمل على uart او manchester code
وله طريقة خاصة فى التعامل او اننا نزيل هذه الضوضاء من خلال مكثف
((كل محولاتى فشلت بوضع مكثف))
__________________________________________________ _____________
رابعا
ندخل فى التجربة على طول وازاى نقدر نتعامل معاه ونشرح كود الارسال والاستقبال ان شاء الله
هذا هو فديو التجربة على الواقع
RF Module Remote - YouTube
لم استخدم كريستالة ولا وصلت 5 فولت على الطرف mclr
لان هذا النوع من الميكرو به كريستال داخلى ويمكن الغاء هذا الطرف منة
_____________
وهذا هو رابط النوع الذى استخدمتة
http://ram-e-shop.com/oscmax/catalog...oducts_id=1133
وهذا هو رابط الدائرة والكود وكل شىء
http://www.4shared.com/rar/AME3vEVn/RF_Remote.html?
وهذه صورة الدائرة

__________________________________________________ __________
((((((((شرح المرسل))))))))
هذا هو كود المرسل
كود:
char x=0;
void main() {
CMCON=0x07;TRISa=255;trisb=0;portb=4;
while(1){
if (PORTA.f0==0){
for(x=0;x<5;x++){portb.f2=0;delay_us(600);portb.f2=1;delay_us(600);}
delay_ms(250);}
if (PORTA.f1==0){
for(x=0;x<6;x++){portb.f2=0;delay_us(600);portb.f2=1;delay_us(600);}
delay_ms(250);}
if (PORTA.f2==0){
for(x=0;x<7;x++){portb.f2=0;delay_us(600);portb.f2=1;delay_us(600);}
delay_ms(250);}
if (PORTA.f3==0){
for(x=0;x<8;x++){portb.f2=0;delay_us(600);portb.f2=1;delay_us(600);}
delay_ms(250);}
}
}
__________________________________________________ ____________
ملحوظة
سوف استخدم الرجل B2 كا خرج لارسال البيانات.
_______________________________________
فى البداية عرفت متغير اسمة x
ويعد ذلك قمت بالتعريفات
اولا
غلق الكومبراتور ثم جعل البروت A دخل والبورت B خرج
وبعد ذلك جعلت الرجل رقم B2 اى الطرف رقم 8 فى الميكرو
تخرج 5 فولت وهذا للقضاء على الوضوضاء كما وضحت .
ثم الدخول فى حلقة تكرارية الى الابد
ثم عمل شفرة بسيطة جدا
وهى ببساطة عند الضغط على الزر
نقوم بعمل غلق و فتح للطرف B2 او الطرف رقم 8 فى الميكرو بعدد معين
فا الزر الاول يفعل ذلك 5 مرات
والزر الثانى 6 مرات
والزر الثالث 7 مرات
والزر الرابع 8 مرات
بكل بساطة هذا هو كود الارسال
_______
وكما وضحت يجب ان يكون خرج المرسل على 5 فولت فى الوضع الطبيعى لتجنب عيوب النظام
ولهذا فانا فى الاول اقوم بجعل الرجل بصفر وهذا يجعل المستقبل يخرج 5 فولت
وانتظر 600 ميكرو ثانية وبعد ذلك اقوم باخراج 5 فولت مرة اخرى على طرف المرسل
وهذا يجعل المستقبل يخرج 0 فولت
اى ان الامر معكوس
الصفر فى المرسل يعنى 5 فولت فى المستقبل
و5 فولت فى المرسل يعنى 0 فى المستقبل
وبعد ذلك انتظر 250 مللى ثانية حتى ترفع يدك من على الزر
انتهى ........
__________________________________________________ _____________
__________________________________________________ _____________
__________________________________________________ _____________
(((((((((شرح المستقبل)))))))))
هذا هو كود المستقبل
كود:
void interrupt()
{
intcon.f2=0;
TMR0=0;
}
void main() {
TRISA=255;TRISB=0;PORTB=0;PORTA=0;cmcon=7;
option_reg=40;intcon=160;TMR0 = 0;
while(1){
while(TMR0==0){}
delay_ms(20);
switch (TMR0){
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
case 7: Portb.F2 = ~Portb.F2;TMR0=0;break;
case 6: Portb.F1 = ~Portb.F1;TMR0=0;break;
case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
default:TMR0=0;break;
}
}
while(1);
}
قمت باستخدام الانتربت والتايمر 0 فى كود الاستقبال
سوف ابدء من الداله الرئيسية void main
فى البداية
جعلت البورت A دخل والبورت B خرج وقفلت الكومبرتور
ثم فعلت التايمر 0 وجعلتة يعمل كعداد للنبضات الخارجية وهى على الطرف A4
ويبدء العد عندما يتغير الجهد على طرفة من 0 الى 5فولت
وجعلت معامل القسمة 1:1 اى ان كل نبضة موجبة على الطرف A4 تعنى 1 فى التايمر 0 نبضة اخرى ويصبح 2 وهكذا
وهذا من خلال option_reg
وبعد ذلك فعلت المقاطعات حتى يعمل التايمر 0 من خلال intcon
وبعد ذلك جعلت قيمة التايمر زيرو تساوى 0 من خلال TMR0 = 0
وبعد ذلك قمت بعمل حلقة تكرارية الى الابد
ثم جعلت الميكرو لا يفعل شىء طلاما التايمر 0 يساوى صفر
وهذا يعنى انه طلاما لم يرسل المرسل اى شىء لا تفعل شىء وانتظر
حتى يرسل لك نبضات
وهذا من خلال ولكن اذا اتت نبضة وهذا يعنى ان المرسل بدء بالارسال فسوف يعد التايمر 0
هذه النبضات اذا كانت 5 نبضات او 6 او 7 او 8 اى كما فى المرسل
وقيمة التايمر 0 تساوى نفس العدد الذى استقبلة
ولكن ترى هنا انى وضعت فترة انتظار 20 مللى ثانية يا ترى لماذا ؟؟؟
هذا الانتظار هو اهم ما فى الكود تقريبا
نحن نعلم ان التايمر 0 او الانتربت يعملان بدون التاثير على عمل الميكرو
اى انهم لا يرتبطان بالميكرو بل يعملان فى نفس الوقت الذى ينفذ فية الميكرو اوامر اخرى
ولكن ما المشكلة فى هذا الامر ؟؟؟؟
المشكلة ببساطة انه عند قدوم النبضة من المرسل سوف يعد التايمر 0
وفى نفس الوقت سوف يختبر الشروط الموضوعه وهكذا سوف يعمل
الشرط الاقل دائما وفى حالتنا هنا 5 لماذا لاننا لم ننتظر حتى تنتهى النبضات وينتهى التايمر0 من العد
ولهذا وضعت انتظار عند قدوم النبضات حتى يعد التايمر 0 النبضات كاملة وبعد ذلك يبدء فى اختبار اذا كانت القيمة تساوى كذا افعل كذا
ولكن هل هذا الانتظار قيمتة عشوائية ؟؟؟؟
بالطبع لا
فهو يجب ان يكون اكبر من قيمة الانتظار فى اعلى نبضات المرسل
بمعنى
اعلى قيمة فى كود المرسل هى التكرار 8 مرات
ولكن يوجد فترة انتظار 600 ميكرو ثانية مرتين اى 1200 ميكرو ثانية
واذا ضربت 8 * 1200 = 9600 ميكرو ثانية اى 9.6 مللى ثانية
فقمت بوضع 20 مللى ثانية زيادة فى الامان والحرص ههههههههههه
وبعد ذلك يختبر الميكرو الشروط وينفذ الاوامر
وفى اخر كل شرط قمت بوضع ان TMR0=0 التايمر 0 يساوى صفر
حتى يعد من جديد عند قدوم نبضة جديدة ولا يحدث اى خطا
وفى نهاية الاختبارات هذا الامر
كود:
default:TMR0=0;break;
اى اذا كانت قيمة التايمر 0 لا تساوى اى من هذه الشرط
اجعل قيمتة ب 0 وعد من اول البرنامج .....
انتهى .......
اما عن داله الانتربت التى فى الاعلى فوضعتها فقط مجرد منظر
اى انى استخدم المقاطعه يعنى
ولكن لا فائدة منها فى هذا الكود فقط
لماذا لان الميكرو لا يذهب اليها الا عندما يعد التايمر 256 عدة
وهذا لا يحدث فى هذا الكود فاخر العدات هى 8 فقط
ولهذا لا قيمة لها فى هذا الكود
__________________________________________________ _____________
ملحوظة اخيرة
انت تسطيع ان ترسل كلام وحروف وقيم وكل شىء بهذه الطؤيقة السهله
فاببساطة مثلا اذا اردنا ارسال الحرف A
وتم تشفيرة بانا سوف نكرر الفتح والغلق 5مرات
اذا تقول فى شروط الاستقبال اذا كانت النبضات 5 اجعل قيمة المتغير كذا تساوى A
وهكذا
انتهى ....................
|
السلام عليكم و رحمة الله
اخي funky انا من المتابعين الجيدين لمنشوراتك و مشاريعك و من المعجبين جدا بد و بفضل الله ثم فضلك قمت بتنفيذ عدة مشاريع في مواضيعك التي طرحت ..منها مشروع الاشعه تحت الحمراء ( المرسل و المستقبل ) و بمساعدة بعض الاخوه المعطائين في هذا المنتدى مثل الاخ حسن هادي جزاه الله خيرا
اخي بالنسبه لهذا الموضوع (ار اف)قمت بشراء وحدة ( ارسال و استقبال) و قمت بتنفيذ برنامجك عمليا كما طرحته حضرتك ..ولكن للاسف لم يعمل معي مثلما هو موجود بالفيديو اللي نزلته ..حيث ان الليدات في المستقبل تقوم بحركات غريبه مش قادر افهمها!!فمثلا مره تضيئ على التوالي و مره تضيئ فلاشر و مره احدى كبسات الارسال تستجيب على عدة ليدات في وقت واحد ...( و يمكن ان يكون هذا الشيئ سواء تم تشغيل المرسل او لا ( حتى عند اطفاء المرسل تبقى الليدات تقوم بهذه الحركات . و هذا يدل على ان المشكله انحصرت مبدئيا في المستقبل .. اخي حاولت بكل الطرق ..بوضع مكثف على مصدرالتغذيه او مقاومه او ..... بدون نتيجه ..ارجو اخي ان تعمل على متابعة هذا الموضوع و اصلاحه سواء هارد وير او سوفت وير ..لا اعلم المشكله .. و لكن انا طبقته مثل ما حضرتك عامل ...الرجاء المتابعه .. فأنا انتظر ردك على احر من الجمر .....الى اللقاء