Contador con reconocimiento facial para Raspbery Pi 3

Una camara junto con una pequeña pantalla OLED pueden servir para detectar cuando está delante del ordenador pues cuando reconoce una cara, va contabilizando el tiempo que ha pasado delante de tu PC


Con una Raspberry Pi se pueden hacer muchas cosas , pero seguramente  se sorprenda que incluso puede utilizar la cámara para experimentar  con reconocimiento facial, labor que ha hecho  DekuNukem utilizando una Raspberry Pi 3, el módulo de la cámara de Raspberry Pi y una pantalla OLED para la visualización de los datos

 El concepto es relativamente simple: la pi-camera toma una foto cada 15 segundos, de modo que  si se encuentra nuestra cara, la cual  previamente habremos cargado, se registra la hora actual. y el tiempo registrado se suma para calcular el  horario laboral exacto todas las semanas mostrándose el resultado en una pantalla OLED.

Para este proyecto  estrictamente como puede deducirse  no es necesario incluir la pantalla OLED  ya que nos  podemos  conectar  a la propia Raspberry Pi  3 para consultar ese dato , pero definitivamente la pantalla extra añade inmediatez y flexibilidad , dejando ver el tiempo diario y semanal de un vistazo sin tener que acceder su frambuesa Pi para ver  los datos.

 

dekuNukem facepunch raspberry pi facial recognition

 

Resumiendo estos son los componentes usados :

  • Raspberry Pi 3 Model B. También podría funcionar en Zero
  • Módulo de cámara Raspberry Pi
  • OPCIONAL : pantalla OLED de 1.3 pulgadas de 128×64. Pantallas de 0.96 pulgadas OLED también funcionan.Que sea  OLED es opcional; Omita los pasos relacionados con la pantalla si se opta por no usar  esta

Modulo de visualización

Se  puede conectar una OLED a la  Pi con el Pi interfaz I2C o SPI. En general, I2C utiliza menos pines  pero es algo más lenta. SPI es mas rápido, pero requiere un numero o de pines del GPIO  extra por lo que esta elección  debe considerarse en función de sus necesidades .

La interfaz I2C es la normal que se use por su mayor sencillez    pero para ‘escritura’ en la pantalla solamente, asi todavía tendrá el marco entero 512 bytes del búfer en el microcontrolador RAM  aunque no se podran  leer datos de lo OLED (aunque I2C es un protocolo bidireccional).

Antes de comenzar el cableado de la  pantalla , en muchas  de estas debe conectarse  una franja de pines que deben soldarse a la placa  OLED , pues no es posible  simplemente hacer las conexiones enrollándolos a las cabeceras

Si su OLED compatible con I2C y SPI, asegúrese de comprobar cómo se configuran los puentes de soldadura para configurar  la interfaz correcta, asi que para comenzar, usted necesitará  dos puentes en la parte posterior de la pantalla OLED de la soldadura. Debe soldarse como ‘cerrado’ para   configurar la pantalla en modo  I2C

 

Para usar la  Raspberry Pi  3 , habilitar I2C antes desde el interfaz  de Raspbian antes de cablearlo

Las conexiones necesarias son las siguientes:

  • Conectar pin 3  de GND   de la  Raspberry Pi  3 , al pin GND de la  pantalla  (cable negro).
  • Conectar  VIN  de la pantalla  al pin 1  Raspberry Pi  3 , de 3.3 voltios (cable rojo).
  • Conectar el terminal Reset de la pantalla al pin pin32 de la  Raspberry Pi  3 ,   (cable azul). Alternativamente puede usar cualquier pin digital libre de GPIO para el pin de reset.
  • Conecte el pin SCL de la pantalla  al pin 5 SCL de la   Raspberry Pi  3 ,  (cable morado).
  • Conectar el pin SDA  de la pantalla al pin 3 SDA de la  Raspberry Pi  3   (cable naranja).

 

 

El módulo de cámara es un complemento personalizado y diseñado para Rasbperry Pi. Se conecta a Raspberry Pi a través de uno de los dos pequeños conectores de la parte superior de la placa. La cámara debe ser  compatible con la última versión de Raspbian, el sistema operativo preferido de Raspberry Pi.

El módulo en sí, es pequeño, en torno a 25 mm x 20 mm x 9 mm. Se conecta a Raspberry Pi  3 mediante un cable plano flexible al conector  de cámara .

Sin título.png

Resto de conexiones

Como dekuNukem explica en el repositorio de GitHub para la construcción del prototipo se puede utilizar una placa de  prototipos para montar  incluso  la pantalla  adhiriendo  esta a la pcb , conectado el conjunto a la Raspberry  Pi  por el GPIO   ,lo cual es  una forma agradable y sencilla de tener  todo el proyecto juntos sin cables sueltos o incluso simplificar  si  se necesita modificarlo.

Puede colocar la cámara y el OLED juntos en una placa perforada que se conecta al bus GPIO  o por supuesto, puede colocarlos en otro lugar o diseñar su propia PCB.

 

Librerias necesarias

Para este proyecto se necesitan las siguientes librerias:

 

Proporcione su foto

El programa necesita una imagen de su rostro para saber cómo se ve. Obtenga una imagen de su cara bien iluminada con un fondo limpio, llamándola por ejemplo  me.jpg y colóquela en la carpeta del software.

La resolución debe ser de alrededor de 400×400, de lo contrario el tiempo de procesamiento va a ser largo. Ya se proporciona un ejemplo, así que simplemente reemplace esta  por el suyo.

Ejecucion del programa

Ejecute python3 detect.py para iniciar la detección de rostros y el registro.
Ejecute python3 display_oled.py para mostrar las estadísticas de tiempo en el OLED.
O si no usa un OLED, ejecute python3 display_text.py para imprimir las estadísticas en el terminal.
Es posible que tenga que expeimentar r con camera.rotation y camera.brightness al principio de detect.py, dependiendo de cómo esté orientada la cámara y de su condición de iluminación. Puede abrir image.jpg para ver la última foto tomada.
El pin de reinicio OLED predeterminado es 17, cámbielo a lo que usa en display_oled.py.

 

 

Esta  incursión en reconocimiento facial  puede  incorporarse  en  otros proyectos de automatización del hogar:  como por ejemplo  una identificación de usuario de Magic Mirror, quizás, o un timbre que reconoce a amigos y familiares.

En todo caso la idea presentada  en su simpleza destaca uan genialidad  pues  nos  da una estadística visual y desatendida de las horas que nos pasamos delante de la pantalla.

 

 

 

Automatización con Alexa y Raspberry Pi

Use una Raspberry Pi 3 como dispositivo de automatización del hogar con Alexa. Este proyecto le permite controlar múltiples dispositivos conectados a Raspberry Pi 3 con comando de voz. Puede controlar los pines GPIO para controlar los dispositivos conectados a GPIO.


Usando una  Raspberry Pi   y un placa de relés  se puede realizar  un dispositivo de automatización del hogar  gracias a Alexa , !eso si  , si domina el ingles!.
En este breve post   vamos a ver  cómo poder controlar múltiples dispositivos conectados a la Raspberry Pi vía comandos de voz  en ingles, de tal modo que como veremos, podamos ontrolar todos  los pines GPIO para controlar los dispositivos conectados al GPIO  mediante relés u otros circuitos de control  y con ello encender o apagar cualquier dispositivo eléctrico conectado a estos,  simplemente dando las ordenes vocales  a Alexa.

Como vemos, pues  solo se necesita una Raspberry Pi 3 con una SD, una placa de Reles y  por  supuesto un altavoz inteligente  con Alexa para  automatizar cualquier función que deseemos gracias al reconocimiento automático de voz  de Alexa.

En el esquema   siguiente podemos ver como solo se usa  un solo pin de e/s  digital :  el GPIO 4   para controlar un   relé , pero este esquema ,si se requiere,  se puede ampliar hasta el máximo de los 24  terminales de e/s de los que dispone  una Raspberry Pi.

Es de destacar  que ademas el cable de datos,  incluso la alimentación del relé se obtiene de los 5V DC de la propia Raspbery Pi, por lo que para la  conexión de un circuito de un rele  sólo se necesitan 3 cables para  comandar la placa (un  cable para el control y los dos de la alimentación DC 5v).

 

esquema.PNG

Los pasos para instalar el  software  que permitirá  interactuar con  Alexa  en la Raspberry Pi 3 son los siguientes :

  1. Descargue “RASPBIAN STRETCH WITH DESKTOP” y descomprima  el fichero “2017-04-10-raspbian-jessie.zip” https://www.raspberrypi.org/downloads/raspbian/
  2. Descargue el programa “win32diskimager-1.0.0-install.exe” de la siguiente URL https://sourceforge.net/projects/win32diskimager/files/latest/download
  3. Instalar “win32diskimager-1.0.0-install.exe”
  4. Conecte la tarjeta mini-sd a su ordenador. Desde el explorador de windows, haga clic derecho en la letra de su unidad de tarjeta SD y haga clic en el menú de formato. En la ventana de formato, seleccione “FAT” en la lista “Sistema de archivos” y haga clic en iniciar. Espere a que la tarea se complete.                                                             texto alternativo
  5. Inicie el programa “win32diskimager”. Seleccione el archivo de imagen “2017-04-10-raspbian-jessie.img” y la letra de su unidad de tarjeta SD y haga clic en “Escribir” (Espere a que el programa termine de escribir la imagen RASPBIAN en la tarjeta SD)                                                                                                texto alternativo
  6. Una vez que se completa la escritura de la imagen, copie “ssh” (el archivo ssh está vacío) y “wpa_supplicant.conf” a la raíz de la tarjeta sd. Abra “wpa_supplicant.conf” en el editor de texto y actualice ssid (wi-fi name) y contraseña a los valores de su red Wifi.
  7. Inserte la tarjeta SD en Raspberry Pi 3 ,conecte la alimentación  y espere  a que arranque   durante unos 10 segundos
  8. En Windows vaya a ejecutar y escriba “cmd” y escriba arp -a en el símbolo del sistema. Busque la “Dirección física” que comienza con b8-27 * y tome nota de la dirección de Internet. Esta es su dirección IP Raspberry Pi3 Wi-Fi en su red. Este resultado también se puede obtener con otras herramientas como  WireShark (pc)  o Fing (android), siempre que ambos equipos este  conectados a la misma red. La dirección MAC generalmente comienza desde b- así que una vez que encuentre la dirección MAC, puede buscar la dirección IP en la columna  Internet Address y esta es su dirección IP. Tenga en cuenta esta dirección IP porque necesitará esto para conectar su sesión  SSH y  también para conectarse por el VNC                   texto alternativo
  9. Descargue “Putty.exe” de la siguiente URL https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  10. Ejecute “Putty.exe” y escriba la dirección IP en el campo de nombre de host y haga clic en el botón de inicio y haga clic en Sí para abrir una ventana emergente. En la línea de comando del putty, escriba como Login “pi”  y para la contraseña ingrese “raspberry” y presione enter. Debería ver el  prompt  “pi @ raspberrypi: ~ $”.                             texto alternativo
  11. Escriba “sudo raspi-config” y vaya a “Opciones de interfaz” y habilite VNC. Reinicie pi3 escribiendo este comando “sudo reboot“. Perderá la conexión ssh.
  12. (Opcional) Puede descargar e instalar el cliente de VNC en su pc https://www.realvnc.com/download/vnc/windows/ . Conecte VNC a Respberry Pi3 usando la dirección IP. Inicie sesión con el nombre de usuario “pi” y la contraseña “raspberry“.Debería ver el escritorio de la Raspberry Pi 3.           texto alternativo
  13. Inicie la sesión de Pi ssh con putty a o localmente a través de VNC y escriba los dos comandos a continuación desde  el  símbolo del sistema de Pi para actualizarlo: sudo apt-get update” y “sudo apt-get upgrade” (Esto llevará un tiempo)
  14. Descargue este proyecto github como archivo zip con el siguiente comando “wget https://github.com/nassiramalik/IOT-Pi3-Alexa-Automation/archive/master.zip “
  15. Descomprima el archivo zip descargado con el comando “unzip master.zip” y escriba el comando “cd IOT-Pi3-Alexa-Automation-master” una vez que haya terminado de descomprimir
  16. (Opcional) Ejecute el comando  “sudo pip install virtualenv”  para instalar virtualenv en Pi
  17. (Opcional) Ejecute  el comando “virtualenv ipaa-env” para crear un entorno virtual para su proyecto
  18. (Opcional) Ejecute  el comando “. Ipaa-env / bin / activate” para activar el entorno virtual de su proyecto
  19. Ahora ejecute el comando “sudo python3 RPi_name_port_gpio.py” para ejecutar el programa Pi IOT  que controla un relé asociado al GPIO4 .   También puede usar el comando  ” “sudo  python 3RPi_name_port_gpio_8_Relays.py” para controlar hasta 8 dispositivos o invertir la polaridad  en caso de que necesite algunas de esas   funcionalidades. Como puede adivinar  este es el archivo que ejecutará para iniciar el programa en su Raspberry Pi  iniciando un servidor  así que presiona enter  el programa se inicia en  Raspberry Pi y se  quedara esperando a Alexa para darle comandos al código Python.
  20. En el código se ha escrito el nombre del dispositivo como “office” (oficina)  , pero puede cambiarlo por  lo que quiera, simplemente puede entrar  y cambiar este texto de la oficina al  nombre que desea dar a este dispositivo y Alexa
  21. Ya  puede empezar  a probar  ALexa  de  modo  que puede darle  un comando de voz a Alexa para descubrir dispositivos “Alexa discover devices” (Alexa descubre dispositivos), por lo que buscará en su red y descubrirá su Raspberry Pi 3 como un dispositivo IOT.
  22. Dele un comando de voz a Alexa “Turn on the office” (Enciende la oficina), deberá escuchar un sonido de clic de rele y encenderá cualquier carga que tenga coenctada a este
  23. Dele un comando de voz a Alexa “Turn on the office”  (Apagar la oficina), debería escuchar un sonido de clic de relevo y la carga conectada al rele dejara de estar alimentada

