Abra Sesame o Intel RealSense y ResNet Guard Fruit


No es ningún secreto que en el mundo moderno de alta tecnología, estamos obligados a confirmar constantemente nuestra identidad y derechos de acceso, con contraseñas, etiquetas sin contacto, huellas digitales, etc. Puede hacerlo con una impresión visual: la cara del usuario. Solo mira nuestro gadget, cómo entiende que hay un usuario autorizado frente a él y desbloquea la pantalla.


Decidimos implementar un esquema similar utilizando materiales disponibles y soluciones de código abierto. Como objeto físico, que tendrá la correspondiente "selectividad para los descubrimientos", se eligió una caja fuerte.


Todos los detalles debajo del corte.


Vivienda



Figura 1. Proceso de ensamblaje de la caja


La caja está hecha de restos de paneles de MDF laminados de 40 x 40 cm, conectados por tornillos para muebles. Posteriormente, todas las juntas fueron recubiertas con masilla acrílica sobre madera, no muy lijado completamente, después de lo cual se cubrió todo el cuerpo varias veces con una gruesa capa de pintura acrílica blanca. Pinte, espere hasta que la capa actual se seque, lije, cubra con la siguiente capa. Después de tres capas, obtuve un acabado mate blanco uniforme, sobre el cual caminé una fina capa de esmalte blanco brillante.



Figura 2. Carcasa final durante la instalación eléctrica.


Desde la parte inferior de la caja, sujetamos las patas impresas, las primeras partes dibujadas en un editor 3D.



Figura 3. Piernas. PLA de plástico


Electricista


La cerradura de la caja fuerte estaba hecha de un accionamiento híbrido de la cerradura central y la lengüeta falsa de la puerta interior; desde esta última tiramos la funda giratoria y hacemos un gancho debajo de la tracción.
Con la ayuda de piezas impresas, todo se ensambla en un solo diseño y se monta en la puerta. La placa principal en sí es bastante delgada (3 mm) y se dobla fácilmente, pero todo cambia después de la instalación. El diseño final fue lo suficientemente fuerte para otros experimentos.



Figura 4. Conjunto del mecanismo de bloqueo


Por supuesto, si estamos hablando de un sistema de control de acceso completo, puede comprar una cerradura eléctrica lista para usar al instalarla en una caja fuerte de metal normal. Pero no


Además de la cerradura, también necesitamos un remolque para controlar el estado de la puerta, un interruptor de tres posiciones para controlar el sistema y un LED de dos colores para mostrar el estado actual del programa.



Figura 5. Diagrama esquemático del kit de carrocería


No olvide que el voltaje en los pines es de 1.8V (con una placa de expansión ya de 3.3V), por lo que conectamos los LED a través de una etapa de transistor; desde 1.8V simplemente no se encenderán.


Electrónica


Los componentes principales del sistema: una cámara y una computadora de placa única se crearon entre sí (en nuestro caso, esto no es un giro del habla, sino un hecho bien conocido):



Figura 6. Kit de desarrollo Intel Joule 570x : una microcomputadora de placa única con un procesador Intel Atom de 4 núcleos y 64 bits, 4 GB de memoria y un conector USB 3.0



Figura 7. Cámara Intel RealSense SR300 : cámara 3D de corto alcance como órgano de visión. El rango efectivo de reconocimiento de profundidad es 0.2 - 1.2 m.


Solo un par de días después del inicio del proyecto, Intel Joule logró adquirir el estado de EOL (End Of Life), pero esto no nos detuvo.


Como módulo informático, puede tomar casi cualquier placa única moderna con USB3.0 basado en el procesador Intel. Por ejemplo, Up Squared Grove IoT Development Kit o MinnowBoard Turbot * . Intel NUC también hará el truco.


Asamblea


