Ouvrez Sesame ou Intel RealSense et ResNet Guard Fruit


Ce n'est un secret pour personne que dans le monde moderne de la haute technologie, nous devons constamment confirmer notre identité et nos droits d'accès - avec des mots de passe, des étiquettes sans contact, des empreintes digitales, etc. Vous pouvez le faire avec une empreinte visuelle - le visage de l'utilisateur. Regardez simplement notre gadget, comment il comprend qu'il y a un utilisateur autorisé devant lui et déverrouille l'écran.


Nous avons décidé de mettre en œuvre un schéma similaire en utilisant les matériaux disponibles et les solutions open source. En tant qu'objet physique, qui aura la "sélectivité pour les découvertes" correspondante, un coffre-fort a été choisi.


Tous les détails sous la coupe.


Logement



Figure 1. Processus d'assemblage du boîtier


Le boîtier est composé de morceaux de panneaux MDF stratifiés de 40 x 40 cm, reliés par des vis de meubles. Par la suite, tous les joints ont été recouverts d'une couche épaisse de mastic acrylique sur bois, pas très soigneusement poncé, après quoi tout le corps a été recouvert à plusieurs reprises d'une épaisse couche de peinture acrylique blanche. Peindre, attendre que la couche actuelle sèche, poncer, couvrir avec la couche suivante. Après trois couches, j'ai obtenu une finition mate blanche uniforme, sur laquelle j'ai marché une fine couche d'émail blanc brillant.



Figure 2. Boîtier final lors de l'installation électrique


Du bas du boîtier, nous fixons les pieds imprimés - les premières parties dessinées dans un éditeur 3D.



Figure 3. Jambes. PLA en plastique


Électricien


La serrure du coffre-fort a été fabriquée à partir d'un entraînement hybride de la serrure centrale et de la languette de la porte intérieure - à partir de cette dernière, nous jetons le manchon rotatif et faisons un crochet sous la traction.
À l'aide de pièces imprimées, tout est assemblé dans un seul design et monté sur la porte. La plaque principale elle-même est assez mince (3 mm) et se plie facilement, mais tout change après l'installation. La conception finale était suffisamment solide pour de nouvelles expériences.



Figure 4. Ensemble de mécanisme de verrouillage


Bien sûr, si nous parlons d'un système de contrôle d'accès à part entière, vous pouvez acheter une serrure électrique tout en métal prête à l'emploi en l'installant dans un coffre-fort en métal normal. Mais non.


En plus de la serrure, nous avons également besoin d'une remorque pour contrôler l'état de la porte, d'un interrupteur à trois positions pour contrôler le système et d'une LED bicolore pour afficher l'état actuel du programme.



Figure 5. Schéma de principe du kit carrosserie


N'oubliez pas que la tension sur les broches est de 1,8 V (avec une carte d'extension déjà 3,3 V), nous connectons donc les LED via un étage de transistor - à partir de 1,8 V, elles ne s'allument tout simplement pas.


Électronique


