جدول المحتويات:

وحدة فك مستشعر Arduino RF: 5 خطوات
وحدة فك مستشعر Arduino RF: 5 خطوات

فيديو: وحدة فك مستشعر Arduino RF: 5 خطوات

فيديو: وحدة فك مستشعر Arduino RF: 5 خطوات
فيديو: How to Decode RFID Cards with RC522 RFID Reader: Step-by-Step Tutorial 2024, يوليو
Anonim
جهاز استشعار اردوينو RF
جهاز استشعار اردوينو RF

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

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

الخطوة 1: وحدات الاستشعار

وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار
وحدات الاستشعار

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

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

الخطوة 2: الأجهزة

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

لقد قمت في الأصل ببناء وحدة فك ترميز استشعار باستخدام متحكم PIC ولغة التجميع. لقد كنت ألعب مع متغيرات Arduino مؤخرًا لذا اعتقدت أنني سأرى ما إذا كان بإمكاني تكرارها. يتم عرض التخطيطي البسيط أعلاه وهناك أيضًا صورة للنموذج الأولي الخاص بي. كل ما فعلته هو استخدام ثلاثة أسلاك توصيل مشتركة للانتقال من Arduino Nano إلى لوحة استقبال الترددات اللاسلكية. كل ما هو مطلوب هو الطاقة وخط بيانات واحد.

إذا قرأت Instructable الخاص بي على "عرض الوقت والطقس 3 في 1" ، فسترى أنني أستخدم جهاز استقبال RXB6 ، 433 ميجا هرتز. قد تكون قادرًا على جعل أجهزة الاستقبال الرخيصة حقًا تعمل على المدى القصير المطلوب لهذا المشروع ولكني ما زلت أوصي باستخدام جهاز استقبال فائق التغاير.

الخطوة الثالثة: البرمجيات

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

يتم تحديد أوقات نبضة المزامنة وبتات البيانات باستخدام إدخال المقاطعة الخارجية INT0 لتشغيل معالج المقاطعة. يمكن أن يؤدي INT0 إلى الارتفاع أو الانخفاض أو كلا الحافتين أو عند مستوى منخفض ثابت. يتم مقاطعة البرنامج على كلا الحافتين ويقيس مقدار الوقت الذي يظل فيه النبض منخفضًا. يعمل ذلك على تبسيط الأمور لأن بدء / مزامنة الرسالة عبارة عن نبضة منخفضة المستوى ويمكن تحديد البتات بناءً على وقتها المنخفض المستوى.

يحدد معالج المقاطعة أولاً ما إذا كان العدد الملتقط طويلاً بما يكفي ليكون نبضة بدء / مزامنة. الأجهزة المختلفة التي أملكها تستخدم نبضات متزامنة تبلغ 4 و 9 و 10 و 14 مللي ثانية. عبارات التعريف الخاصة بقيم الحد الأدنى / الحد الأقصى المسموح بها للمزامنة مقدمة في البرنامج ويتم تعيينها حاليًا لمدة 3 و 16 مللي ثانية. تختلف أوقات البت أيضًا بين أجهزة الاستشعار ، لذا يجب أن تأخذ خوارزمية فك التشفير ذلك في الاعتبار. يتم حفظ وقت البت للبت الأول كما هو وقت البت التالي الذي يختلف بشكل كبير عن البتة الأولى. لا يمكن إجراء مقارنة مباشرة لأوقات البت اللاحقة ، لذا يتم استخدام تعريف "عامل المراوغة" ("التباين"). يبدأ فك تشفير البتات بافتراض أن بتة البيانات الأولى تُسجل دائمًا كمنطق 1. يتم حفظ هذه القيمة ثم استخدامها لاختبار البتات اللاحقة. إذا كان عدد بت البيانات اللاحقة داخل نافذة التباين للقيمة المحفوظة ، فسيتم تسجيله أيضًا كمنطق 1. إذا كان خارج نافذة التباين للقيمة المحفوظة ، فسيتم تسجيله كمنطق 0. إذا كان المنطق 0 وقت البت أقصر من وقت البت الأول ، ثم يتم تعيين علامة لإعلام البرنامج بضرورة عكس البايت قبل العرض. الحالة الوحيدة التي تفشل فيها هذه الخوارزمية هي عندما تكون وحدات البت في الرسالة كلها صفراً. يمكننا قبول هذا القيد لأن هذا النوع من الرسائل لا معنى له.

تحتوي جميع المستشعرات التي أهتم بها على طول رسالة يبلغ 24 بتًا من البيانات ولكن البرنامج لا يقتصر على هذا الطول. يوجد مخزن مؤقت يصل إلى سبعة بايت (يمكن إضافة المزيد) ويحدد الحد الأدنى والحد الأقصى لطول الرسالة بالبايت. تم إعداد البرنامج لتجميع البتات وتحويلها إلى بايت وتخزينها مؤقتًا ثم إخراجها بتنسيق ASCII عبر المنفذ التسلسلي. الحدث الذي يقوم بتشغيل إخراج الرسالة هو استلام نبضة بدء / مزامنة جديدة.

الخطوة 4: تسجيل البيانات

تسجيل البيانات
تسجيل البيانات

تم إعداد البرنامج لإخراج البيانات المحولة كأحرف ASCII عبر الإخراج التسلسلي (TX) من Arduino. عندما صنعت نسخة الموافقة المسبقة عن علم ، كنت بحاجة إلى الاتصال ببرنامج طرفي على جهاز الكمبيوتر لعرض البيانات. تتمثل إحدى ميزات Arduino IDE في أنه يحتوي على وظيفة Serial Monitor مضمنة. لقد قمت بتعيين معدل المنفذ التسلسلي على 115.2k ثم قمت بتعيين نافذة Serial Monitor على نفس المعدل. تُظهر لقطة الشاشة هنا عرضًا نموذجيًا بمخرجات من مجموعة متنوعة من أجهزة الاستشعار التي أمتلكها. كما ترى ، لا تكون البيانات في بعض الأحيان مثالية ولكن يمكنك بسهولة تحديد القيمة الحقيقية لكل جهاز استشعار.

الخطوة 5: نموذج برنامج الاستقبال

برنامج استقبال العينة
برنامج استقبال العينة

لقد قمت بتضمين نموذج قائمة البرامج التي توضح كيف يمكنك استخدام المعلومات التي تم جمعها لتلقي مجموعة محددة من الرموز لتطبيقك. تم إعداد هذا المثال لمحاكاة أحد منافذ Etekcity البعيدة الخاصة بي. يقوم أحد الأوامر بتشغيل مؤشر LED المدمج في Nano (D13) بينما يقوم الأمر الآخر بإيقاف تشغيل مؤشر LED. إذا لم يكن لديك مؤشر LED مدمج في Arduino ، فقم بإضافة المقاوم و LED كما هو موضح في الرسم التخطيطي. في تطبيق حقيقي ، ستعمل هذه الوظيفة على تشغيل / إيقاف تشغيل الطاقة لمأخذ كهربائي (باستخدام مرحل أو التيرستورات). يتم تحديد أوقات المزامنة وأوقات البت وبايت البيانات المتوقعة مقدمًا لتسهيل التعديل. يمكنك استخدام أي من خطوط البيانات المتبقية لتشغيل / إيقاف تشغيل الأشياء ، وما إلى ذلك لتطبيقك المحدد. ما عليك سوى إضافة رمز الأمر القابل للتطبيق الذي يحدده واستبدال منطق تشغيل / إيقاف LED في "حلقة" ليناسب احتياجاتك.

موصى به: