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

   

fresh_eng
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2009
الدولة: here
المشاركات: 157
نشاط [ fresh_eng ]
قوة السمعة:
قديم 16-11-2013, 08:32 PM المشاركة 129   
ha



السلام عليكم

اخواني هل من احد قام بفك شيفره ريموت المكيف؟؟؟وهل تختلف عن شيفره ريموت التلفزيون؟
وكيف افكها؟؟؟؟

اعلانات

fresh_eng
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2009
الدولة: here
المشاركات: 157
نشاط [ fresh_eng ]
قوة السمعة:
قديم 17-11-2013, 06:39 PM المشاركة 130   
ha


ارجو المساعده

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

alighanim
:: مهندس ::
تاريخ التسجيل: Mar 2014
المشاركات: 17
نشاط [ alighanim ]
قوة السمعة:
قديم 22-03-2014, 03:34 PM المشاركة 131   
افتراضي


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

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

اولا
احب اشكر اخى فى الله سعد بالكانة saad belgana
لما قدمة لي لنجاح هذا المشروع فهو من قام بعمل كود المستقبل وانا قمت فقط
بالتعديل علية بسيطا


ثانيا

اريدكم ان تشاهدوا هذا الفديو للتجربة الحقيقية



IR Sony Remote - YouTube



وبعد المشاهدة
نبدء فى الشغل العملى على طول
اولا

حمل الدائرة والكود والمحاكاة وكل شىء من هنا
http://www.4shared.com/rar/bxKIRhhJ/...y_Remote.html?


انا موصل IR_Link علشان نجرب الدائرة كانها على الحقيقة بالزبط

طبعا سوف تلاحظ انى لم استخدم كريستال او مقاومة على الطرف mclr
هذه من خواص هذا الميكرو 16f628a
يوجد بة مذبذب داخلى ولا يحتاج لكريستال وايضا يمكنك الغاء طرف mclr


"((نيجى بقى لشرح كل الى احنا حطيناه دة))"

1 - كيف نرسل اشعه تحت حمراء ويستقبلها المستقبل ؟؟

يجب ان تعلم ان المستقبل لا يستقبل الاشارة الا اذا كانت بتردد معين
مثل 36khz او 38khz او 40khz

وهناك ما هو اقل او اكثر من ذلك
المهم هو ان نرسل الاشارة بتردد

ولكن كيف يفكك المستقبل الاشارة وما تعنى الارسال بتردد اليس التردد نبضات ؟؟!! اذن سيخرج المستقبل نفس عد النبضات وهو ملا يحدث اذن ماذا يحدث بالفعل

هذه الصورة توضح عمل المستقبل بكل دقة




انظر الى المرسل كيف هى الاشارة وكيف يخرجها المستقبل
المستقبل ليس مجرد ترانزيستور ضوئى يخرج كما ترسل له
لا يوجد به نظام للاستقبال بتردد واخراج الاشارة TTL كما تراها

بدون الدخول فى تفاصيل كثيرة

هناك طريقة سهلة للارسال وهى استخدام PWM او التعديل فى عرض النبضة
والطريقة بسيطة جدا ((الشرح فى الكود تحت باذن الله))

وهى الطريقة المستخدمة فى المشروع وتم الارسال بتردد 38khz

وكما نعلم ان بروتوكول شركة سونى هو من اسهل البروتوكلات الموجودة
لذا قمت باستخدام ريموت سونى وايضا المرسل الذى صنعته يرسل اشارات سونى

كيف هو شكل نبضات بروتوكول سونى ؟؟

هو كا الاتى فى البدء نبضة بداية 2.4 مللى ثانية
وبعد ذلك مساحة بدون ارسال لمدة 600 ميكرو ثانية
وبعد ذلك يبدء الارسال على حسب البايت المرسل
مع العلم انه فى كل بايت مرسل توجد مساحة 600 ميكرو ثانية

الرقم واحد فى البايت يساوى 1200 ميكرو ثانية
اما الصفر فهو يساوى 600 ميكرو ثانية

