Talos ، الحفاظ على سلامتك أثناء تنقلاتك: 5 خطوات
Talos ، الحفاظ على سلامتك أثناء تنقلاتك: 5 خطوات
Anonim
تالوس ، يحافظ على سلامتك أثناء تنقلاتك
تالوس ، يحافظ على سلامتك أثناء تنقلاتك

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

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

يتكون هذا المشروع من ثلاثة أجزاء:

- الوحدة المادية: لقد استخدمت وحدة Puck-js ، والتي تستند إلى الوحدة النمطية nRF52832 ويمكن برمجتها باستخدام Javascript بفضل تطبيق Espruino- Android: لقد قمت بإنشاء تطبيق بسيط يتصل بالوحدة النمطية- غطاء Keychain: لقد قمت بعمل بسيط غطاء لـ Puck JS لتبدو وكأنها سلسلة مفاتيح بسيطة

اللوازم

- وحدة Puck.js (https://www.puck-js.com)

- هاتف Android بإصدار 8.0 على الأقل - جهاز كمبيوتر مثبت عليه Android Studio

- طابعة ثلاثية الأبعاد (اختياري)

الخطوة 1: نظرة عامة

ملخص
ملخص

يجب أن يمنحك هذا الرسم البياني فكرة عن المكونات المختلفة: الكود الموجود في وحدة Puck نفسها بسيط حقًا ، ونحن نترك تطبيق Android يهتم بالاتصال بدلاً من إجراء فحص Puck للهاتف. سنستخدم Bluetooth Low Energy وخصائصه للتواصل بين التطبيق والجهاز ، من أجل الحفاظ على عمر البطارية

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

برمجة عفريت
برمجة عفريت

بعد التحقق على موقع puck-js.com من أن المستعرض والكمبيوتر يدعمان تقنية Web Bluetooth ، انتقل إلى www.espruino.com/ide واتصل بـ Puck عن طريق النقر فوق رمز القابس في الزاوية اليسرى العلوية من الصفحة.

يمكنك بعد ذلك نسخ الرمز من الملف المرفق ولصقه في المحرر وإرساله إلى Puck.

في الجزء الأول من الكود ، نحدد وظيفة Blink and updateCharacteristic ، والتي سنستخدمها لاحقًا في الكود. في دالة updateCharacteristic ، نقوم بتعيين التاريخ الحالي للخاصية للتأكد من أنها ستُنظر إليها بالفعل كقيمة جديدة. ثم نقوم بإخطار أي مشترك بهذا التحديث.

بعد هذه التصريحات ، على الكود الذي سيتم تنفيذه:

يسمح لك الكود الموجود في السطر 56 باسترداد العنوان الفعلي لـ Puck الخاص بك ، والذي ستحتاج إلى harcdode في تطبيق Android: قم بإلغاء التعليق على هذا السطر وسترى العنوان على السجلات على الجانب الأيسر من IDE (انظر المرفق) لقطة شاشة). بمجرد الحصول على هذه القيمة ، يمكنك التعليق على السطر أو تركه على هذا النحو.

بعد ذلك ، نحدد خدمة BLE مخصصة واحدة (المعرفات UUID هي قيم عشوائية) بثلاث خصائص مختلفة ، وكلها قابلة للإخطار. لن نستخدم القيم نفسها لإيصال رسالتنا ولكن فقط حقيقة أنها تغيرت.

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

الخطوة الثالثة: إنشاء تطبيق Android

إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android
إنشاء تطبيق Android

نظرًا لأن التطبيق بأكمله يتضمن بعض المكتبات الثقيلة نوعًا ما ، فقد قمت فقط بتضمين ملفات المصدر وملف gradle للتطبيق داخل الملف المضغوط المرفق. من أجل إنجاحه ، تحتاج إلى تشغيل Android studio وإنشاء مشروع جديد (اختر Empty Activity ، انظر لقطة الشاشة). حدد 26 (Android 8.0 ، Oreo) كحد أدنى لإصدار التطبيق لأن بعض الكود الذي كتبته يستخدم واجهات برمجة التطبيقات التي لم تكن موجودة قبل ذلك. بمجرد إعداد مشروعك ، سيكون لديك ملف build.gradle للتطبيق (تم وضع علامة build.gradle - الوحدة النمطية: التطبيق). افتحه وانسخ المحتوى من ملف zip: سيطالبك IDE بإجراء مزامنة Gradle والتي سيتم خلالها تنزيل مكتبة Nordic التي يعتمد عليها التطبيق. يمكنك بعد ذلك تشغيل التطبيق مرة واحدة والتحقق من أنه يعمل.

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

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

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

إذا كنت تريد معرفة المزيد حول كيفية عمل التطبيق ، فاقرأ:-)

سيعطيك الرسم التخطيطي التالي فهمًا أفضل لما يحدث داخل التطبيق: - النشاط الرئيسي هو الذي سيستخدمه المستخدم مرة واحدة فقط: الغرض الرئيسي منه هو تمكينهم من إدخال رقم هاتف الشخص يرغبون في الاتصال عند استخدام Talos ، وكذلك النص لإرسالهم.

- BTService هي خدمة مقدمة ، مما يعني أنه كلما تم إطلاقها ، فإنها تنشئ إخطارات مستمرة تحد من تشابه الخدمة التي يتم قتلها بواسطة Android. تحاول هذه الخدمة الاتصال بـ Talos باستخدام عملية Bluetooth Low Energy الكلاسيكية - لقد استخدمت رمز عينة Nordic والموارد الأخرى التي يمكنني العثور عليها. في الوقت الحالي ، يبدو محددًا بالنسبة إلى UUID الخاص بـ Puck: يجب عليك تغيير هذه القيمة (private val remoteMacAddress = "CF: EB: 2F: 6E: 33: 30") لمطابقة عنوان جهازك الخاص الذي تم الحصول عليه في الخطوة السابقة. بعد العثور على الجهاز والتحقق من أنه يحتوي على الخدمة التي نبحث عنها ، يتم الاشتراك في التنبيهات الخاصة بالخاصية التي سيتم تحديثها كلما ضغط المستخدم على الزر.

عندما تتلقى BTService تحديثًا لهذه الخاصية ، فإنها ستطلق كائن LocalBroadcast لتتفاعل المكونات الأخرى للتطبيق. سيقوم أيضًا بالاتصال بـ SMSIntentService لإرسال الرسائل القصيرة

- ستقوم SMSIntentService باسترداد رقم الهاتف والنص من SharePreferences من أجل إدخال القيم الأخيرة من قبل المستخدم. سيقوم بعد ذلك بإرسال الرسائل القصيرة تلقائيًا دون أن يتفاعل المستخدم مع التطبيق ، وإضافة آخر موقع معروف للمستخدم إلى الرسائل القصيرة.

الخطوة 4: تصميم الحالة

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

الخطوة 5: وضع كل ذلك معًا

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

طباعة ثلاثية الأبعاد للتصميم الذي أنشأته للتو - لقد استخدمت بعض PLA الأرجواني وأخذت في الأعلى على Puck