Instalamos los detalles de la cerradura en la caja para que la cerradura se cierre normalmente. Para que la puerta rebote cuando se activa (como en los pedestales), imprimimos e instalamos un empujador de resorte. Su tarea es retraer la puerta del pestillo unos pocos milímetros después de retraer la lengüeta, para que la caja no se cierre nuevamente después de eliminar el voltaje.



Figura 8. Pestillo para lengüeta y empujador de resorte


Monta la cámara en la parte delantera. Pegamos el LED en la cubierta de la cámara, en el punto arriba de i; por alguna razón, logró metamorfizarse en un LED verde. Lo arreglamos con un par de tornillos.



Figura 9. Cámara instalada


Para Intel Joule, necesita un estuche, por lo que en el editor 3D dibuja un estuche del tamaño requerido con ventanas para los conectores.



Figura 10. Dibujo del caso para Intel Joule


Para los conectores GPIO de 40 pines, no se proporcionan ventanas, ya que se decidió colocar todos los componentes eléctricos dentro de la carcasa. Para hacer esto, se dibuja una cubierta gruesa, con ranuras para el relé y 4 contactos, así como ventanas para los interruptores. No olvide que el procesador en la placa no es el más débil, por lo que hacemos varios orificios de ventilación en la tapa.



Figura 11. Dibujo de portada


Hay dos escuelas En primer lugar, al desarrollar el kit de carrocería, el conector de conexión LED no se tuvo en cuenta, lo que llevó al hecho de que:


  1. No hay orificio para el cable / conector en el estuche y tuve que quemar el orificio con un soldador;
  2. La caja ensamblada tiene una larga cola con LED en el extremo.

En segundo lugar, el caso debe estar conectado de alguna manera y nada mejor que hacerlo usando trozos de cable como resultado no se inventó ¯_ (ツ) _ / ¯. Sobre montaje silencioso en general silencioso. No se puede ver, pero en algún lugar, debajo de las boquillas térmicas, se ocultan 3 transistores y tacones de rezuki.


prototipo de fumador

Aquí recuerdo una foto de mi propia autoría:

Y las palabras de la persona que me trajo el dispositivo correcto: “ya hicieron un prototipo para mí, solo necesito arreglar un poco el firmware, algo es inestable y la batería se agota rápidamente”.



Figura 12. Caja electrónica ensamblada


El interior de la caja son cuatro terminales: dos para la alimentación y dos para el motor, un interruptor final para la puerta, uno hacia adelante y hacia atrás para controlar el programa y un relé que suministra voltaje a la cerradura. Durante la impresión, el ángulo cerca de la cavidad para el relé arrancó de la mesa y el relé decidió no encajar en él. Tuve que pegar el interruptor al termosnot. Así como pagador único.


La cinta verde está pegada a la placa de antena Wi-Fi. En general, son autoadhesivos, pero los hemos pegado tantas veces para arrancarlos durante los experimentos, que han perdido la capacidad de adherirse a la superficie.



Figura 13. Caja electrónica ensamblada en forma cerrada


Colocamos los intestinos dentro del cuerpo, los cerramos y procedemos al desarrollo de la parte del software.


Impresión lírica en 3D.


Detalles del castillo: amado por muchos y odiado por mí PLA. El material es muy bueno para imprimir modelos de alta precisión, pero es completamente imposible de procesar. Y también esta infección flota cuando se calienta, lo cual es una propiedad muy mala para los elementos estructurales.


Todos los demás detalles de HIPS: en mi humilde opinión, es menos caprichoso que el ABS y prácticamente no huele cuando se imprime. La única advertencia: hasta que elevó la temperatura de la mesa a 95 grados, los detalles de la mesa se deformaron. De acuerdo con las instrucciones, la temperatura de la tabla debe ser de unos 100 grados, pero ¿quién la lee hasta ahora tan bien?


Parte de software


Preparación del sistema


En primer lugar, debe actualizar el BIOS en la placa para instalar la imagen del sistema operativo que necesitamos. Utilizamos estas y estas instrucciones de la documentación oficial en el sitio web de Intel.


A continuación, conectando el monitor y el teclado a la placa, instalamos la distribución especial Ubuntu * Desktop 16.04 LTS para Intel Joule en el modo gráfico o de texto habitual. Si la computadora usa Intel NUC u otra computadora, la imagen de archivo del sistema también desaparecerá.


Después de instalar el sistema operativo utilizando medios regulares, nos conectamos a Internet a través del Wi-Fi incorporado. Como solo hay un conector USB en la placa y lo necesitamos para conectar la cámara, nos conectamos a la placa a través de ssh. Ahora podemos liberar el puerto del teclado y conectar Intel RealSense.


Instalar paquetes y dependencias.


Primero, instale Python 3.5.4, en el que está escrito nuestro proyecto. Descargue y cree el módulo OpenCV Python desde el código fuente, ya que el módulo no oficial Python OpenCV en Intel Joule no funciona correctamente.


Instalar o actualizar dependencias adicionales:


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 

Ponemos libmraa : esta biblioteca es útil para comunicarnos con la caja. Las instrucciones detalladas de montaje están aquí .


O puede instalar binarios ya preparados 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 

Después de instalar todas las dependencias, podemos verificar que todo funcione correctamente. Para hacer esto, suba VNC: vnc4server lo es todo, ejecute una muestra para trabajar con la cámara y asegúrese de que la cámara esté funcionando.


El punto de control final es la importación correcta del módulo face_recognition . De hecho, esta es nuestra red neuronal ResNet, orientada a identificar personas en la foto. Entonces se ve en la demostración del autor:



 import face_recognition 

Una vez que todo está listo, descargamos el código fuente de nuestra aplicación del repositorio y nos ponemos a trabajar.


Por conveniencia, agregamos todas las bibliotecas como submódulos a nuestro proyecto. Para descargarlos, actualice gm submodule --init --recursive desde el directorio del proyecto.


Trabajo


 ./launcher.py 

Cuando enciende la base de datos por primera vez, no hay personas, por lo tanto, el cuadro se cerrará. Lo abrimos manualmente (tenemos una puerta trasera incorporada para esto, un pequeño orificio claramente opuesto a la lengua) y llevamos a cabo el entrenamiento.


Para hacer esto, párese frente a la caja: el LED del panel frontal se ilumina, lo que indica que cierta persona está en el campo de visión de la cámara.


Hacemos clic en el interruptor en la dirección de recordar la cara y la entrada correspondiente aparece en la consola.



Ahora, si cierra el cajón y se para frente a él, el sistema reconocerá su cara y con alegría abrirá la puerta.



Las entradas de la consola de acceso aparecerán en la consola.



Si un extraño se pone de pie, el sistema no podrá reconocerlo, por lo que la puerta permanecerá cerrada. Otra cuestión es que el sistema puede pasar hambre: el porcentaje de falsos positivos en nuestro caso fue bastante alto, y si caminas durante mucho tiempo con un montón de objetos diferentes en tus manos, todavía se abrirá.


Esto se puede resolver mediante el uso del canal de profundidad: no se usa en la versión actual, ya que no fue posible hacer que funcione de manera estable, y era demasiado tarde para enviar el problema de compatibilidad con Intel Joule. El autor de face_recognition midió el 99,38% de precisión en el punto de referencia Caras etiquetadas en el hogar salvaje


Conclusión


Por supuesto, esta Prueba de concepto se puede mejorar significativamente y su funcionalidad se amplía muchas veces. Por ejemplo, puede agregar el registro de acceso exitoso y no exitoso, así como la administración conveniente a través de la interfaz web.


El principio básico de la construcción de este dispositivo fue: "Lo cegué de lo que era". Solo queríamos demostrar que se puede hacer algo interesante con materiales improvisados.


Gracias a Dmitry ( dmitryvodop ) y Sergey por trabajar en la parte de software del proyecto.


Todos los modelos en formato * .stl y el código fuente del programa se cargan en GitHub bajo la licencia MIT.

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


All Articles