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

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

somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 26-04-2014, 08:35 PM المشاركة 1   
افتراضي جاهز: طريقة وكود لإستخدام ريموت السيارة ويمكن ريموت التلفاز Twitter FaceBook Google+



السلام عليكم
سأطرح في هذا الموضوع طريقة وكود إستخدمته في قراءة النبضات القادمة من قطعة الاستقبال
الموجودة في ريموت الاقفال المركزي للسيارة central lock حيث هي عبارة عن RF modul
ومداها جيد يمكن أن يصل إلى 80 متر هذه القطةأي ال RF modul يمكن شرائها منفصلة مع المرسل الخاص بها
وهي رخيصة لكن غالبا ما تكون في البلدان العربية غالية الثمن بسبب الشحن والتجار ..مثلا
في نابلس فلسطين يصل ثمنها 120 شيكل (35 دولار) أما لوحة الcentral lock الخاصة بالسيارات
كنت قد إشتريتها من محل كماليات سيارات هي وريموتها وأربع محركات الخاصة بأمانات
الابواب ب 100 شيكل ويمكن شرائها بدون المحركات بنصف
السعر ... ليس السعر وحده ما دفعني لإستخدام النظام الخاص بالسيارة ..ولكن غلاف الريموت وتجهيزه
حيث ليس من السهل على الهواة والافراد تجهيز ريموت بشكل لائق ناهيك عن مصدر الطاقة ...ايضا هذه
اللوحة الخاصة بالسيارة تحتوي غالبا حوالي خمس ريليهات ...أي انه يمكن استخدامها مباشرة في التحكم بأي جهاز




تجربتي :
أحضرت لوحة السنترال لوك .. ثم أزلت القطعة المسؤولة عن قراءة الاشارة او الكود المستقبل من خلال ال RF modul وتشغيل الريليهات حسب
ما يتطلبه نظال الاقفال ..وبالصدفة كانت هذه القطعة هي pic16f57 وهي من ما يسمى baseline أي أن التعامل معها يختلف عن
البيك العادي مثل pic16f877a و pic16f628a وليض الوقت لم أشأ أن أدخل في تفاصيلها وطريقة التعامل معها
من خلال الداتاشيت الخاصة بالقطعة التي أزلتها عرفت أين أطراف التغذية .. وأيضا تتبعت الخط القادم من ال rf modul وعرفت مكانه
في ال socket ثم وضعت البيك pic16f628a مكان القطعة التي أزلتها طبعا صنعت بوردة صغيرة لموائمة الاطراف ...في ما يلي الكود والشرح



هذه الصورة اخذتها بإستخدام المبرمجة pickit2 ويمكن استخدام الاوسيليسكوب لقراءة الداتا وتحديد الكود المرسل

الفكرة كالتالي :الريموت سيرسل كود(رقم) معين عندالضغط على أحد الازرار ثم يتم إستقبال هذا الكود (الرقم)
في المستقبل ومن ثم يمرر إلى المتحكم pic16f628a ... على فرض أنه سيرسل الرقم 4 يعني بالثنائي (الباينري) 101 وبما
أننا نتحدث عن نظام إلكتروني إذا سيتم التعبير عن هذا الرقم بإستخدام نبضات إلكترونية ...حيث يعبر عن الواحد المنطقي ب نبضة موجبة طولها
حوالي 1000 مايكرو ثانية (us) ويعبر عن الصفر المنطقي بنبضة طولها 300 مايكرو ثانية ... حقيقة هو سيرسل رقم مكون من 25 خانة قسم من هذه
الخانات ستكون ثابتة والاخرى تختلف من زر إلى آخر للتمييز بينها إذا ما سنقوم به في البيك هو استقبال النبضة وقياس مدتها (طولها ) وتحديد
إذا ما كانت تعبر عن صفر أو واحد .. ثم التأكد من أننا إستلمنا الرقم (الكود ) المطلوب وعلى أساسه نقوم بعمل معين (مثل تشغيل احد الريليهات )

