الثلاثاء، 28 فبراير 2017

انشئ بنفسك RFID باستخدام اردوينو

سوف نتعلم بعض الأساسيات حول تكنولوجيا RFID واستخدام  اردوينو MEGA مع وحدة تفاعل   ID12LA.
RFID لتقف على تحديد الهوية بترددات الراديو. إذا لم تكن قد لاحظت بعد، انها وجدت في كثير من الأماكن. هذه التقنية هي بالقرب منك الآن!
تم العثور على تكنولوجيا RFID عادة في الفنادق والمكاتب والمصارف والمخازن، وما إلى ذلك حتى يتم زرع رقائق RFID في الحيوانات الأليفة للتأكد من أنهم يمكن تحديد وعاد إلى البيت إذا ضاع. غالبا ما تقارن الباركود. ولكن حتى إذا كان لديه نفس استخدامها بوصفها الباركود، وهما يختلفان في عدد قليل من الطرق.

في هذه المقالة، ونحن نذهب لتعلم بعض الأساسيات حول تكنولوجيا RFID واستخدام MEGA اردوينو إلى اللعب حولها مع وحدة تتفاعل الشعبية، وID12LA. سوف يفاجأ من قبل كيف سيكون من السهل لدمج هذه التقنية في المشروع الالكترونيات القادم!


الهاردوير

Arduino MEGA اذا لم يكن لديك ميغا فليست مشكلة
  • ID12LA
 ID12LA Breakout PCB
اللوح الصغيرة
بعض الأسلاك 
لحام وقصدير

نظرية

قبل أن نتمكن من البدء في أي نوع من البرامج أو التخطيط الأجهزة، فمن الضروري أن يكون هناك فهم أساسيات جدا من RFID.
في أي نظام RFID، وسوف يكون هناك جهاز التي سيكون لها المعلومات، وتسمى عادة علامة أو مرسل، وجهاز آخر من شأنها أن "نظرة" أو "بمعنى" هذه المعلومات، وعادة ما يسمى القارئ أو المحقق. سوف تحتاج كل من المكونات لديك هوائي الخاصة بهم على التواصل و، وهذا يتوقف على نوع التكنولوجيا وتتفاعل، ويمكن تبادل المعلومات واحد أو في كلا الاتجاهين.

لفهم هذا أفضل، ونحن بحاجة إلى فهم هذين النوعين تختلف اختلافا واضحا من تكنولوجيا RFID: السلبي والإيجابي.

دعونا نبدأ مع السلبي. في نظام السلبي، العلامة تتكون من هوائي والدوائر لإيواء . ولكن لا يوجد مصدر الطاقة (أي بطارية)، لذلك كيف يمكن للدوائر داخل الحصول على مدعوم؟
الجواب يكمن في القارئ. في نظام RFID السلبي، فإن القارئ لديها هوائي سوف تنبعث منها طاقة الترددات اللاسلكية التي من شأنها أن تحفز تيار في الدوائر والعلامة. لذلك كلما العلامة تتحرك من خلال المجال الكهرومغناطيسي للقارئ، فإنه يحصل بالطاقة ومن ثم تبث مباشرة كود فريدة من نوعها. في نفس الوقت، والقارئ هو الاستماع أيضا لهذا الرمز.
في اي مدى يحدث كل ذلك؟ ذلك يعتمد على القارئ والعلامة، ولكن ذلك يعتمد إلى حد كبير على وتيرة الذي يبث التعليمات البرمجية. الترددات الثلاثة الرئيسية لتتفاعل 
 هي:
التردد المنخفض: ~ 125 كيلو هرتز. تشتمل عادة على مجموعة من بضعة سنتيمترات
تردد عال: 13.56 ميغاهيرتز. يبلغ مداه يصل الى متر
تردد فائق: ~ 865 ميغاهيرتز. لديها مجموعة من حوالي 30 مترا
مع كل هذا يقال، وID12LA في مشروعنا هو   نوع القارئ الذي يتكون من المدمج في الهوائي والدوائر التي يمكن فك شفرة العلامة وبصق البيانات التسلسلية أن لدينا اردوينو يمكن أن نفهم. بل هو أيضا 125 كيلو هرتز وهو ما يعني أننا بحاجة العلامات التي يمكن استجوابه على هذا التردد.
السلبي RFID قد يبدو ان الامر سيكون له عيوبه بسبب مجموعتها قراءة قصيرة ولكن هذه الأنظمة غير مكلفة بشكل عام. أيضا، منذ العلامات ليس لها البطاريات، فإنها يمكن أن تستمر لفترة طويلة من دون خدمة.

