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

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

الشكل 2. السكن النهائي أثناء التركيبات الكهربائية
من أسفل العلبة نقوم بربط الأرجل المطبوعة - الأجزاء الأولى مرسومة في محرر ثلاثي الأبعاد.

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

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

الشكل 5. الشكل التخطيطي لمجموعة أدوات الجسم
لا تنس أن الجهد على المسامير هو 1.8V (مع لوحة توسعة بالفعل 3.3V) ، لذلك نقوم بتوصيل مصابيح LED من خلال مرحلة الترانزستور - من 1.8V لن تضيء ببساطة.
إلكترونيات
المكونات الرئيسية للنظام - تم إنشاء كاميرا وكمبيوتر لوحة واحدة لبعضها البعض (في حالتنا ، هذا ليس منعطفًا للكلام ، ولكن حقيقة معروفة):

الشكل 6. مجموعة تطوير Intel Joule 570x - كمبيوتر صغير أحادي اللوحة مع Intel Atom رباعي النواة 64 بت على اللوحة وذاكرة بسعة 4 غيغابايت وموصل USB 3.0

الشكل 7. كاميرا Intel RealSense SR300 - كاميرا قصيرة المدى ثلاثية الأبعاد كجهاز رؤية. النطاق الفعال للتعرف على العمق هو 0.2 - 1.2 م.
بعد يومين فقط من بدء المشروع ، تمكنت Intel Joule من الحصول على حالة EOL (نهاية الحياة) ، لكن هذا لم يمنعنا.
كوحدة حاسوبية ، يمكنك تقريبًا استخدام أي لوحة فردية حديثة مزودة بمنفذ USB3.0 استنادًا إلى معالج Intel. على سبيل المثال ، مجموعة تطوير Squared Grove IoT أو MinnowBoard Turbot * . ستقوم Intel NUC بالخدعة أيضًا.
التجمع
نقوم بتثبيت تفاصيل القفل على الصندوق بحيث يتم إغلاق القفل عادة. من أجل أن يرتد الباب عند تشغيله (كما هو الحال في الركائز) ، نقوم بطباعة وتثبيت دافع زنبركي. وتتمثل مهمتها في سحب الباب من المزلاج بضعة مليمترات بعد سحب اللسان ، بحيث لا يغلق الصندوق مرة أخرى بعد إزالة الجهد.

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

الرقم 9. الشكل الكاميرا المثبتة
بالنسبة إلى Intel Joule ، تحتاج إلى حقيبة ، لذلك في المحرر ثلاثي الأبعاد ، يمكنك رسم حالة بالحجم المطلوب مع نوافذ للموصلات.

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

الشكل 11. رسم الغلاف
هناك مدرستان. أولاً ، عند تطوير طقم الجسم ، لم يؤخذ موصل توصيل LED في الاعتبار ، مما أدى إلى حقيقة ما يلي:
- لا يوجد ثقب للكابل / الموصل في العلبة واضطررت إلى حرق الفتحة بمكواة لحام ؛
- تحتوي العلبة المجمعة على ذيل طويل مع مصابيح LED في النهاية.
ثانيًا ، يجب أن تكون الحالة متصلة بطريقة ما ولا شيء أفضل من القيام بذلك باستخدام قطع من الأسلاك نتيجة لذلك لم يتم اختراع ¯_ (ツ) _ / ¯. حول التركيب الصامت صامت بشكل عام. لا يمكنك أن ترى ، ولكن في مكان ما هناك ، تحت الفتحات الحرارية ، يتم إخفاء 3 ترانزستورات وكعب من rezuki.
نموذج المدخنأتذكر هنا صورة تأليف لي:

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

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