وسيتم قياس طول النبضة (مدتها) بإستخدام التايمر زيرو (بدون إستخدام المقاطعة ) حيث سيظل البرنامج ينتظر حتى تأتي نبضة موجبة أي حتى يتغير
الدخل من 0 فولت إلى 5 فولت
كود:
while(!rxd);
عندها سنقوم بتصفير التايمر
كود:
TMR0=0;
ثم سيظل البرنامج ينتظر حتى تنتهي النبضة
كود:
 while(rxd);
وبمجرد إنتهائها سيقرأ قيمة التايمر
والتي تكون تناسب زمن النبضة ثم نخزن(نضيف) صفر او واحد (حسب طول النبضة) إلى متغير ومع كل عملية نفحص قيمة المتغير بحيث إذا إحتى التسلسل المطلوب
ننفذ أمر معين

كود:
#define rxd PORTB.F3
void main() {
int data1;
  option_reg=0b00000010;
  INTCON=0B10100000;
 CMCON=0X07;
 TRISB.F3=1;
 TRISB.f7=0;
 TRISB.f6=0;
 UART1_Init(1300);
 //---------------------------
 while(1){
 while(!rxd);
 TMR0=0;
 while(rxd);
 if(TMR0>=117 && TMR0<= 125)
  {data1=data1<<1; data1=data1| 1;}
 if(TMR0>=37 && TMR0<= 45)
 {data1=data1<<1;}
 
 switch(data1){
 case 28784:PORTB.f7=0;PORTB.f6=1;break;
  case 28776:PORTB.f6=0;PORTB.f7=0;break;
   case 28772:PORTB.f6=0;PORTB.f7=1;break;
   }
  } }
شرح الكود : بداية المتحكم المستخدم هو pic16f628a وتم اختياره لأن عدد أطرافه يناسب عملنا ... أيضا لإحتوائه على مذبذب داخلي فيمكننا
الاستغناء عن توصيلة الكرستالة ومكثفاتها ..أيضا به خاصية الاستغناءعن توصيلة ال mclr أي أنه يلزمه فقط تغذية ليعمل وينفذ المطلوب منه ..

لقد وصلت طرف الdata القادم من المستقبل على الرجل RB3
كود:
 TRISB.F3=1;
ولقد سميت هذه الرجل ب rxd
كود:
#define rxd PORTB.F3
لسهولة وسرعة التعامل معها خلال كتابة البرنامج
ثم عرفت متغير اسمه data1
كود:
int data1;
ولم أستخدم data فقط لأنها كلمة محجوزة للبرنامج ... وعرفت هذا المتغير على أنه int اي بطول 16 بت .. بما أنه سيتم إستقبال
25 بت وأن أول 7 بت تختلف من زر إلى آخر وباقي البتات ثابتة لكل الازرار فيمكنني أن اجعل البرنامج يفحص وصول تسلسل ال 7 بت الطلوبات فقط
ولكني لزيادة الأمان وخوفا من التشويش سأفحص وصول اول 16 بت بالتسلسل الصحيح .

كود:
 option_reg=0b00000010;
  INTCON=0B10100000;
هذان السطران لضبط إعدادات التايمر زيرو السطر الاول يحدد عدد النبضات القادمة من المذبذب الداخلي التي ستزداد عندها قيمة التايمر يمقدار واحد
هنا ضبطه على أن يزداد واحد بعد وصول 8 نبضات من المذبذب ...وبما أنني أستخدم المذبذب الداخلي والذي قيمته 4 ميجا هيرتز إذا كل نبضة زمنها واحد مايكرو
أي أن التايمر ستزداد قيمته بمقدار واحد بعد كل 8 مايكرو ثانية .. فإذا جاءت نبضة من المستقبل وصفرنا التايمر مباشرة ليبدأ العد من صفر ثم بعد
إنتهاء النبضة قرأنا قيمة التايمر مباشر وجدنا أن قيمته 100 فهذا يعني أن طول النبضة 800 مايكرو ...
في حالتنا سيكون هناك طولان للنبضة يجب أن نفحصهما 300 مايكرو في حالة الصفر وعندها يكون التايمر يحتوي القيمة 300\ 8 ونحن سنفحص اذا ما كانت
قيمت التايمر بن ال 45 و37 حيث هذا الرقم يغطي النبضة 300 مايكرو وأعلى منها قليلا وأقل منها قليلا وهي النبضة التي تعبر عن الصفر المنطقي
كود:
 if(TMR0>=37 && TMR0<= 45)