Alexa  siempre necesitara   descubrir los  nuevos dispositivos de  la red , por lo que para que empiece  el  descubrimiento  de dispositivos IOT que  hay en su red interna   para ello debe  presionar el botón para  su descubrimiento  en la botonera del altavoz o  también dele un comando de voz a Alexa para descubrir dispositivos “Alexa discover devices” (Alexa descubre dispositivos) lo cual enviara una difusión para descubrir dispositivos en nuestra red y en la Raspberry pi debería estar respondiendo.

Es obvio que  cualquier entrada analógica ( como por ejemplo temperatura ,detección de humedad,luminosidad, ect) también seria interesante poder ser soportada    pero eso  lo dejaremos  para  futuras actualizaciones   de este interesante proyecto

En el vídeo siguiente nos explican nuevamente los pasos ya comentados:

 

GitHub Project: https://github.com/nassir-malik/IOT-P…

 

Consiga su Raspberry Pi 3 por 34€ con la carcasa gratis

Con esta placa , que se puede conseguir por solo 32€ , se puede hacer cualquier cosa con este mini ordenador. como por ejemplo utilizarlo para emuladores, centro multimedia, servidor de ficheros doméstico, en definitiva cualquier cosa que se te ocurra. Es el mini ordenador que más ha triunfado y eso es por algo.


Con  más de ocho millones de unidades vendidas , incluyendo tres millones de unidades de Raspberry  Pi 2 , nadie duda  que Raspberry es una plataforma  muy exitosa ,  tanto que de hecho la Fundación Raspberry Pi ha crecido de unos pocos  voluntarios a llegar a más de sesenta empleados a tiempo completo, ! e incluso  han enviado una Raspberry Pi a la Estación Espacial Internacional !

Destaca de la familia  Raspberry pi la ultima  Raspberry Pi 3 Modelo B   ,la última placa de la familia de Raspberry Pi  ,una placa 10 veces más potente que la original (es decir la primera versión) ,  donde   lo mas destacable  es que se ha añadido   conectividad inalámbrica integrada, tanto por wifi (soportando los estándares  802.11 b/g/n) ,  como  por  Bluetooth ( versión 4.1).

El precio  normalmente de esta versátil   placa con gastos de envíos,  ronda  los 50€  ,pero ahora de forma puntual  su precio es de 34.20 €  en Amazon

Hablando de conectividad ,la nueva placa  incorpora el chip de Broadcom BCM2837 junto el chip inalámbrico “combo” BCM43438 . Gracias  a esta combinación de CI,  ha permitido  adaptar la funcionalidad inalámbrica en casi el mismo factor de forma de los modelos anteriores como  Raspberry Pi Modelo B + 1 y Raspberry Pi 2 Modelo B. De  hecho ,  el único cambio es que la posición de los LEDs los  han trasladado al otro lado de la ranura de la tarjeta SD para hacer espacio para la antena. Respecto al nuevo SoC, el  BCM2837, este   conserva la misma arquitectura básica que sus predecesores BCM2835 y BCM2836, por lo que todos los proyectos y tutoriales que se basan en este  hardware de la Raspberry  Pi continuarán funcionando.

broadcom 

Esta nueva placa  a diferencia de todas la anteriores  usa un procesador   de  64  bits : un  ARM Cortex-A53  de  cuatro núcleos  a una velocidad de reloj  de 1,2 GHz  en lugar de un  Quad-Core Cortex A7 de 32 bits  a 900 MHz de su antecesor ( Raspberry Pi  2 modelo B), por lo  que vemos que el cambio de procesador  ha sido espectacular no solo por la velocidad de reloj superior (de 900 Mhz  a   1,2 GHz) ,  sino básicamente  por el cambio de arquitectura también ARM ,pero  de 64 bits en lugar de la antigua de 32 bits .

La combinación final   de un aumento del 33% en la velocidad de reloj con varias mejoras en la arquitectura,  permitiendo  proporcionar un aumento del 50-60% en el rendimiento en el modo de 32 bits frente a la Raspberry Pi 2, o aproximadamente un factor de diez sobre la original Raspberry Pi.

Sobre la memoria  RAM cuenta  con 1GB LPDDR2 ( la versión anterior también contaba con 1GB)  y a nivel de gráficos también han mejorado   pues cuenta con  un Dual Core VideoCore IV ® Multimedia Co-procesador.

Sobre los conexiones disponibles, sin embargo ,  no ha cambiado sustancialmente  , contando  como en la versión anterior  con las siguientes posibilidades:

  • 4 Puertos  USB 2.0
  • Puerto de  GPIO de 40  pin,
  • Salida HDMI rev 1.3 y 1.4
  • Toma  Ethernet
  • Jack de audio de 2  1/2″ ,
  •  Interfaz de cámara (CSI)
  • Interfaz de Pantalla (DSI)
  • Lector  micro SD

 

Todos los conectores anteriores  están en el mismo lugar y tienen  la misma funcionalidad, y para alimentar la placa  todavía se puede usar un  adaptador de alimentación de 5V micro-USB, pero en esta ocasión, están recomendando un adaptador 2.5A por si desea conectar dispositivos USB que consuman mucha energía  de la Raspberry Pi.

Caja

Una  de las ventajas  de la Raspberry Pi es que es fácilmente  personalizable, no solo por dentro gracias a  las múltiples distribuciones  compatibles ( incluso W10) , sino también por fuera, por ejemplo  con la carcasa , que esta abierta   completamente a nuestra  creatividad.

Si dispone de una impresora  3D  una de la las mejores opciones   gratuitas     es  el diseño con soporte VESA   de  0110-M-P   compatible con los siguientes modelos de Raspberry Pi: Raspberry Pi 3 ,Raspberry Pi 2,Raspberry Pi Modelo B +,  Además, para facilitar la impresión  cuenta con dos mitades para ajustar facilmente  uy  que ademas  se puede ajustar el diseño para su propio uso.

Esta esta nueva carcasa para la Rasperry Pi 3 presenta:

  • Ranura de acceso para la cámara Pi
  • El diseño es atornillable  por dentro (la pcb )  y por   fuera
  • Atornille el montaje de Raspberry Pi al estuche usando agujeros en PCB
  • Construido en pestañas de montaje VESA de 75 mm
  • Diseño de ventilación del motor rotatorio (triángulo reuleaux)
  • Malla STL de alta resolución

Este es el aspecto de como queda  la pcb atornillada    a la base inferior del diseño , donde se puede apreciar claramente el radiador  pasivo, el cual   aunque no es obligatorio , si lo es de forma muy   recomendable para evitar calentamientos excesivos  a la placa  y así alargaremos la vida de esta versatil  placa

Y este es el aspecto de como queda ya montada y cerrada :

 Usos  Y Aplicaciones

Usted necesitará una imagen reciente NOOBS o de Raspbian  que puede descargar desde la pagina  de  descargas . En la pagina de descargas  esta  disponible  la versión de 32 bits Raspbian usada en otros dispositivos Raspberry Pi, pero se suponen que próximamente   deberían crear  una nueva imagen con soporte al modo de 64 bits.

La forma de instalar el sw en la sd no puede ser mas sencillo ,pues una vez descargada la  ISO de  la distribución que nos  interese   , solo necesitamos la utilidad Win32DiskImager d( se puede descargar desde la página del proyecto en SourceForge como un archivo zip),seleccionar el archivo de imagen que ha extraído anteriormente de Raspbian, seleccionar la letra de la unidad de la tarjeta SD en la caja del dispositivo . hacer  clic en Escribir y esperar a que la escritura se complete.(mas detalles  aqui )

 

La nueva placa no es solo un dispositivo estupendo para programar sino que también es   ideal para jugar  usando directamente la distribución de Raspbian citada  o  bien por medio de la distribución RetroPie

Especialmente interesante  para experimentar  para sus futuros proyectos de IoT  tal y como hemos visto  en este blog , es e usar la Raspberry Pi    a través de la plataforma Cayenne

Asimismo en este blog también hemos hablado de las posibilidades de la Raspberry Pi para emular el sistema Ambilight de Philips gracias a la distribución LightBerry

 

Hay infinitas posibilidades  muchas de las cuales hemos intentado  hablar en este blog   de modo que seria  pretencioso intentar condensarlas todas en un único post, sin duda el limite solo esta  en nuestra imaginacion

 

Por cierto, no sabemos  hasta cuando se mantendrá el precio , pero  si le   interesa este modelo   por unos  de 34€  con gastos de envío incluido ,  no se lo piense pues puede conseguirlo  todavia en Amazon facilmente