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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 17-01-2015, 11:02 AM المشاركة 1   



السلام عليكم
RFid reader يستخدم لقراءه البطاقات الممغنطه اي يتم قراءه ID
يستخدم لفتح الابواب او تشغيل اي حمل ببطاقه معينه يعني عندما تبرمجه على بطاقه معينه لفتح باب مثلا فأن هذه البطاقه هي وحيده تسطيع فتح الباب طبعا يمكن برمجه الجهاز على أكثر من البطاقه
انظرو الى هذا الرابط
http://www.qariya.info/vb/showthread...highlight=rfid

هذا مشروع منقول من libstock
http://www.libstock.com/projects/vie...-with-4-relays

عندما قمت بتعديل عليه وتغير البيك الى 18f45k22 لم يعمل مشروع ولكن بعده عدت محاولات وجدت مشكله

على عموم هذا هو كود معدل
كود:
sbit Relay1 at LATC0_bit;
sbit Relay2 at LATC1_bit;
sbit Relay3 at LATC2_bit;
sbit Relay4 at LATC3_bit;

sbit Relay1_Direction at TRISC0_bit;
sbit Relay2_Direction at TRISC1_bit;
sbit Relay3_Direction at TRISC2_bit;
sbit Relay4_Direction at TRISC3_bit;

sbit Cfg_Sw1 at RA0_bit;
sbit Cfg_Sw2 at RA1_bit;
sbit Cfg_Sw3 at RA2_bit;
sbit Cfg_Sw4 at RA3_bit;

sbit Cfg_Sw1_Direction at TRISA0_bit;
sbit Cfg_Sw2_Direction at TRISA1_bit;
sbit Cfg_Sw3_Direction at TRISA2_bit;
sbit Cfg_Sw4_Direction at TRISA3_bit;

sbit OUT_ at RB0_bit;
sbit RDY_CLK at RB1_bit;
sbit SHD at LATB2_bit;
sbit MOD_ at LATB3_bit;

sbit OUT_Direction at TRISB0_bit;
sbit RDY_CLK_Direction at TRISB1_bit;
sbit SHD_Direction at TRISB2_bit;
sbit MOD_Direction at TRISB3_bit;

char Relay1_RFid[8];
char Relay2_RFid[8];
char Relay3_RFid[8];
char Relay4_RFid[8];

char code_error;


void Interrupt() {
  RFid_Interrupt_Proc();
}

void Pause(){
Delay_ms(250);                      // Pause
}

void Beep(){
   Sound_Play(880, 250);            // Play sound at 880Hz for 250ms
}

void Beep100ms(){
   Sound_Play(880, 100);            // Play sound at 880Hz for 250ms
}

void Beep3x(){
   Beep();
   Pause();
   Beep();
   Pause();
   Beep();
   Pause();
}

void Beep1sec(){
   Sound_Play(880, 1000);           // Play sound at 880Hz for 1 sec
}

void Beep_error(){
 Sound_Play(880, 10);
 Sound_Play(1500,20);
 Sound_Play(880, 10);
}