وعندها سنضيف بت قيمته صفر الى المتغير data1 وذلك من خلال عمل ازاحة له بمقدار بت واحد لليسار
كود:
 {data1=data1<<1;}
وأيضا سنفحص إذا ما كانت قيمة التايمر
بين 117 و125 حيث هذه القيم تغطي النبضة التي تعبر عن الواحد المنطقي وطولها حوالي 1000 مايكرو ثانية ومن ثم نضيف بت قيمته واحد للمتغير نفسه وذلك
من خلال ازاحته بمقدار بت واحد لليسار فيصبح اول بت في المتغير قيمته صفر لذلك نعمل عملية OR المنطقية مع القيمة واحد فيصبح أول بت قيمته واحد
كود:
  {data1=data1<<1; data1=data1| 1;}
بعد كل عمليه(اي بعد استلام انبضة وقياسها وتخزين المناسب في المتغير ) نختبر قيمة المتغير data1
كود:
switch(data1){
فإذا تم استلام الرقم البتات بالتسلسل الصحيح
ليتكون عندنا الرقم المطلوب عندها ينفذ البيك الاوامر التي نحددها له


وبنفس الفكرة يمكن اختبار الكود القادم من ريموت التلفاز ولكني لم اجرب لضيق الوقت

الجيد في هذا الكود البرنامج أنه يتلافى التشويش بسهوله والتشويش في ال rf modul لايستهان به وهذه لصورة للتشويش في حالة لم يكن هناك اي ضغط على احد ازرار الريموت


أعتذر عن عدم تدعيم الشرح بالصور الكافية ...
وأعتذر عن الرد بسرعة على الاستفسارات في حال وجودها بسبب فترة الامتحانات


لا تنسونا من صالح دعائكم

اعلانات

somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 26-04-2014, 08:39 PM المشاركة 2   
افتراضي


اعتذر لهذا الخلل في روابط الصور فمركز تحميل الصور في الخاص بالقرية مخترق
الصورة الاولى
https://fbcdn-sphotos-f-a.akamaihd.n...03828721_n.jpg


الصورة الثانية

https://fbcdn-sphotos-a-a.akamaihd.n...98907086_n.jpg


الصورة الثالثة

https://fbcdn-sphotos-d-a.akamaihd.n...92449630_n.jpg

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

najee22
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2013
المشاركات: 127
نشاط [ najee22 ]
قوة السمعة:0
قديم 26-04-2014, 09:01 PM المشاركة 3   
افتراضي


مشكور اخي الكريم وجزاك الله الف خير على المعلومات القيمه
ونرجو منك المزيد
وفقك الله


mokhtarragab
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2006
المشاركات: 62
نشاط [ mokhtarragab ]
قوة السمعة:0
قديم 29-04-2014, 09:41 AM المشاركة 4   
افتراضي


شكرا اخي الكريم


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 14-06-2014, 08:57 AM المشاركة 5   
افتراضي


اعتذر لهذا الخلل في روابط الصور فمركز تحميل الصور في الخاص بالقرية مخترق
الصورة الاولى
https://fbcdn-sphotos-f-a.akamaihd.n...03828721_n.jpg


الصورة الثانية

https://fbcdn-sphotos-a-a.akamaihd.n...98907086_n.jpg


الصورة الثالثة

https://fbcdn-sphotos-d-a.akamaihd.n...92449630_n.jpg
اخي الكريم انا ايضا من فلسطين و ابحث عن مثل هكذا مشروع و قمت بشراء RF MODULATE من ابو زهره بنابلس و لكن المشروع مش زابط معي ...يسعدني التواصل معك اخي و اذا كان في مجال تبعتلي رقم جوالك او ايميلك ..اذا كان في مجال ........


somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 222
نشاط [ somood ]
قوة السمعة:0
قديم 09-09-2017, 08:11 PM المشاركة 6   
افتراضي


اسف لم انتبه لردك في وقتها
عكل حال هاي ايميلي للتعرف على حضرتك
somood-1991*hotmail.com

إضافة رد

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

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

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


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

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