الشكل 13. مربع الالكترونيات المجمعة في شكل مغلق
نضع الأمعاء داخل الجسم ونغلق ونمضي في تطوير جزء البرنامج.
طباعة ثلاثية الأبعاد.
تفاصيل القلعة - محبوب من الكثيرين ويكرهني جيش التحرير الشعبى الصينى. المواد جيدة جدًا لطباعة النماذج عالية الدقة ، ولكن من المستحيل تمامًا معالجتها. كما تطفو هذه العدوى عند تسخينها ، وهي خاصية سيئة للغاية للعناصر الهيكلية.
جميع التفاصيل الأخرى من HIPS - IMHO هي أقل نزوة من ABS ، وعمليا لا رائحة عند طباعتها. التحذير الوحيد - حتى رفع درجة حرارة الجدول إلى 95 درجة ، تشوه التفاصيل على الطاولة. وفقًا للتعليمات ، يجب أن تكون درجة حرارة الطاولة حوالي 100 درجة ، ولكن من يقرأها حتى الآن جيدًا؟
جزء البرنامج
إعداد النظام
بادئ ذي بدء ، تحتاج إلى تحديث BIOS على اللوحة لتثبيت صورة نظام التشغيل الذي نحتاجه. استخدمنا هذه وهذه التعليمات من الوثائق الرسمية على موقع إنتل.
بعد ذلك ، بتوصيل الشاشة ولوحة المفاتيح باللوحة ، نقوم بتثبيت توزيع Ubuntu * Desktop 16.04 LTS الخاص لـ Intel Joule في وضع الرسم أو النص المعتاد. إذا كان الكمبيوتر يستخدم Intel NUC أو كمبيوتر آخر ، فستذهب صورة المخزون الخاصة بالنظام أيضًا.
بعد تثبيت نظام التشغيل باستخدام الوسائل العادية ، نتصل بالإنترنت من خلال شبكة Wi-Fi المدمجة. نظرًا لوجود موصل USB واحد فقط على اللوحة ونحتاج إليه لتوصيل الكاميرا ، فإننا نتصل باللوحة عبر ssh. الآن يمكننا تحرير المنفذ من لوحة المفاتيح وتوصيل Intel RealSense.
تثبيت الحزم والتبعيات.
أولاً ، قم بتثبيت Python 3.5.4 ، الذي تمت كتابة مشروعنا عليه. قم بتنزيل وحدة OpenCV Python وإنشاءها من التعليمات البرمجية المصدر ، نظرًا لأن وحدة Python OpenCV غير الرسمية على Intel Joule لا تعمل بشكل صحيح.
تثبيت أو تحديث تبعيات إضافية:
apt install -y --fix-missing build-essential cmake gfortran git wget curl graphicsmagick libgraphicsmagick1-dev libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.0-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python3-dev python3-numpy software-properties-common zip git clone https://github.com/davisking/dlib.git /root/dlib; cd /root/dlib; mkdir build; cd build; cmake .. -DUSE_AVX_INSTRUCTIONS=1; cmake --build . ; cd .. ; python3 setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA pip3 install face_recognition
نضع libmraa - هذه المكتبة مفيدة لنا للتواصل مع الصندوق. تعليمات التجميع المفصلة هنا .
أو يمكنك تثبيت ثنائيات جاهزة من PPA:
sudo add-apt-repository ppa:mraa/mraa sudo apt-get update sudo apt-get install libmraa1 libmraa-dev libmraa-java python-mraa python3-mraa node-mraa mraa-tools
بعد تثبيت كل التبعيات ، يمكننا التحقق من أن كل شيء يعمل بشكل صحيح. للقيام بذلك ، رفع VNC - vnc4server هو كل شيء ، قم بتشغيل عينة للعمل مع الكاميرا وتأكد من أن الكاميرا تعمل.
نقطة التحقق النهائية هي الاستيراد الصحيح لوحدة face_recognition . في الواقع ، هذه هي شبكتنا العصبية ResNet ، الموجهة نحو تحديد الأشخاص في الصورة. لذلك يبدو في العرض التوضيحي للمؤلف:

import face_recognition
بمجرد أن يصبح كل شيء جاهزًا ، نقوم بإلغاء تحميل التعليمات البرمجية المصدر لتطبيقنا من المستودع ونبدأ العمل.
من أجل الراحة ، أضفنا جميع المكتبات على شكل وحدات فرعية لمشروعنا. لتنزيلها ، قم بتحديث الوحدة الفرعية git --init --recursive من دليل المشروع.
العمل
./launcher.py
عند تشغيل قاعدة البيانات لأول مرة ، لا يوجد أشخاص ، لذلك سيتم إغلاق الصندوق. نفتحه يدويًا (لدينا باب خلفي مدمج لهذا - ثقب صغير مقابل اللسان بوضوح) ونقوم بالتدريب.
للقيام بذلك ، قف أمام الصندوق - يضيء مؤشر LED الموجود على اللوحة الأمامية ، مشيرًا إلى وجود شخص معين في مجال رؤية الكاميرا.
نضغط على المفتاح في اتجاه تذكر الوجه ويظهر الإدخال المقابل في وحدة التحكم.

الآن ، إذا أغلقت الدرج ووقفت أمامه ، فسوف يتعرف النظام على وجهه ويفتح الباب بفرح.

ستظهر إدخالات وحدة التحكم في الوصول في وحدة التحكم.

إذا وقف غريب ، فلن يتمكن النظام من التعرف عليه ، ونتيجة لذلك سيظل الباب مغلقاً. إنها مسألة أخرى أن النظام يمكن أن يتضور جوعًا - كانت النسبة الإيجابية الإيجابية الكاذبة في حالتنا عالية جدًا ، وإذا مشيت لفترة طويلة مع مجموعة من الأشياء المختلفة في يديك ، فسيظل حتى اليوم مفتوحًا.
يمكن حل هذا باستخدام قناة العمق - لا يتم استخدامه في الإصدار الحالي ، لأنه لم يكن من الممكن تشغيله بشكل مستقر ، وكان الوقت متأخرًا جدًا لإرسال مشكلة التوافق مع Intel Joule. قام مؤلف Face_recognition بقياس دقة 99.38٪ على العلامة المعيارية للوجوه في Wild Wild
الخلاصة
بالطبع ، يمكن تحسين هذا الدليل بشكل كبير ، ويتم توسيع وظائفه عدة مرات. على سبيل المثال ، يمكنك إضافة تسجيل الدخول الناجح وغير الناجح ، بالإضافة إلى الإدارة المريحة عبر واجهة الويب.
كان المبدأ الأساسي لبناء هذا الجهاز: "لقد أعمته عما كان عليه." أردنا فقط أن نظهر أنه يمكن صنع شيء مثير للاهتمام من المواد المرتجلة.
بفضل Dmitry ( dmitryvodop ) و Sergey للعمل على جزء البرنامج من المشروع.
يتم تحميل جميع النماذج بتنسيق * .stl والشفرة المصدر للبرنامج إلى GitHub بموجب ترخيص MIT.