قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:88
قديم 19-07-2012, 08:01 AM المشاركة 1   
افتراضي تعلم كيفية التعامل مع RF Module وما هى انواعه وكيفية صنع ريموت باستخدامة وبالميكروسى Twitter FaceBook Google+



بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

كل سنة وانتم طييبين وجميع الامه الاسلامية

بمناسبة شهر رمضان الكريم اقدم هذا المجهود البسيط

اولا
ما هو ال 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
وله طريقة خاصة فى التعامل او اننا نزيل هذه الضوضاء من خلال مكثف
((كل محولاتى فشلت بوضع مكثف))
__________________________________________________ _____________
رابعا
ندخل فى التجربة على طول وازاى نقدر نتعامل معاه ونشرح كود الارسال والاستقبال ان شاء الله

هذا هو فديو التجربة على الواقع

لم استخدم كريستالة ولا وصلت 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 يساوى صفر
وهذا يعنى انه طلاما لم يرسل المرسل اى شىء لا تفعل شىء وانتظر
حتى يرسل لك نبضات
وهذا من خلال
كود:
   while(TMR0==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
وهكذا

انتهى ....................



اعلانات

الصورة الرمزية guermi
guermi
:: مهندس ::
تاريخ التسجيل: Apr 2012
المشاركات: 49
نشاط [ guermi ]
قوة السمعة:0
قديم 19-07-2012, 08:14 AM المشاركة 2   
افتراضي


السلام عليكم
الى اكل اعضاء المنتدى

بريحة العطر والمسك والعود


رمضان علينا وعليكم يعود


شهر الخير والكرم والجود


تهاني لكم من قلب ودود

الى funky112233

الله يملأ قلبى وقلبك بالقرآن ويجمعنى بك فى ظل الرحمن
ويبلغنا سويا بركة شعبان وعتق رمضان وغفران الكريم المنان
ويجمعنا ومن يحبنا فى دار الجنان


اشكرك اخي على الموضوع المهم

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:0
قديم 19-07-2012, 08:55 AM المشاركة 3   
Thumbs up


جزاك الله كل خير استاذي فعلا درس مبسط radio fm ,نفع الله بعلمك واسال الله ان يزيدك علما و تقوى و يجعلك من المعتوقين من النار في رمضان انشاء الله


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:88
قديم 19-07-2012, 09:09 AM المشاركة 4   
افتراضي


بسم الله الرحمن الرحيم
اخى
guermi
حقيقى جزاك الله كل خير على الدعوتين دول شكرا لك

اخى
mohamed_amine
شكرا جزيلا لك على دعوتك وان شاء الله لك مثل ما دعوت باذن الله


الصورة الرمزية mohamedalikahli
mohamedalikahli
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2010
الدولة: مصر -- الاسكندرية
المشاركات: 155
نشاط [ mohamedalikahli ]
قوة السمعة:0
قديم 19-07-2012, 02:02 PM المشاركة 5   
افتراضي


بسم الله ما شاء الله ......
عمل راااااااااااااااااااااائع اخي محمد (funcky) ...
و شرح و الله روعة ....
بارك الله فيك و جزاك الله خيرا في هذه اليام المفترجة ....
__________________________________________________ _____________
عندي استفسار .....
عندي مشروع يقيس درجة حرارة ثلاجات و تم عمل هذه الخطوة بحمد الله....لكن المشكلة كيف ارسل درجات الحرارة المقاسة و هي ارقام سالبة الي بيك اخر رئيسي
عن طريق ال rf module ؟؟؟
علما ان كل بيك مخصوص لقياس تلاجة واحدة (و هم تلات تلاجات) و جميعهم يرسلون درجات الحرارة الي بيك اخر رئيسي متصل بالكمبيوتر .....
اظن انه سوف تكون لكل تلاجة ادريس معين خاص بها لتميزها قبل ارسال درجة الحرارة ...... و المشكلة ايضا اني كيف ارسل الارقام السالبة؟؟؟؟
__________________________________________________ _____________
اسف جدا علي الاطالة ....
و السلام عليكم و رحمة الله و بركاته...


الصورة الرمزية sheimy
sheimy
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: Egypt
المشاركات: 789
نشاط [ sheimy ]
قوة السمعة:94
قديم 19-07-2012, 10:26 PM المشاركة 6   
افتراضي


ماشاء الله
بارك الله فيك اخى وجعله فى ميزان حسناتك


crom
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2007
الدولة: بلدى
المشاركات: 130
نشاط [ crom ]
قوة السمعة:0
قديم 20-07-2012, 12:36 AM المشاركة 7   
افتراضي


كل عام وانت والمشتركين بخير
مشكور على المجهود الرائع


الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 240
نشاط [ king5star ]
قوة السمعة:0
قديم 20-07-2012, 12:41 PM المشاركة 8   
افتراضي


شرح جميل وسهل الله ينور .

وكان لدى سؤال هل تستطيع وضع التصميم الخاص بدائرة المرسل والمستقبل لاننى اى رانها بسيطة يمكن عملها دون صنعها ؟؟

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 01:28 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024