يعنى هاكذا مثلا اذا اردنا ارسال البايت هذا
10000000
يكون هكذا
2.4 مللى ثانية نبضة البداية
وبعد ذلك 600 ميكرو ثانية مساحة بدون ارسال((اى يتوقف المرسل عن الارسال))
وبعد ذلك
يبدء البايت هنا اول بيت هو 1 اذا 1200 ميكروثانية وبعد ذلك مساحة
والذى يلية هو 0 اذا 600 ميكرو ثانية ارسال ثم مساحة (اى بدون ارسال)
ثم البيت الى بعدة وهكذا

فى الكود الى انشاتة 12 بيت غير نبضة البداية
مقسمون الى 7 بيت كومند
و 5 بيت ادريس او عنوان

الادريس او العنوان فائدة تحدد نوع الجهاز حتى لا يحدث تداخل بين الاجهزة
وفى حالة ريموت التلفزيون يساوى 10000 وهو ثابت على التلفزيون لشركة سونى

والكومند الى هما 7 بيت عبارة عن الاوامر التى تنفزها الازرار بمعنى
الزرار واحد يساوى 0000000 اى 7 اصفار والواحد يساوى 1000000
وهكذا
يعنى اذا رادنا ارسال شفرة الزرار الاول نرسلها بتردد 38khz بهذا الشكل
نبضة البداية 2.4 ثم فراغ ثم 12 بيت بينه فراغات كما وضحت هكذا
000000010000
كما نرى 7 اصفار كومند و 10000 الادريس

ولمعرفة اكواد الريموت كلها اتبع الرابط الاتى
http://www.kucher.org/projects/tvcontrol/

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

ناتى لشرح كود الارسال

سوف اضح شكل الكود لزرار واحد فقط حتى لا يكون طويل
واذا فهمت الفكرة يمكنك عمل كل ازرار الريموت كما تريد

كود:
char x;

void main() {
CMCON=0x07;TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(255);


  while (1) {
  if (porta.f0==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }

      PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
      delay_ms(250);
        }
         }
        }
فى البدء عرفت متغير اسمة X
وبعد ذلك قمت بتحديد الخرج والدخل

ثم جعل PWM يعمل على تردد 38khz وتكتب 38000 كما تروها
بكل هذه البساطة سوف يخرج الميكرو اشارة بتردد 38khz
وبعد ذلك جعلت النبضات تخرج 5 فولت وليس اقل

اذا لم يبقى علينا الا تشغيل الخرج لل PWM وايقافة بالاوقات المطلوبة
على حسب الشفرة بتاعت الريموت

هذا الزر هو رقم 1 فى الريموت
وشفرتة هى
000000010000

اى كل الكومند اصفار وطبعا الادريس ثابت كما قلت

انظر الى النقطه هذه

كود:
PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
ماذا فعلت هنا ؟؟

ببساطة قلت له شغل الخرج لمدة 2.4 مللى ثانية اى 2400 ميكرو ثانية وهى نبضة البداية
وبعد ذلك افصلة لمدة 600 ميكرو ثانية ((المساحة التى تكلمت عنها ))

ثم وهذا هو الاهم
احنا عايزينة يبعت 7 بيت بتوع الكومند كلهم 0
يبقى نكرر الامر بتاع ارسال الرقم 0 7 مرات
كما ترى يشغل الخرج لمدة 600 ميكرو ثانية ثم يفصل لمدة 600 ميكرو ثانية المساحة التى تكلمت عنها
وهكذا 7 مرات يعطينا 0000000 بكل بساطة

ثم 5 بيت بتوع الادريس او العنوان
اولهم الرقم واحد 1
فكتبتة فى الاول هكذا امر بتشغيل الخرج لمدة 1200 ميكرو ثانية
ثم المساحة
تبقى لنا الان من 5 بيت 4 بيت فقط لاننا ارسال اول بيت منهم

اذا نكرر الامر 0 4 مرات وهكذا يصبح لدينا 0000
وفى المجمل 000000010000
وهى الاشارة المطلوبة

وباقى الازرار هكذا
ما يمكن تكرارة نكررة والذى يكون وحيد مثل الرقم واحد نكتبة مرة واحدة هكذا
وهذا يوفر فى المساحة للميكرو

وفى النهاية ينتظر 250 مللى ثانية حتى ترفع يدك من على الزرار


وهذا هو كود ارسال الرقم 2