وفيما يلي نوع من 125 كيلو هرتز، علامة سلبية أن ID12LA  :





تنشيط RFID 


كما كنت قد خمنت، هذه  دائما مزودة بالطاقة، وبالتالي يكون لها بطارية على متن الجهاز لنقل التعليمات البرمجية الخاصة بهم.
وبسبب هذا، جنبا إلى جنب مع خيار تشغيل إما 433 ميغا هرتز أو 915 ميغاهيرتز، لديها طويلة جدا قراءة المدى يصل إلى بضع مئات من الأمتار! ولأن لديها البطاريات على الجهاز، فإنها يمكن أن تقترن مع التقنيات الأخرى مثل أجهزة استشعار درجة الحرارة وحدات تتبع نظام تحديد المواقع التي يمكن تفصيل لكثير من أنواع مختلفة من التطبيقات.
وأخيرا، هناك نوعان من الأساليب العلامة 
اشارة المستجيب هي مماثلة لنظام السلبي من حيث بروتوكول الاتصالات. القارئ سوف يرسل إشارة إلى العلامة لطلب رمزها.
وهناك سمة  تفعل عكس ذلك ويرسل إشارة بين الحين والآخر من تلقاء نفسها، ولكن هذا يقلل عمر البطارية.
في الأنظمة إما سلبية أو نشطة، هل يمكن أن يكون العلامة التي هي للقراءة فقط أو للكتابة. قراءة فقط يعني فقط أنه لا يمكنك تغيير بيانات العلامة. للكتابة يعني أنه يمكنك اختيار ما البيانات لوضع داخل العلامة.

يمكن أن تتفاعل به نشطة أيضا الحصول على كبيرة جدا. أقل من نوع واحد من شكل عاملا. على وجه التحديد، وصدمات القوية واحد:


توصيل ID12LA مع اردوينو


وهذا يعني أنه بمجرد قراءة علامة، ويمكن إرسال المعلومات من القارئ في شكل تسلسلي، في 9600 بود، 0 بت التماثل، و 1 بت إيقاف. هذا هو الإعداد الاتصال التسلسلي غير المتزامن  وسيجعل الاتصال اردوينو سريعا.
كل مرة يرسل القارئ من البيانات إلى اردوينو، نحن بحاجة إلى وسيلة لمعرفة متى لبدء التقاط البيانات. تبحث في كيفية ارسال القارئ من البيانات، نجد أنه يستخدم بدء الطابع تحكم النص. في الأساس، وعندما الذاكرة المؤقتة لديه بعض البيانات فيه، يمكننا أن ننظر أولا إلى معرفة ما إذا كان هذا حرف تحكم في قائمة الانتظار. إذا كان الأمر كذلك، وبعد ذلك يمكننا المضي قدما وتسجيل الامر التالي. إن لم يكن، وسوف نستمر في القراءة حتى نراه أو الذاكرة المؤقتة فارغا.
على افتراض أننا نقرأ في بداية  تحكم النص، يمكننا أن قراءة  في أحرف ASCII 10 القادمة من الذاكرة المؤقتة. ثم، لأحرف ASCII 5 المقبلة (2 لاختباري (1)، لإرجاع (1)، لتغذية خط، و 1 لنهاية الطابع تحكم النص)، ونحن سوف قراءتها في ولكن ليس حفظه في أي مكان في برنامجنا.

