جدول المحتويات:
فيديو: قارئ AVR / Arduino RFID مع كود UART في C: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:42
RFID هو الجنون ، الموجود في كل مكان - من أنظمة المخزون إلى أنظمة معرف الشارة. إذا كنت قد ذهبت من قبل إلى متجر متعدد الأقسام وسرت عبر تلك الأشياء التي تشبه أجهزة الكشف عن المعادن عند نقاط الدخول / الخروج ، فقد رأيت RFID. هناك عدة أماكن للعثور على معلومات جيدة حول إعداد RFID ، وتركز هذه التعليمات على تثبيت قارئ Parallax RFID (Serial TTL) على AVR ، مع التركيز على كود C المطلوب لقراءة الإدخال التسلسلي. الكود موجود في لغة سي ولا يستخدم أي مكتبات خارجية. في الواقع ، يتحدث 2400 باود مباشرة دون استخدام UART من خلال المزامنة مع معدل الباود الخاص بقارئ RFID وقراءة الدبوس الرقمي المتصل به. متحمس؟ أنا أيضا.
الخطوة 1: احصل على البضائع
ستحتاج إلى قائمة الأجزاء التالية:
- قارئ RFID (المنظر # 28140 39.99 دولارًا)
- علامة RFID (المنظر # 32397 $ 0.99)
- استنساخ AVR أو Arduino (إذا كنت تستخدم AVR مخزونًا ، فستحتاج أيضًا إلى مكثفات بحد أقصى 232 و 5 × 1 فائق التوهج وموصل DE9)
- لوح لحام
اختياري
- 4 رأس الموضع
- الأسلاك
(و max232 وما إلى ذلك لتوصيل معلومات العلامة) يمكنك أيضًا توصيل شاشة LCD المفضلة لديك بدلاً من إرسال بيانات العلامة عبر RS232.
الخطوة 2: قم بتوصيل الأجزاء
الجانب المادي للأشياء سهل جدًا. بدلاً من وضع قارئ RFID مباشرة في اللوح الخاص بي ، اخترت عمل كبل سريع حتى أتمكن من تحريك قارئ RFID بشكل أفضل قليلاً. لذلك ، قمت فقط بقطع 4 وظائف من شريط رأس مقبس أنثى كنت قد كذبت حوله ولحمت بثلاثة أسلاك. أكمل الشريط الكهربائي موصل الغيتو. يحتوي قارئ RFID على 4 وصلات:
- Vcc
- ممكن
- خارج
- Gnd
كما خمنت على الأرجح ، قم بتوصيل Vcc بـ + 5V و Gnd بالأرض. نظرًا لأن قارئ RFID يستهلك قدرًا كبيرًا من الطاقة ، يمكنك ضرب دبوس ENABLE لإيقاف تشغيله وتشغيله على فترات زمنية مختلفة. أنا ببساطة اخترت الاحتفاظ بها. نظرًا لأنه مقلوب ، يمكنك سحبه منخفضًا لتنشيطه. بدلاً من ذلك ، يمكنك توصيله بالأرض. لقد قمت بتوصيله بـ PIND3 لإعطائي خيارات للتمكين / التعطيل إذا قررت ذلك. دبوس OUT هو المكان الذي يرسل فيه القارئ بياناته التسلسلية بعد أن يقرأ العلامة. لقد قمت بتوصيله بـ PIND2. لاحظ ، في Parallax Universe ، اللون الأحمر يعني الانتقال. أي أن مؤشر LED الأخضر يعني أن الوحدة غير نشطة وخاملة ، بينما يشير مؤشر LED الأحمر إلى أن الوحدة نشطة. * هز كتفي * اذهب الرقم.
الخطوة 3: اكتب الكود
لقراءة البيانات من قارئ RFID ، يجب أن تعرف متى يتم إرسال العلامة ، ثم اسحب البيانات من المنفذ التسلسلي ، ثم أرسلها في مكان ما.
تنسيق بيانات قارئ RFID
يرسل قارئ Parallax RFID البيانات بوتيرة جليدية ثابتة تبلغ 2400 باود. علامة RFID هي 10 بايت. من أجل السماح باكتشاف / تصحيح الأخطاء ، نظرًا لأنه يمكن للقارئ أن ينطلق من الضوضاء العشوائية ، فإن RFID 10 بايت مقيد ببدء وإيقاف الحارس. حارس البداية هو تغذية سطر (0x0A) وحارس الإيقاف هو حرف إرجاع (0x0D). تبدو هكذا:
[بدء الحارس | البايت 1 | البايت 2 | البايت 3 | البايت 4 | البايت 5 | البايت 6 | البايت 7 | البايت 8 | البايت 9 | البايت 10 | وقف الحارس]هذه هي الخطوات الثلاث الأساسية.
تعرف متى تم تقديم العلامة
لقد استخدمت Pin Change Interrupt على AVR الذي يخطر البرنامج الثابت بحدوث تغيير على دبوس مراقب. يعد تكوين AVR لذلك أمرًا سهلاً ويتطلب إعداد العلامة وإخبار MCU بالدبوس الذي تريد مراقبته وتعيين بت المقاطعة العام. تكوين PCINT
BSET (PCICR ، PCIE2) ؛ // سجل التحكم في تغيير المقاطعة PCIE2 BSET (PCMSK2 ، PCINT18) ؛ // تمكين مقاطعة تغيير الدبوس لـ PCINT18 (PD2) BSET (SREG، 7) ؛ // تعيين SREG أنا بتاكتب روتين خدمة المقاطعة الخاص بك تريد أن تبقي ISR الخاص بك قصيرًا ، لذا في متجه المقاطعة الخاص بي ، قرأت البايت بأكمله ، شيئًا فشيئًا ، وأخزن البايت في مصفوفة أحرف عالمية متغيرة. أفعل ما يلي في كل مقاطعة:
- تحقق للتأكد من أنني في البداية
- قم بتوسيط التوقيت على النبضة الوسطى عند 2400 باود (سرعة قارئ RFID)
- تخطي بت البداية وتوقف مؤقتًا إلى منتصف البت التالي
- اقرأ كل بت في عدد صحيح بدون إشارة
- عندما يكون لدي 8 بتات ، ضع البايت في مصفوفة أحرف
- عندما جمعت 12 بايت ، دع MCU تعرف أن العلامة قد تمت قراءتها لاكتشاف الأخطاء.
لقد قمت بتعديل كود SoftSerial من Mikal Hart الذي قام بتعديل الكود من David Mellis للتأخيرات المحددة تجريبياً في الإجراءات التسلسلية.
إخراج تحليل RS232
يحتوي روتين PCINT على رمز قراءة خرج RS232 من قارئ RFID. عندما أحصل على 12 بايت (10 بايت RFID بالإضافة إلى الحراس) ، قمت بتعيين bDataReady على 1 واترك الحلقة الرئيسية تعالج البيانات وتعرضها.
// هذا هو معالج المقاطعة ISR (PCINT2_vect) {if (BCHK (PIND ، RFID_IN)) // بت البداية تذهب منخفضة العائد ؛ uint8_t بت = 0 ؛ TunedDelay (CENTER_DELAY) ، // توسيط بت البداية لـ (uint8_t x = 0 ؛ x <8 ؛ x ++) {TunedDelay (INTRABIT_DELAY) ؛ // تخطي قليلاً يا أخي … إذا (BCHK (PIND ، RFID_IN)) BSET (بت ، x) ؛ آخر BCLR (بت ، س) ؛ } TunedDelay (INTRABIT_DELAY) ، // تخطي بت التوقف RFID_tag [rxIdx] = بت ؛ ++ rxIdx ؛ إذا (rxIdx == 12) bDataReady = 1 ؛}
عرض علامتك
في () ، أثناء حلقة for (ever) ، أتحقق لمعرفة ما إذا كان bDataReady قد تم ضبطه ، مما يشير إلى أنه تم إرسال بنية RFID بالكامل. ثم أتحقق لمعرفة ما إذا كانت علامة صالحة (على سبيل المثال ، أحرف البداية والإيقاف هي 0x0A و 0x0D ، على التوالي) ، وإذا كان الأمر كذلك ، فأنا أرسلها إلى اتصال RS232.
لـ (؛ ؛) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Start byte:") ؛ USART_tx_S (itoa (RFID_tag [0]، & ibuff [0]، 16)) ؛ ibuff [0] = 0 ؛ ibuff [1] = 0 ؛ USART_tx_S ("\ n بايت إيقاف:") ؛ USART_tx_S (itoa (RFID_tag [11]، & ibuff [0]، 16))؛ # endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:")؛ لـ (uint8_t x = 1؛ x <11؛ x ++) {USART_tx_S (itoa (RFID_tag [x]، ibuff، 16)) ؛ إذا (x! = 10) USART_tx (& apos: & apos) ؛ } USART_tx_S ("\ n") ؛ } rxIdx = 0 ؛ bDataReady = 0 ، }}
الخطوة 4: الكود والوداع
تحتوي هذه الصفحة على ملف مضغوط يحتوي على الكود ذي الصلة. تمت كتابته في AVR Studio 4.16. إذا كنت تستخدم مفكرة المبرمج أو الكسوف أو السادس (أو أي شيء آخر) ، فستحتاج إلى نسخ ملف Makefile موثوق به في الدليل وإضافة هذه الملفات إلى سطر المصدر. لاحظ أيضًا أن توقيت قسم القراءة التسلسلية يعتمد على 16 ميجا هرتز MCU. إذا كنت تعمل بتردد ساعة مختلف ، فستحتاج إلى تحديد التأخيرات المضبوطة بشكل تجريبي للتركيز على نبضات معدل البث بالباود ، وآمل أن تساعدك هذه التعليمات بطريقة ما. إذا كان لديك أي اقتراحات حول كيفية تحسينه ، فلا تتردد في إخباري!
موصى به:
قارئ RFID القائم على ESP32 مع شاشة تعمل باللمس: 7 خطوات
قارئ RFID المستند إلى ESP32 مع شاشة تعمل باللمس: في هذا الدليل الصغير سأوضح كيفية إنشاء قارئ RFID بسيط بإخراج TFT للتثبيت على الحائط باستخدام وحدة ESP32 DEV KIT C و RC-522 قارئ ثنائي الفينيل متعدد الكلور ومجموعة AZ-Touch ESP. يمكنك استخدام هذا القارئ للوصول إلى الباب أو إنذار الدخيل
كيفية تحميل كود C على AVR باستخدام Arduino Uno كمبرمج: 6 خطوات
كيفية تحميل كود C على AVR باستخدام Arduino Uno كمبرمج: مرحبًا بالجميع: D هنا سأشارك طريقة بسيطة لبرمجة أي شريحة AVR باستخدام Arduino Uno R3 كل ما تحتاجه لنسخ الكود إلى وحدة التحكم الدقيقة الخاصة بك هو Arduino Uno بدلاً من شراء محدد المبرمج الذي يكلف الكثير
عرض توضيحي 4x4 للوحة شطرنج إلكترونية / مع Arduino Mega + قارئ RFID + مستشعرات تأثير القاعة: 7 خطوات
عرض توضيحي 4x4 للوحة الشطرنج الإلكترونية / مع Arduino Mega + قارئ RFID + مستشعرات تأثير القاعة: مرحبًا صناع ، أنا طاهر ميرييف ، خريج 2018 من جامعة الشرق الأوسط التقنية ، أنقرة / تركيا. تخصصت في الرياضيات التطبيقية ، لكنني دائمًا أحببت صنع الأشياء ، خاصة عندما تضمنت بعض الأعمال اليدوية في الإلكترونيات والتصميم والبرمجة
قارئ Arduino RFID UHF: 10 خطوات
قارئ Arduino RFID UHF: الغرض من Instructable هذا هو توفير مثال سهل الفهم لتفاعل متحكم دقيق مع قارئ UHF RFID. القارئ الذي نستخدمه هو Thinkify TR-265. يتكون العرض التوضيحي من ثلاث علامات UHF لكل منها معرف فريد
استخدم قارئ MFRC522 RFID مع Arduino: 5 خطوات
استخدم قارئ MFRC522 RFID مع Arduino: مرحبًا! سأعلمك كيفية عمل ماسح ضوئي رائع وبسيط لبطاقة مفتاح أو مفتاح فوب! إذا كان لديك وحدة RFID MFRC522 ، ومصابيح LED ، ومقاومات ، وأسلاك ، واردوينو أونو ، ولوح تجارب ، وبطارية 9 فولت (اختياري) ، فأنت على ما يرام ،