كود:
    if (porta.f1==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();
      delay_us(600);
      PWM1_Start();delay_us(1200);PWM1_Stop();      //button  2
      delay_us(600);
      for(x=0;x<6;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        delay_ms(250);
        }
ارجوا من المتابعين كتابة الرقم 3 بنفس الطريقة
والاكواد موجودة فى الموقع فوق


وانا عارف ان شرحى مش كويس ههههههههههه
حوال ان تجتهد شوية فى فهم الكود والنقطة الى تقف معاك متترددش انك تسئل

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



ملحوظة هناك الكثير من الطرق لعمل المرسل والمستقبل وهذه احداها

السلام عليكم هل IR -LED & IR-Recieve لهما انواع وارقام


alighanim
:: مهندس ::
تاريخ التسجيل: Mar 2014
المشاركات: 17
نشاط [ alighanim ]
قوة السمعة:
قديم 22-03-2014, 05:03 PM المشاركة 132   
افتراضي


السلام عليكم ،،

هذي الصور يا شباب ،، وتبين المسافة اللي بين المرسل والمستقبل


الصورة قبل ضغط الزر-؛Push button

http://www7.0zz0.com/2012/08/03/22/551424391.jpg


الصورة بعد ضغط الزر - Push button

http://www7.0zz0.com/2012/08/03/22/330299277.jpg



وسأحاول تطبيق الموضوع على أزرار اضافية


تمنياتي
اخي ممكن رقم واسم المستقبل


عبدالله نعمان
:: مهندس متواجد ::
تاريخ التسجيل: May 2006
المشاركات: 173
نشاط [ عبدالله نعمان ]
قوة السمعة:
قديم 14-05-2014, 10:39 AM المشاركة 133   
افتراضي


جزاك الله خيرا..............


نجم الدين الدوس
:: مهندس ::
تاريخ التسجيل: Apr 2014
المشاركات: 10
نشاط [ نجم الدين الدوس ]
قوة السمعة:
قديم 01-07-2014, 10:35 PM المشاركة 134   
افتراضي


السلام عليكم

http://tinypic.com/view.php?pic=zk5z4k&s=8#.U7ML9JR_uWM


جربت 1 و 2 و 3 لكن led ديما تضيء , ما الحل ؟؟؟؟


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 07-07-2014, 10:53 AM المشاركة 135   
افتراضي


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

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

اولا
احب اشكر اخى فى الله سعد بالكانة saad belgana
لما قدمة لي لنجاح هذا المشروع فهو من قام بعمل كود المستقبل وانا قمت فقط
بالتعديل علية بسيطا


ثانيا

اريدكم ان تشاهدوا هذا الفديو للتجربة الحقيقية



IR Sony Remote - YouTube



وبعد المشاهدة
نبدء فى الشغل العملى على طول
اولا

حمل الدائرة والكود والمحاكاة وكل شىء من هنا
http://www.4shared.com/rar/bxKIRhhJ/...y_Remote.html?


انا موصل IR_Link علشان نجرب الدائرة كانها على الحقيقة بالزبط

طبعا سوف تلاحظ انى لم استخدم كريستال او مقاومة على الطرف mclr
هذه من خواص هذا الميكرو 16f628a
يوجد بة مذبذب داخلى ولا يحتاج لكريستال وايضا يمكنك الغاء طرف mclr


"((نيجى بقى لشرح كل الى احنا حطيناه دة))"

1 - كيف نرسل اشعه تحت حمراء ويستقبلها المستقبل ؟؟

يجب ان تعلم ان المستقبل لا يستقبل الاشارة الا اذا كانت بتردد معين
مثل 36khz او 38khz او 40khz

وهناك ما هو اقل او اكثر من ذلك
المهم هو ان نرسل الاشارة بتردد

ولكن كيف يفكك المستقبل الاشارة وما تعنى الارسال بتردد اليس التردد نبضات ؟؟!! اذن سيخرج المستقبل نفس عد النبضات وهو ملا يحدث اذن ماذا يحدث بالفعل

هذه الصورة توضح عمل المستقبل بكل دقة




انظر الى المرسل كيف هى الاشارة وكيف يخرجها المستقبل
المستقبل ليس مجرد ترانزيستور ضوئى يخرج كما ترسل له
لا يوجد به نظام للاستقبال بتردد واخراج الاشارة TTL كما تراها

بدون الدخول فى تفاصيل كثيرة

هناك طريقة سهلة للارسال وهى استخدام PWM او التعديل فى عرض النبضة
والطريقة بسيطة جدا ((الشرح فى الكود تحت باذن الله))

وهى الطريقة المستخدمة فى المشروع وتم الارسال بتردد 38khz

وكما نعلم ان بروتوكول شركة سونى هو من اسهل البروتوكلات الموجودة
لذا قمت باستخدام ريموت سونى وايضا المرسل الذى صنعته يرسل اشارات سونى

كيف هو شكل نبضات بروتوكول سونى ؟؟

هو كا الاتى فى البدء نبضة بداية 2.4 مللى ثانية
وبعد ذلك مساحة بدون ارسال لمدة 600 ميكرو ثانية
وبعد ذلك يبدء الارسال على حسب البايت المرسل
مع العلم انه فى كل بايت مرسل توجد مساحة 600 ميكرو ثانية

الرقم واحد فى البايت يساوى 1200 ميكرو ثانية
اما الصفر فهو يساوى 600 ميكرو ثانية

يعنى هاكذا مثلا اذا اردنا ارسال البايت هذا
10000000
يكون هكذا
2.4 مللى ثانية نبضة البداية
وبعد ذلك 600 ميكرو ثانية مساحة بدون ارسال((اى يتوقف المرسل عن الارسال))
وبعد ذلك
يبدء البايت هنا اول بيت هو 1 اذا 1200 ميكروثانية وبعد ذلك مساحة
والذى يلية هو 0 اذا 600 ميكرو ثانية ارسال ثم مساحة (اى بدون ارسال)
ثم البيت الى بعدة وهكذا

فى الكود الى انشاتة 12 بيت غير نبضة البداية
مقسمون الى 7 بيت كومند
و 5 بيت ادريس او عنوان

الادريس او العنوان فائدة تحدد نوع الجهاز حتى لا يحدث تداخل بين الاجهزة
وفى حالة ريموت التلفزيون يساوى 10000 وهو ثابت على التلفزيون لشركة سونى

والكومند الى هما 7 بيت عبارة عن الاوامر التى تنفزها الازرار بمعنى
الزرار واحد يساوى 0000000 اى 7 اصفار والواحد يساوى 1000000
وهكذا
يعنى اذا رادنا ارسال شفرة الزرار الاول نرسلها بتردد 38khz بهذا الشكل
نبضة البداية 2.4 ثم فراغ ثم 12 بيت بينه فراغات كما وضحت هكذا
000000010000
كما نرى 7 اصفار كومند و 10000 الادريس

ولمعرفة اكواد الريموت كلها اتبع الرابط الاتى
http://www.kucher.org/projects/tvcontrol/

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

ناتى لشرح كود الارسال

سوف اضح شكل الكود لزرار واحد فقط حتى لا يكون طويل
واذا فهمت الفكرة يمكنك عمل كل ازرار الريموت كما تريد

كود:
char x;

void main() {
CMCON=0x07;TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(255);


  while (1) {
  if (porta.f0==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }

      PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
      delay_ms(250);
        }
         }
        }