Les principaux composants du système - une caméra et un ordinateur monocarte ont été créés l'un pour l'autre (dans notre cas, ce n'est pas une révolution de la parole, mais un fait bien connu):



Figure 6. Kit de développement Intel Joule 570x - un micro-ordinateur à carte unique avec un processeur Intel Atom 64 bits à 4 cœurs, 4 Go de mémoire et un connecteur USB 3.0



Figure 7. Caméra Intel RealSense SR300 - Caméra 3D à courte portée comme organe de vision. La plage effective de reconnaissance de la profondeur est de 0,2 à 1,2 m.


Quelques jours seulement après le début du projet, Intel Joule a réussi à acquérir le statut d'EOL (End Of Life), mais cela ne nous a pas arrêtés.


En tant que module informatique, vous pouvez prendre presque n'importe quelle carte unique moderne avec USB3.0 basée sur le processeur Intel. Par exemple, Up Squared Grove IoT Developement Kit ou MinnowBoard Turbot * . Intel NUC fera aussi l'affaire.


Assemblage


Nous installons les détails de la serrure sur la boîte afin que la serrure se ferme normalement. Pour que la porte rebondisse lorsqu'elle est déclenchée (comme dans les caissons), nous imprimons et installons un poussoir à ressort. Sa tâche est de retirer la porte du verrou de quelques millimètres après avoir rétracté la languette, afin que le boîtier ne se referme pas après avoir supprimé la tension.



Figure 8. Loquet pour languette et poussoir à ressort


Montez la caméra à l'avant. Nous collons la LED dans le couvercle de la caméra, au point ci-dessus i - pour une raison quelconque, il a réussi à se métamorphoser en une LED verte. Nous le fixons avec une paire de vis.



Figure 9. Caméra installée


Pour Intel Joule, vous avez besoin d'un boîtier, donc dans l'éditeur 3D, vous dessinez un boîtier de la taille requise avec des fenêtres pour les connecteurs.



Figure 10. Dessin de boîtier pour Intel Joule


Pour les connecteurs GPIO à 40 broches, aucune fenêtre n'est fournie, car il a été décidé de placer tous les éléments électriques à l'intérieur du boîtier. Pour ce faire, un capot épais est dessiné, avec des rainures pour le relais et 4 contacts, ainsi que des fenêtres pour les interrupteurs. N'oubliez pas que le processeur de la carte n'est pas le plus faible, nous faisons donc plusieurs trous de ventilation dans le couvercle.



Figure 11. Dessin de couverture


Il y a deux écoles. Tout d'abord, lors du développement du kit carrosserie, le connecteur de connexion LED n'a pas été pris en compte, ce qui a conduit au fait que:


  1. Il n'y a pas de trou pour le câble / connecteur dans le boîtier et j'ai dû brûler le trou avec un fer à souder;
  2. Le boîtier assemblé a une longue queue avec des LED à la fin.

Deuxièmement, le boîtier doit être connecté d'une manière ou d'une autre et rien de mieux que de le faire à l'aide de morceaux de fil n'a donc pas été inventé ¯_ (ツ) _ / ¯. À propos du montage silencieux généralement silencieux. Vous ne pouvez pas voir, mais quelque part là-bas, sous les buses thermiques, 3 transistors et talons de rezuki sont cachés.


prototype de fumeur

Ici, je me souviens d'une photo de ma propre paternité:

Et les mots de la personne qui m'a apporté le bon appareil - «ils ont déjà fait un prototype pour moi, j'ai juste besoin de réparer un peu le firmware - quelque chose est instable et la batterie s'épuise rapidement».



Figure 12. Boîtier électronique assemblé


L'intérieur de la boîte comprend quatre bornes - deux pour l'alimentation et deux pour le moteur, un interrupteur de fin de course pour la porte, un va-et-vient pour contrôler le programme et un relais qui fournit la tension à la serrure. Pendant l'impression, l'angle près de la cavité du relais a arraché la table et le relais a décidé de ne pas y entrer. J'ai dû coller l'interrupteur au thermosnot. Ainsi que payeur unique.


Le ruban vert est collé sur la carte d'antenne Wi-Fi. En général, ils sont auto-adhésifs, mais nous les avons collés tellement de fois pour se déchirer pendant les expériences, qu'ils ont perdu la capacité de coller à la surface.



Figure 13. Boîtier électronique assemblé sous forme fermée


Nous plaçons les intestins à l'intérieur du corps, fermons et procédons au développement de la partie logicielle.


Impression 3D lyrique.


Détails du château - aimé par beaucoup et détesté par moi PLA. Le matériau est très bon pour imprimer des modèles de haute précision, mais il est complètement impossible à traiter. Et aussi cette infection flotte lorsqu'elle est chauffée, ce qui est une très mauvaise propriété pour les éléments structurels.


Tous les autres détails de HIPS - IMHO, il est moins capricieux que l'ABS et ne sent pratiquement pas lors de l'impression. La seule mise en garde - jusqu'à ce qu'il ait augmenté la température de la table à 95 degrés, les détails de la table étaient déformés. Selon les instructions, la température de la table devrait être d'environ 100 degrés, mais qui la lit si bien jusqu'à présent?


Partie logiciel


Préparation du système


Tout d'abord, vous devez mettre à jour le BIOS sur la carte afin d'installer l'image du système d'exploitation dont nous avons besoin. Nous avons utilisé ceci et ces instructions de la documentation officielle sur le site Web d'Intel.


Ensuite, en connectant le moniteur et le clavier à la carte, nous installons la distribution spéciale Ubuntu * Desktop 16.04 LTS pour Intel Joule dans le mode graphique ou texte habituel. Si l'ordinateur utilise Intel NUC ou un autre ordinateur, l'image stockée du système disparaîtra également.


Après avoir installé le système d'exploitation à l'aide de moyens réguliers, nous nous connectons à Internet via le Wi-Fi intégré. Puisqu'il n'y a qu'un seul connecteur USB sur la carte et que nous en avons besoin pour connecter la caméra, nous nous connectons à la carte via ssh. Nous pouvons maintenant libérer le port du clavier et connecter Intel RealSense.


Installez les packages et les dépendances.


Tout d'abord, installez Python 3.5.4, sur lequel notre projet est écrit. Téléchargez et construisez le module OpenCV Python à partir du code source, car le module Python OpenCV non officiel sur Intel Joule ne fonctionne pas correctement.


Installez ou mettez à jour des dépendances supplémentaires:


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 

Nous mettons libmraa - cette bibliothèque nous est utile pour communiquer avec la boîte. Les instructions de montage détaillées sont ici .


Ou vous pouvez installer des fichiers binaires prêts à l'emploi à partir de 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 

Après avoir installé toutes les dépendances, nous pouvons vérifier que tout fonctionne correctement. Pour ce faire, augmentez VNC - vnc4server est tout, exécutez un échantillon pour travailler avec la caméra et assurez-vous que la caméra fonctionne.


Le dernier point de contrôle est l'importation correcte du module face_recognition . En fait, c'est notre réseau de neurones ResNet, orienté vers l'identification des personnes sur la photo. Il apparaît donc dans la démo de l'auteur:



 import face_recognition 

Une fois que tout est prêt, nous déchargeons le code source de notre application du référentiel et nous nous mettons au travail.


Pour plus de commodité, nous avons ajouté toutes les bibliothèques en tant que sous-modules à notre projet. Pour les télécharger, faites la mise à jour du sous-module git --init --recursive depuis le répertoire du projet.


Travail


 ./launcher.py 

Lorsque vous activez la base de données pour la première fois, il n'y a personne, la boîte sera donc fermée. Nous l'ouvrons manuellement (nous avons une porte arrière intégrée pour cela - un petit trou clairement en face de la langue) et effectuons la formation.


Pour ce faire, tenez-vous devant la boîte - la LED sur le panneau avant s'allume, indiquant qu'une certaine personne est dans le champ de vision de la caméra.


Nous cliquons sur l'interrupteur dans le sens de se souvenir du visage et l'entrée correspondante apparaît dans la console.



Maintenant, si vous fermez le tiroir et vous tenez devant lui, le système reconnaîtra son visage et ouvrira joyeusement la porte.



Les entrées de la console d'accès apparaîtront dans la console.



Si un étranger se lève, le système ne pourra pas le reconnaître, de sorte que la porte restera fermée. C'est une autre question que le système puisse être affamé - le pourcentage de faux positifs dans notre cas était assez élevé, et si vous marchez longtemps avec un tas d'objets différents dans vos mains, il s'ouvrira toujours.


Cela peut être résolu en utilisant le canal de profondeur - il n'est pas utilisé dans la version actuelle, car il n'était pas possible de le faire fonctionner de manière stable, et le problème de compatibilité avec Intel Joule était trop tard pour être envoyé. L'auteur de face_recognition a mesuré une précision de 99,38% sur le benchmark Faces étiquetées dans la maison sauvage


Conclusion


Bien sûr, ce Proof-Of-Concept peut être considérablement amélioré et ses fonctionnalités sont étendues de nombreuses fois. Par exemple, vous pouvez ajouter la journalisation des accès réussis et infructueux, ainsi qu'une gestion pratique via l'interface Web.


Le principe de base de la construction de cet appareil était: "Je l'ai aveuglé de ce qu'il était." Nous voulions juste montrer que quelque chose d'intéressant peut être fait de matériaux improvisés.


Merci à Dmitry ( dmitryvodop ) et Sergey pour avoir travaillé sur la partie logicielle du projet.


Tous les modèles au format * .stl et le code source du programme sont téléchargés sur GitHub sous la licence MIT.

Source: https://habr.com/ru/post/fr410193/


All Articles