ومع ذلك، لضمان البث لدينا كان صحيحا،  سوف تحقق ضعف أن نرى نهاية الطابع تحكم النص وينظر. على الرغم من أنه قد نادرا ما يكون هذا هو الحال، قد تفشل نقل وعلينا رمي كل ما فعلناه من النافذة من أجل سلامة النظام.
بمجرد قراءة العلامة وحفظها في مكان ما في برنامجنا، يمكننا استخدام هذه البيانات لكل ما نريد! تطبيق نموذجي هو مراقبة الدخول. كنت تأخذ العلامة المحفوظ ومقارنتها بقاعدة بيانات من العلامات التي تعتبر سارية المفعول (في حالتنا، نحن فقط استخدام العلامة المحفوظ واحد). المشكلة هي، كيف لنا أن نعرف ما هو رمز العلامة قبل أن حفظه في قاعدة البيانات؟ أنها ليست مثل العلامة يأتي مع ورقة من الشركة المصنعة.
كمحاولة للتغلب على هذه والبدء في وضع قاعدة بيانات لأنفسنا، ونحن سوف تحتاج إلى قراءة في رمز ملصق عليه لرصد المسلسل. في المقطع رمز اردوينو، وسوف توفر . وعندما يحدث ذلك، فإننا بحاجة لكتابة هذا الرمز في الأسفل ثم تغيير برنامجنا لتخزين هذا الرمز على تجميع. هذا هو بالأحرى الطريقة اليدوية لفعل ذلك ولكن هذا هو من أجل تعلم أساسيات RFID.
حسنا، لذلك دعونا نلخص ما يجب القيام به رمز اردوينو:
مراقبة المخزن المؤقت التسلسلي للبيانات المتاحة.
عند وجود البيانات وقراءة وحفظه مع بعض التحقق من صحة ضمان سلامة الاتصالات.
لصق البيانات إلى جهاز تسلسلي (في المقام الأول من أجل الإعداد الأولي) ومقارنة هذه العلامة إلى علامات المحفوظة لدينا.
تنفيذ إجراء

التسليك







كود اردوينو


char tag1[10] = {'X','X','X','X','X','X','X','X','X','X'};

//char tag1[10] = {'3','6','0','0','6','6','0','0','5','C'};




void setup() 
{
  Serial.begin(9600);
  Serial1.begin(9600);

  tagDetected = false;
}

void loop() 
{
  if (Serial1.available() > 0)
  {
    delay(250);
    
    if (Serial1.peek() != 2)
    {
      tagDetected = false;
      
    }  
    else
    {
      tagDetected = true;
     
      
      Serial.print("Your tag says it is: ");
      Serial.flush();
      printTag(ourTag);
    }
  }
  else
  {
    tagDetected = false;
  }
  
  if (tagDetected)
  {
    if (isValidTag(ourTag))
    {
      Serial.println("Come on in and have some freshly baked cookies!!!\n");
      Serial.flush();
    }
    else
    {
      Serial.println("No idea who you are but I have released the hounds!!!\n");
      Serial.flush();
    }
  }
}

void flushSerial1Buffer() 
{  
  while (Serial1.available() > 0)
  {
    Serial.read();
  }
}

void fetchTagData(char tempTag[]) 
{  
  Serial1.read();
  
  {
    tempTag[counter] = Serial1.read();
  }
 
  Serial1.read();
  Serial1.read();
  Serial1.read();
  Serial1.read();
  
  
  if (Serial1.read() != 3)
  {    {
      tempTag[counter] = '0';
    } 
  }  
  else
  {
    flushSerial1Buffer();
  }
}


boolean isValidTag(char tempTag[]) 
{  
  boolean result;

      
  return result;
}


boolean compareTags(char tagA[], char tagB[])
{
  boolean result = true;

  {
    if (tagA[counter] != tagB[counter])
    {
      result = false;
      break;
    }
  }
  
  return result;
}

/////////////////
// printTag //
/////////////////
void printTag(char tag[])
{
 
  {
    Serial.print(tag[counter]);
  }
  Serial.println("");
}

تطبيقات RFID

تتفاعل مع التحكم في الوصول - طبيعية جميلة واضحة ولكن مع بعض الخيال، يمكنك تكييفه لأفكار مختلفة.


لتنزيل الكود اضغط على تحميل وادخل باحدى حساباتك كي تستطيع التحميل


ساهم بدعم المدونة

ليست هناك تعليقات:

إرسال تعليق