فى البدء عرفت متغير اسمة X
وبعد ذلك قمت بتحديد الخرج والدخل

ثم جعل PWM يعمل على تردد 38khz وتكتب 38000 كما تروها
بكل هذه البساطة سوف يخرج الميكرو اشارة بتردد 38khz
وبعد ذلك جعلت النبضات تخرج 5 فولت وليس اقل

اذا لم يبقى علينا الا تشغيل الخرج لل PWM وايقافة بالاوقات المطلوبة
على حسب الشفرة بتاعت الريموت

هذا الزر هو رقم 1 فى الريموت
وشفرتة هى
000000010000

اى كل الكومند اصفار وطبعا الادريس ثابت كما قلت

انظر الى النقطه هذه

كود:
PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
ماذا فعلت هنا ؟؟

ببساطة قلت له شغل الخرج لمدة 2.4 مللى ثانية اى 2400 ميكرو ثانية وهى نبضة البداية
وبعد ذلك افصلة لمدة 600 ميكرو ثانية ((المساحة التى تكلمت عنها ))

ثم وهذا هو الاهم
احنا عايزينة يبعت 7 بيت بتوع الكومند كلهم 0
يبقى نكرر الامر بتاع ارسال الرقم 0 7 مرات
كما ترى يشغل الخرج لمدة 600 ميكرو ثانية ثم يفصل لمدة 600 ميكرو ثانية المساحة التى تكلمت عنها
وهكذا 7 مرات يعطينا 0000000 بكل بساطة

