جدول المحتويات:
- الخطوة 1: التجهيز
- الخطوة الثانية: التجسس على جهاز التحكم عن بعد
- الخطوة 3: إرسال نفس إطارات البيانات
- الخطوة 4: الاتصال بالنظام
- الخطوة 5: تحسين استهلاك الطاقة
فيديو: اخترق باب المرآب الخاص بك: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
من منا لم يحلم أبدًا بالعودة إلى المنزل فقط باستخدام تطبيق هاتف ، أو القدرة على الاستماع إلى ترام البيانات وإعادة نسخه؟ يسعدني أن أكون قادرًا على مشاركة ما أدركته وكيف تقدمت. لقد بدأت هذا المشروع بعد المرة الثانية التي نسيت فيها مفاتيح …
بالطبع ، الترميز ونوع التعديل وتكرار الناقل ومعلومات اتصال البلوتوث والبيانات التي سأعرضها على سبيل المثال ليست أصلية ، أفضل عدم وجود زوار ؛-).
ينطبق هذا التطبيق على أي كائن قادر على استقبال المعلومات الرقمية عن طريق الموجات الكهرومغناطيسية (باب المرآب ، السيارة ، بعض الستائر …). يتكون النظام بأكمله من كائن متصل عن طريق البلوتوث بهاتف ، وهذا الكائن قادر على إرسال نفس الإطارات مثل جهاز التحكم عن بعد المرتبط بما نريد اختراقه. لقد وضعت هذا الشيء في المرآب الخاص بي ، ويمكنني الاتصال به من الخارج.
الخطوة 1: التجهيز
اللغات المستخدمة: C ++ ، MATLAB ، Typescript ، C ، html.
المعرفة الأساسية في الإلكترونيات الرقمية والاتصالات / معالجة الإشارات.
التكلفة: أقل من 35 دولارًا.
متطلبات الأجهزة:
- NooELEC NESDR: لالتقاط البيانات. تقوم هذه الوحدة الرخيصة جدًا باستخلاص رقمي ، وبالتالي قابلية نقلها العالية. هذا النموذج متوافق مع MATLAB. (18.95 دولارًا)
www.nooelec.com/store/sdr/sdr-receivers/nes…
- Wemos Lolin32 lite: هذا esp32 عبارة عن متحكم دقيق رخيص ومجهز بشبكات Wifi و Bluetooth. لن نستخدم Wifi في هذا التطبيق ، لكن هذا ممكن إلى حد كبير. (4.74 دولارًا أمريكيًا)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: يمنحنا هذا المرسل الراديوي مرونة قصوى ، من تردد الموجة الحاملة المختار إلى نوع التشكيل. (2.63 دولار)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- الأسلاك ، والموصلات ، ومعدات اللحام ، وبطارية ليبو 3.7 فولت للاستقلالية ، وربما راسم الذبذبات ، و / أو محلل المنطق لتصحيح الأخطاء ، وبالمناسبة ، هاتف ذكي …
متطلبات البرنامج:
- MATLAB / Simulink: لالتقاط البيانات. يمكن استخدام برامج بديلة مجانية أخرى ، مثل Audacity لتصور البيانات. (رخصة)
fr.mathworks.com/products.html؟s_tid=gn_ps
- سلسلة أدوات esp-idf: ستُستخدم لبرمجة ملف esp32. يمكن أيضًا استخدام Arduino ID ، لكنه لا يسمح بقدر من الحرية مثل ما سنستخدمه. (مجانا)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: سيساعدنا ذلك في تكوين سجلات cc1101 ، وفقًا لمواصفاتنا. (مجانا)
www.ti.com/tool/SMARTRFTM-STUDIO
- أيوني: لبناء التطبيق. يمكنك اختيار إنشاء تطبيقات أصلية ، لكن Ionic تسمح لنا بتشغيل تطبيقنا على كل من أجهزة Android و IOS ، برمز فقط. لم يتم البحث عن الأداء في حالتنا. (مجانا)
ionicframework.com/
- بيئة التطوير المفضلة لديك …
الخطوة الثانية: التجسس على جهاز التحكم عن بعد
سنبدأ بملاحظة البيانات التي تنتجها أوامر جهاز التحكم عن بعد. للقيام بذلك ، سوف نستخدم دونجل rtl-sdr والهوائي:
fr.mathworks.com/hardware-support/rtl-sdr….
باتباع هذا الرابط ، ستجد حزمة MATLAB ، بالإضافة إلى كتاب مجاني يشرح جميع المشاركين مع شرحهم. لتلخيص ما يهمنا ، تكون بيانات النقل في شكل إشارة IQ: بيانات "I" على مراحل ، مقترنة ببيانات تربيعية "Q". هذه الطريقة تسهل الاتصالات. سنكون مهتمين فقط باستقبال الإشارة على مراحل. سنقوم الآن بجمع المعلومات المادية والرقمية على جهاز التحكم عن بعد ، إذا كان بإمكانك العثور على بعض الوثائق عليها ، فسيكون ذلك أسهل. لم أجد أي شيء. لكي نتمكن من مراقبة الإشارة مؤقتًا ، يجب أن نعرف أولاً ما هو ناقل التردد للإشارة المنبعثة. سنستخدم المثال المقدم مع وثائق الحزمة "التحليل الطيفي باستخدام راديو RTL-SDR" ، لنعرف بالضبط التردد الذي نلاحظ فيه ذروة الطاقة عندما نرسل أمرًا. في حالتي هو 868.22 ميغاهيرتز. تبلغ الترددات "القياسية" لهذا النوع من التطبيقات حوالي 868 ميجا هرتز.
باستخدام هذه المؤشرات ، سنكون قادرين على كتابة كود MATLAB لاستعادة البيانات. تم إرفاق هذا في الصورة والتعليق عليه. تسمح لنا النتيجة بالعثور على نوع التعديل: من خلال استرداد المعلومات الأولية ، وعرض النتيجة مباشرة بعد استعادة الجزء الحقيقي من الإشارة ، يمكننا أن نستنتج أنها ASK / OOK تعديل. في الواقع ، نلاحظ أن التردد ثابت ، ومع ذلك ، فإن الإشارة لها اتساعان فقط: قيمة فارغة وثابتة. يسمح لنا باقي الكود باستعادة غلاف الإشارة المستقبلة ، مما يسهل قراءته لمعرفة الترام. بمجرد العرض ، يمكننا تحديد تعديل النطاق الأساسي: هذا ترميز مانشستر (انظر الصورة المرفقة). يمكننا أيضًا استنتاج معدل الباود (الرموز في الثانية). كل هذه المعلومات التي يتم جمعها ، يمكننا معرفة إطار البيانات. في حالتي ، البايتات التي تم العثور عليها هي: 249 ، 39 ، 75 ، 178 ، 45 ، 200 ، وتكررت عدة مرات ، لضمان استقبال الأمر بشكل جيد. لحسن الحظ ، الرمز لا يتداول ، إطار البيانات هو نفسه دائمًا.
الخطوة 3: إرسال نفس إطارات البيانات
إن Texas Instruments cc1101 مرن للغاية لدرجة أنك ستستمر في تحقيق هدفك ، حتى لو كانت الإعدادات التي وجدتها في الخطوة السابقة مختلفة تمامًا عن الإعدادات الخاصة بي. في الواقع ، سترى في الوثائق ، الصفحة 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) أنها تسمح بإجراء تعديل NRZ و Manchester و FSK و ASK / OOK للوصول إلى ترددات حوالي 433 ميجاهرتز أو 868 ميجاهرتز وأشياء أخرى كثيرة. أنصحك بقراءة الوثائق للتعرف على هذه الوحدة.
في هذا الرابط ستجد كمثال عمل Loboris فيما يتعلق ببناء الوظائف باستخدام هذه الوحدة:
github.com/loboris/ESP32_CC1101/tree/maste…
سنقوم بكتابة الكود الخاص بنا لـ esp32 باستخدام سلسلة أدوات esp-idf (انظر روابط الخطوة الأولى). يمكنك إضافة ملفات الارتباط في الدليل الفرعي لمكونات مشروعك. لتكوين cc1101 الخاص بنا بشكل صحيح ، سنحتاج إلى إصلاح تسجيلاته. تزودنا شركة Texas Instruments ببرنامج يمنحنا قيمة السجلات وفقًا لتكويننا: SmartRF Studio.
فيما يتعلق بي ، أشير للبرنامج الذي أتمنى ترميز مانشستر ، وأن تردد الناقل الخاص بي هو 868.22 ميجاهرتز ، وأن نوع التعديل الخاص بي هو ASK / OOK … وأسمح لك بإدخال المعلمات الخاصة بك. في حالة عدم توفر ترميز النطاق الأساسي ، يمكنك التفكير في ترميز NRZ ، عن طريق زيادة معدل البث بالباود بشكل صحيح ، وتكييف البيانات.
بمجرد تحديد القيم الخاصة بك ، يكون لديك العديد من الخيارات فيما يتعلق باستخدام الوحدة: يمكنك استخدام الوظائف التي قمت بربطها بك ، أو ما فعلته ، فقط استلهم من هذا الرمز ، من أجل تكوين كل شيء في أكثر بطريقة وحشية (انظر الصور المرفقة) ، واستخدام ما نحتاجه فقط.
عندما تتواصل شريحة cc1101 بواسطة SPI ، ستجد في رابط رمز المثال ملف الرأس "spi_master_lobo.h" ، الذي يحتوي على وظائف أسهل لاستخدام SPI أكثر مما لو كان عليك استخدامه مع toolchain فقط. أنضم إليكم في صورة مخطط اتصال CC1101 في SPI ، الصورة مأخوذة من الصفحة 30 من ورقة البيانات CC1101. الأسلاك الأربعة المعروضة هي: CS (Chip Select ، أو SS: Slave Select ، أو هنا CSn) ، CLK (أو SCLK ، الساعة ، المقدمة من قبل السيد) ، MISO (أو SO ، Master In Slave Out) ، و MOSI (أو SI ، Master Out Slave In). في حالتنا ، السيد هو ESP32 ، والعبد هو CC1101. تبدأ الاتصالات عندما يكون دبوس CS منخفضًا بشكل عام.
لا تنس أن تقوم بتمكين استثناءات C ++ للترجمة في خيارات برنامج التحويل البرمجي menuconfig.
الخطوة 4: الاتصال بالنظام
إذا كانت التعليمات البرمجية الخاصة بك تعمل ، فقد قمت بالأمور الأساسية. في هذا الجزء ، سنركز على كيفية إنشاء تطبيق هاتف متصل بالنظام. الحل الأكثر إثارة للاهتمام هو الاتصال عن طريق البلوتوث ، لأنه يسمح باستخدام بروتوكول منخفض الطاقة: Bluetooth Low Energy (BLE). يظهر ملف تعريف التسلسل الهرمي في الرسم المرفق: سنقرأ الأمر ونكتبه في سمة الخدمة. وبالطبع ، جهاز esp32 وهاتفنا الذكي مزودان بتقنية البلوتوث.
تنقسم هذه الخطوة إلى جزأين: جزء esp32 وجزء التطبيق. الصورة المرفقة تظهر وتشرح الأجزاء الرئيسية للرموز.
يمكنك إنشاء UUID الخاص بك باتباع هذا الرابط:
www.uuidgenerator.net/
هذه هي المعرفات التي ستوفر الوصول إلى الخدمات والميزات في ملف تعريف BLE الخاص بنا.
حول كود esp32 BLE ، قام Kolban بعمل رائع جعل جميع وظائف C ++ عالية المستوى متوافقة:
github.com/nkolban/esp32-snippets/tree/mas…
يمكنك وضع هذه الملفات في دليل فرعي للمكونات. خلاف ذلك ، سوف تحتاج إلى مزيد من الوقت لفهم كيفية استخدام BLE مع سلسلة أدوات esp-idf.
بإيجاز ما ستراه في الكود ، نقوم بإنشاء خادم ، وخدمة ، وخاصية ، مع UUIDs المصاحبة ، ونضيف فئة رد نداء معاد تعريفها ، مع طريقة مرتبطة عند الكتابة: عندما نتلقى "O" حرف ، نرسل أمر كتابة إلى cc1101.
بالطبع ، لا تنس تمكين Bluetooth في تكوين مكون Menuconfig.
حول جزء التطبيق ، سوف نستخدم Framework Ionic. يمكنك العثور على مزيد من المعلومات حول هذا الموضوع في الرابط المقدم في الخطوة الأولى ، ولمزيد من التفاصيل حول كيفية استخدام BLE مع Ionic:
ionicframework.com/docs/native/ble/
وأمثلة كتبها دون:
github.com/don/ionic-ble-examples/tree/mas…
يمكنك تعديل مثال "الاتصال" على سبيل المثال. نقوم بفحص الأجهزة في الصفحة الأولى ، والوصول إلى الصفحة الثانية إذا اخترنا الجهاز الخاص بنا. نصل بعد ذلك إلى واجهة حيث يمكنك إضافة زر بالطريقة المعروضة في الصورة: يرسل الأمر "O" مع UUIDs المناسب. يمكنك أيضًا إضافة منشئ الصفحة الأولى طريقة "تمكين" ، وطلب تفعيل البلوتوث في بداية التطبيق.
أوصي بشدة باستكشاف موقع Ionic على الويب ، واكتشاف جميع المكونات (الأزرار ، والتنبيهات ، ومربعات الاختيار …) لتحسين تطبيقك:
ionicframework.com/docs/components/#overvi…
الخطوة 5: تحسين استهلاك الطاقة
بدأنا العمل على الاستهلاك المنخفض ، لذلك دعونا نعمل من خلال.
تسمح لنا أداة esp-idf باستخدام واجهة المستخدم الرسومية للتكوين ، menuconfig: يمكن للعديد من المعلمات تقليل استهلاك esp32. بادئ ذي بدء ، نظرًا لأننا لا نحتاج إلى Wifi ، يمكننا تعطيله في تكوين المكون. في نفس المجلد ، في FreeRTOS ، يمكنك تحديد "تشغيل FreeRTOS على النواة الأولى فقط. وبعد ذلك ، في ESP الخاص ، يمكنك خفض تردد وحدة المعالجة المركزية إلى 80 ميجاهرتز. لا تزال جميع الوظائف تعمل بسرعة الساعة هذه. وأخيرًا ، يمكنك حدد "تمكين المعالج المساعد ذو الطاقة المنخفضة جدًا (ULP). هذا التكوين يجعل الاستهلاك الحالي ينتقل من حوالي مائة مللي أمبير إلى حوالي ثلاثين مللي أمبير. لا يزال هذا كثيرًا …
يمكن لـ ESP32 التعامل مع النوم العميق. فقط النواة منخفضة الطاقة تعمل وتنتظر الاستيقاظ.
انظر هذا الرابط أدناه لمزيد من التفاصيل:
esp-idf.readthedocs.io/en/latest/api-refere…
للأسف ، في آخر إصدار متاح من أداة esp-idf toolchain (3.0) ، التنشيط الوحيد المتاح هو بواسطة أجهزة ضبط الوقت واضطرابات GPIOs. لحسن الحظ ، يعدنا Espressif بأن BLE استيقظ في الإصدار التالي (3.1).
يمكنك أيضًا وضع CC1101 في وضع السكون ، عن طريق إرسال الأمر المناسب في SPI لإيقاف تشغيل الجهاز (انظر ورقة بيانات cc1101 ، أمر SPWD ، صفحة 51). لوضع الجهاز في وضع السكون أو لإيقاظه ، يمكنك وضع دبوس تحديد الشريحة منخفضًا ثم مرتفعًا من دبابيس SPI (المزيد من المعلومات في ورقة البيانات).
يجب أن تكون هذه التكوينات الأخيرة قادرة على جعل استهلاك النظام يمر دون الملي أمبير …
أخيرًا ، لجعل النظام يدوم لأطول فترة ممكنة دون إعادة الشحن ، أو حتى الوصول إلى شهر من الاستقلالية ، اختر بطارية 3.7 فولت بأكبر عدد من الملي أمبير في الساعة. من خلال قياس استهلاك الطاقة في نظامك ، مع عرض مولد أو مقياس التيار المتصل في سلسلة قبل القطب + في نظامك ، يمكنك تقدير الوقت الذي سيستمر فيه نظامك!
موصى به:
فتحت باب المرآب الذكي DIY + تكامل مساعد المنزل: 5 خطوات
فتحت باب المرآب الذكي DIY + تكامل مساعد المنزل: أدر باب المرآب العادي بذكاء باستخدام مشروع DIY هذا. سأوضح لك كيفية بنائه والتحكم فيه باستخدام Home Assistant (عبر MQTT) ولديه القدرة على فتح باب الجراج الخاص بك وإغلاقه عن بُعد. سأستخدم لوحة ESP8266 تسمى Wemos
فتحت باب المرآب الذكي الرخيص: 6 خطوات (بالصور)
فتحت باب المرآب الذكي الرخيص: CreditI قمت بنسخ تطبيق Savjee إلى حد كبير ولكن بدلاً من استخدام Shelly ، استخدمت Sonoff Basic. تحقق من موقعه على الويب وقناة يوتيوب
فتحت باب المرآب مع ملاحظات باستخدام Esp8266 كخادم ويب: 6 خطوات
فتح باب المرآب مع ملاحظات باستخدام Esp8266 كخادم ويب: مرحبًا ، سأوضح لك كيفية عمل طريقة بسيطة للقيام بفتح باب المرآب. - ESP8266 مشفر كخادم ويب ، يمكن فتح الباب في كل مكان في العالم - باستخدام ملاحظات ، ستعرف أن الباب مفتوح أو مغلق في الوقت الفعلي - بسيط ، اختصار واحد فقط لجعلني
جهاز التحكم عن بعد باب المرآب غير المرئي: 7 خطوات (بالصور)
جهاز التحكم عن بعد باب المرآب غير المرئي: في إحدى المرات تركنا سيارتنا متوقفة خارج المرآب وحطم لص نافذة للوصول إلى باب الجراج عن بعد. ثم فتحوا المرآب وسرقوا بعض الدراجات. لذلك قررت إخفاء جهاز التحكم عن بعد عن طريق وضعه في منفضة سجائر السيارة. إنه يعمل من أجل
نسخة لاسلكية من هل باب المرآب الخاص بي مفتوح أم مغلق ؟: 7 خطوات
نسخة لاسلكية من … هل باب المرآب الخاص بي مفتوح أم مغلق؟: أردنا نظام إشارة بسيط ورخيص وموثوق يوضح لنا ما إذا كانت أبواب المرآب لدينا مفتوحة أم مغلقة. هناك الكثير من & quot؛ هل باب الجراج الخاص بي مفتوح & quot؛ المشاريع. الغالبية العظمى من هذه المشاريع من الأسلاك الصلبة. في حالتي تشغيل