// Main program
void main() {
 ANSELA=0;
 ANSELB=0;
 ANSELC=0;
 ANSELD=0;
 ANSELE=0;
 Relay1 = 0;
 Relay2 = 0;
 Relay3 = 0;
 Relay4 = 0;

 Relay1_Direction = 0;
 Relay2_Direction = 0;
 Relay3_Direction = 0;
 Relay4_Direction = 0;

 Cfg_Sw1_Direction = 1;
 Cfg_Sw2_Direction = 1;
 Cfg_Sw3_Direction = 1;
 Cfg_Sw4_Direction = 1;

 RFid_Init();
 Sound_Init(&PORTE, 1);
 
                                                  // Place the J1 jumper to the Vcc position (at EasyInput Board)
 if (Cfg_Sw1 || Cfg_Sw2 || Cfg_Sw3 || Cfg_Sw4){   // Be sure to PULL-DOWN the CFG switches!
// Enter configuration mode  (if any of the 4 cfg switches is turned ON)
   Beep3x();
   
   if (Cfg_Sw1){
     Relay1 = 1;
     Delay_ms(500);
     RFid_GetID();
     RFid_Store_ID2EEPROM(0x00);
     Relay1 = 0;
     Beep();

   }

   if (Cfg_Sw2){
     Relay2 = 1;
     Delay_ms(500);
     RFid_GetID();
     RFid_Store_ID2EEPROM(0x08);
     Relay2 = 0;
     Beep();

   }
   
   if (Cfg_Sw3){
     Relay3 = 1;
     Delay_ms(500);
     RFid_GetID();
     RFid_Store_ID2EEPROM(0x10);
     Relay3 = 0;
     Beep();

   }
   
   if (Cfg_Sw4){
     Relay4 = 1;
     Delay_ms(500);
     RFid_GetID();
     RFid_Store_ID2EEPROM(0x18);
     Relay4 = 0;
     Beep();

   }
  Delay_ms(2000);
  Beep1sec();
  // Exit configuration mode; Please, turn OFF Relay CONFIG switches and reset the MCU.
 }
 else
 {

  // Start the RFid scanning procedure and control over Relays (Normal operation)
  Beep1sec();
  
  RFid_LoadFromEEPROM(0x00, Relay1_RFid);
  RFid_LoadFromEEPROM(0x08, Relay2_RFid);
  RFid_LoadFromEEPROM(0x10, Relay3_RFid);
  RFid_LoadFromEEPROM(0x18, Relay4_RFid);


   while (1){
      
      RFid_GetID(); // Retreive RFid
      
      Beep100ms();
      
      code_error = 1;

// Check if the retreived code is in the RFid EEPROM base
// If it is then turn ON the appropriate Relay
      if(RFid_Check_ID(Relay1_RFid)){
        Relay1 = 1;
        code_error = 0;
      }
      
      if(RFid_Check_ID(Relay2_RFid)){
        Relay2 = 1;
        code_error = 0;
      }
      
      if(RFid_Check_ID(Relay3_RFid)){
        Relay3 = 1;
        code_error = 0;
      }
      
      if(RFid_Check_ID(Relay4_RFid)){
        Relay4 = 1;
        code_error = 0;
      }
//
      if (code_error) {             // If the RFid is not in the RFid Base then signal ERROR!
          Pause();
          Beep_error();
          Pause();
      }
      else{
          Delay_ms(2000);           // Hold on for 2secs
          Relay1 = 0;               // Release all turned ON Relays
          Relay2 = 0;
          Relay3 = 0;
          Relay4 = 0;
      }
    }
  }
}
اما مكتبه RFid هو ملف RFid_driver بأمتداد mcl
حيث يتم اضافه ملف عن طريق project ثم add file to project

اما الاعدادات



التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 17-01-2015 الساعة 11:40 AM
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً أبو معاذ 2010 ( شكر العضو على هذه المشاركة )
اعجاب أبو معاذ 2010 ( أعجبته المشاركة )
اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 17-01-2015, 11:23 AM المشاركة 2   
افتراضي مكتبه RFid Reader


هذه مكتبه والتي تحمل أسم RFid_driver تحتاج الى
1- تعاريف مداخل ومخارج
كود:
extern sfr sbit OUT_;
extern sfr sbit RDY_CLK;
extern sfr sbit SHD;
extern sfr sbit MOD_;

extern sfr sbit OUT_Direction;
extern sfr sbit RDY_CLK_Direction;
extern sfr sbit SHD_Direction;
extern sfr sbit MOD_Direction;
======================
2- تهيئه درايفر
كود:
RFid_Init();
=====================
3- داله حصول على id خاصه بالبطاقه
كود:
RFid_GetID();
==========================
4- خزن id في ايبروم
كود:
RFid_CRC_Check(char *bit_array)
حيث تحتاج منك العنوان
ملاحظه كل id يتكون من 8 بايتات لهذا عندما تعطي ID الاول للبطاقه الاولى فأن سيتم خزنه في 8 مواقع في ايبروم لنفرض أبتداءا من 0 ولهذا لكي نخزن id للبطاقه الثانيه سنضعها في عنوان أبتداءا من 8
============================