ثم 5 بيت بتوع الادريس او العنوان
اولهم الرقم واحد 1
فكتبتة فى الاول هكذا امر بتشغيل الخرج لمدة 1200 ميكرو ثانية
ثم المساحة
تبقى لنا الان من 5 بيت 4 بيت فقط لاننا ارسال اول بيت منهم

اذا نكرر الامر 0 4 مرات وهكذا يصبح لدينا 0000
وفى المجمل 000000010000
وهى الاشارة المطلوبة

وباقى الازرار هكذا
ما يمكن تكرارة نكررة والذى يكون وحيد مثل الرقم واحد نكتبة مرة واحدة هكذا
وهذا يوفر فى المساحة للميكرو

وفى النهاية ينتظر 250 مللى ثانية حتى ترفع يدك من على الزرار


وهذا هو كود ارسال الرقم 2

كود:
    if (porta.f1==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();
      delay_us(600);
      PWM1_Start();delay_us(1200);PWM1_Stop();      //button  2
      delay_us(600);
      for(x=0;x<6;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        delay_ms(250);
        }
ارجوا من المتابعين كتابة الرقم 3 بنفس الطريقة
والاكواد موجودة فى الموقع فوق


وانا عارف ان شرحى مش كويس ههههههههههه
حوال ان تجتهد شوية فى فهم الكود والنقطة الى تقف معاك متترددش انك تسئل

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



ملحوظة هناك الكثير من الطرق لعمل المرسل والمستقبل وهذه احداها

ما شاء الله عليك اخي ..زادك الله من علمه ..في الحقيقه انا فعلا عاجز عن الشكر لاني فعلا محتاج لمثل هاي الدائره و ببحث عنها منذ زمن و فعلا قمت بتنفيذها عمليا و هي تعمل بكفائه عاليه على ريموت سوني ..ولكن اخي اطلب منك ان تكتب تعديلا بسيط على كود الاستقبال او الاصح زياده عليه ..بتعريف او كتابة كود كبسة power في الريموت بحيث نكون قادرين على اطفاء الليدات من خلال هذه الكبسه..يعني انه نقوم كالمعتاد بتشغيل و اطفاء الليد من نفس الكبسه مره off و مره on لكل ليد ولكن ان نقدر على اطفاء الليدات جميعها مره واحده من خلال كبسة البور في حالة كانت مضاءه جميعها بدل ان نطفئ كل ليد لوحده من خلال الكبسه المسؤوله عنه ....ارجوا ان اكون قد وصلت لك الفكره ..و جزاك الله خير ..


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 07-07-2014, 11:19 PM المشاركة 136   
افتراضي


ان شاء الله يا اخى سيكون هناك تحديث لكل ذلك حتى يتثنى للجميع التعديل واستخدام هذه المواضيع بسهولة
ولذلك اريدك انت ان تعدل بنفسك كود الاستقبال لحينها وان كان من باب التعلم
وانا سوف اساعدك قليلا
فالامر سهل كل ما ستفعلة هو معرفة كود زر ال Power
وتضع فى تنفيذ الاوامر الخاصة به ((داخل جملة IF الخاصة بالزر ))
جميع المخارج الموجودة لليدات هكذا مثلا
كود:
PORTB.f0=~PORTB.f0;
فمعنى هذه الاشارة ~ هو عكس حالة الطرف
اى اذا كان ب 0 وهو يعنى ان الليد مطفئ سيحولة الى 1 ويشغل الليد
واذا كان ب 1 اى الليد يعمل سيحولة الى 0 اى يطفئ الليد وهكذا
اى ضغطة من الزر تطفئ الليد وضغطة اخرة تشغلة

كل ما عليك هو وضع كل الاطرف بهذه الشكل

بالتوفيق ان شاء الله



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