جدول المحتويات:
- الخطوة 1: وحدات الاستشعار
- الخطوة 2: الأجهزة
- الخطوة الثالثة: البرمجيات
- الخطوة 4: تسجيل البيانات
- الخطوة 5: نموذج برنامج الاستقبال
فيديو: وحدة فك مستشعر Arduino RF: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
كان منزلي السابق مزودًا بنظام أمان مثبت مسبقًا يحتوي على أجهزة استشعار للباب وجهاز استشعار للحركة ولوحة تحكم. كان كل شيء متصلًا بصندوق إلكترونيات كبير في خزانة وكانت هناك تعليمات حول توصيل هاتف أرضي للاتصال تلقائيًا في حالة حدوث إنذار. عندما حاولت اللعب بها ، اكتشفت أن أحد مستشعرات الباب لم يتم تثبيته بشكل كامل وأن الآخر كان متقطعًا بسبب المحاذاة غير الصحيحة. الكثير من أجل التثبيت الاحترافي الذي تم الترويج له على بطاقة العمل الخاصة بشركة الأمن. كان الحل في ذلك الوقت هو شراء اثنين من كاميرات مراقبة الإنترنت وجهاز إنذار لاسلكي رخيص الثمن.
تقدم سريعًا إلى اليوم وهذا الإنذار اللاسلكي موجود في صندوق في الطابق السفلي. بعد اقتناء جهاز استقبال 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 في "حلقة" ليناسب احتياجاتك.
موصى به:
مستشعر التنفس DIY مع Arduino (مستشعر التمدد الموصل المحبوك): 7 خطوات (بالصور)
مستشعر التنفس DIY مع Arduino (مستشعر التمدد الموصل المحبوك): سيأخذ مستشعر DIY هذا شكل مستشعر التمدد الموصل المحبوك. سوف يلتف حول صدرك / معدتك ، وعندما يتوسع صدرك / معدتك وينكمش ، فإن المستشعر ، وبالتالي بيانات الإدخال التي يتم تغذيتها إلى Arduino. وبالتالي
مستشعر مغناطيسي RaspberryPi 3 مع مستشعر ميني ريد: 6 خطوات
مستشعر مغناطيسي RaspberryPi 3 مع مستشعر Mini Reed: في هذا Instructable ، سننشئ مستشعر مغناطيسي IoT باستخدام RaspberryPi 3. يتكون المستشعر من LED وجرس ، وكلاهما يعمل عند استشعار مغناطيس بواسطة مستشعر القصب الصغير
مستشعر حجب الضوء من Arduino (وحدة قاطع الصور) - الحفاظ على أمان بطاقاتك (نموذج أولي): 4 خطوات
مستشعر حجب الضوء من Arduino (وحدة قاطع الصور) - الحفاظ على أمان بطاقاتك (نموذج أولي): هذا المشروع هو نموذج أولي وفي هذا المشروع سأناقش كيف يمكن الاحتفاظ ببطاقاتك - مثل بطاقات الائتمان وبطاقات الخصم وبطاقات الهدايا آمنة. ألق نظرة على الصور أعلاه لترى كيف يعمل هذا المشروع. دعني أقدم لك لمحة عن
من عند بابي؟ مشروع مستشعر الحركة / مستشعر المدى PIR: 5 خطوات
من عند بابي؟ مشروع مستشعر الحركة / مستشعر المدى PIR: يهدف مشروعنا إلى استشعار الحركة عبر PIR وأجهزة استشعار المسافة. سيخرج كود Arduino إشارة مرئية وصوتية لإخبار المستخدم بوجود شخص ما بالقرب منه. سيرسل كود MATLAB إشارة بريد إلكتروني لتنبيه المستخدم بأن شخصًا ما قريب. هذا الجهاز
كيفية استخدام وحدة مستشعر الأشعة تحت الحمراء TCRT5000 مع Arduino UNO: 7 خطوات (بالصور)
كيفية استخدام وحدة مستشعر الأشعة تحت الحمراء TCRT5000 مع Arduino UNO: في هذا البرنامج التعليمي ، سنعلمك بعض الأساسيات حول استخدام وحدة مستشعر الأشعة تحت الحمراء TCRT5000. توضح لك هذه العناصر الأساسية القيم التناظرية والرقمية على الشاشة التسلسلية. الوصف: يستخدم مستشعر الأشعة تحت الحمراء العاكس جهاز TCRT5000 لاكتشاف اللون و