وهناك داله مهمه لكي يعمل rfid reader
كود:
  RFid_Interrupt_Proc();
وهذه داله تعمل مقاطعه خارجيه على بورت B
اي INT0IE_bit و INT1IE_bit

ولهذا الربط المهم جدا لكي يعمل rfid reader
اي يستخدم هذه الكود لتهيئه مداخل ومخارج
كود:
sbit OUT_ at RB0_bit;
sbit RDY_CLK at RB1_bit;
sbit SHD at LATB2_bit;
sbit MOD_ at LATB3_bit;

sbit OUT_Direction at TRISB0_bit;
sbit RDY_CLK_Direction at TRISB1_bit;
sbit SHD_Direction at TRISB2_bit;
sbit MOD_Direction at TRISB3_bit;
اريد أوضح نقطه مهمه وسببت لي مشاكل كثيره وهي أستخدم ريجيستر LAT لاي مخرج و tris لاي مدخل

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 17-01-2015, 11:35 AM المشاركة 3   
افتراضي


بالنسبه للكود موجود في مشاركه 1 هو يعمل على تشغيل 4 ريليات بأربعه بطاقات فكل بطاقه لها id خاص بها
اولا أجعل مدخل سويج على RA0 يساوي 1 ثم أضع البطاقه سيقوم البرنامج بحصول على ID ثم يخزنه في ايبروم مع أعطاء صوت دلاله على انه تمت خزن البيانات

لغرض خزن معلومات البطاقه الثانيه أضغط على reset ثم ثم أبدء العمليه من جديد
طبعا يوجد فيديو في موقع المصدر يوضح عمليه البرمجه

بعد أكمال عمليه خزن نضغط على reset مع جعل كل سويجات على وضع 0
لكي يدخل تشغيل

اذا لم يكن كود واضح سأشرحه لكم
غايه من فتح هذا الموضوع هو أستفاده من RFID reader لعمل ألاقفال كثر أمانا

ملاحظه كل بطاقه لها ID خاص بها وهي ممغنطه
تحياتي


الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:0
قديم 17-01-2015, 11:56 AM المشاركة 4   
افتراضي


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


وننتظر المزيد من الابداع
وفقكم الله لما يحب ويرضى


وما توفيقي إلا بالله العلي العظيم

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً حسن هادي محمود ( شكر العضو على هذه المشاركة )

حمودي الحلو
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2006
الدولة: العراق
المشاركات: 105
نشاط [ حمودي الحلو ]
قوة السمعة:0
قديم 17-01-2015, 01:09 PM المشاركة 5   
Thumbs up


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

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً حسن هادي محمود ( شكر العضو على هذه المشاركة )

mostafabakar
:: مهندس ::
تاريخ التسجيل: Mar 2013
المشاركات: 42
نشاط [ mostafabakar ]
قوة السمعة:0
قديم 02-02-2015, 08:33 PM المشاركة 6   
افتراضي


بارك الله فيك
ونرجو من حضرتك تطويره الى المنتج الموجود بالسوق وهو كلا الاتى
اولا : بطاقه للدخول الى البرمجه اي قراءة البطاقات (1الى 300)اى بعد تمرير هذه البطاقه الماستر للتخزين تمررالبطاقات المراد تخزينها
ثانيا بطاقه لمسح اى بطاقه مخزنه (اى بعد تمرير هذه البطاقه الماستر للمسح تمررالبطاقه المراد مسحها)
ثالثا عند تمرير اى بطاقه مخزنه يعمل ريلاى لمده معينه

إضافة رد

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

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

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


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

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