Nube IoT

Construyendo un contador de personas con Raspberry Pi y Ubidots

Agustín Peláez
· 5 min de lectura
Enviar por correo electrónico
Los contadores de personas se utilizan principalmente en el sector minorista para obtener una mejor visión del comportamiento de los compradores. También se encuentran en aplicaciones de seguridad, gestión de eventos y ciudades inteligentes. Imagine que administra un gran centro comercial: estos mostradores le permiten saber cuántas personas entran y salen, qué caminos toman, dónde se detienen y, lo más importante, cuándo sucede todo.
Al igual que la mayoría de los sensores, los contadores de personas existen desde hace un tiempo. Sin embargo, sus datos no siempre están centralizados y conectados a los sistemas empresariales para informar la toma de decisiones.
En este artículo, presentaremos un contador de personas muy básico y casero y transmitiremos sus datos a la nube Ubidots , donde se pueden crear mejores conocimientos.
Construí esto un día antes de una demostración en el [Boston New Tech Meetup](http://www.youtube.com/watch?v=cSbjFs7XOQs) la semana pasada, así que puedo decirles que fue un bricolaje rápido y de bajo costo. ¡proyecto!
# **¿Qué es Ubidots ?**

característicasTrigger2

# [**Regístrese gratis**]( ubidots )

Ubidots es un servicio en la nube que le permite almacenar y analizar datos de sensores en tiempo real . Le permite crear aplicaciones para el Internet de las cosas, sin ningún conocimiento profundo de programación web, bases de datos o API.

## **Lo que necesitarás**

Frambuesa Pi Modelo B:

imagen

– Una pequeña batería, con su cable micro-USB:

imagen

– Dispositivo USB Wifi:

imagen

 Sensor de movimiento de Parallax:

imagen

– 3 cables hembra-hembra
– Una pequeña caja para guardar todos los componentes.
## **Cableado y carcasa**
Como puedes ver, el sensor de movimiento tiene sólo tres pines: V+, Tierra y un tercero que da salida a la señal: “1” cuando hay movimiento, y “0” cuando no lo hay. No es necesario soldar nada, ni escribir I2C o funciones seriales para detectar esta señal; simplemente conecta los cables directamente a los pines GPIO de tu Raspberry Pi:
 ![contador de personas](http://media.tumblr.com/b47fa377202358ca34ca4b883ed90e2e/tumblr_inline_mtlkq6C4oX1s0d61y.png)
Así es como se veía:

imagen

ACTUALIZACIÓN Siguiendo una sugerencia de Doug Jefferies (¡Gracias!), los GPIO de Raspberry Pi están diseñados para 3.3v pero estamos poniendo 5v allí. Entonces es una mejor idea conectarse:

V+ –> Pin #1 (3.3v).

Debido a que el sensor es muy sensible al movimiento, utilicé el interruptor de puente detrás de él para configurar la sensibilidad más baja. Además, lo coloqué en una caja oscura con una pequeña apertura, para que la detección de movimiento se centre en un punto en lugar de ser tan omnidireccional:

imagen

imagen

Codificación

En este punto, asumiremos que ha realizado una configuración básica de su Raspberry Pi y está viendo su línea de comandos de Linux. De lo contrario, le recomendamos [leer primero esta guía] ( ubidots ). También puedes consultar [esta publicación sobre la configuración WiFi de Raspberry Pi.](/setup-wifi-on-raspberry-pi-using-wicd)
Asegurémonos de tener todas las bibliotecas:
$ sudo apt-get update $ sudo apt-get update $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip install ubidots

Cree un nuevo archivo llamado “peoplecounter.py”:

$ sudo nano contador de personas.py

Y escriba el siguiente código en él. Asegúrese de reemplazar los valores de la clave API y la ID de la variable con los de su cuenta personal Ubidots .

(Nota: el código no es demasiado elegante, pero bueno, no soy un desarrollador de Python, solo un experto en hardware 🙂

desde ubidots importar ApiClient importar RPi.GPIO como tiempo de importación GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.IN) prueba: api = ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3") people = api.get_variable("5238cec3f91b282c7357 a140") excepto: imprimir "No se pudo conectar a la API, verifique su conexión a Internet" contador = 0 recuento de personas = 0 while(1): presencia = GPIO.input(7) if(presencia): recuento de personas += 1 presencia = 0 tiempo. sleep(1.5) time.sleep(1) contador += 1 if(counter==10): print peoplecount people.save_value({'value':peoplecount}) contador = 0 peoplecount = 0

El script consta de un bucle que comprueba el estado del pin n.º 7 (el sensor de movimiento). Si lee un “1”, significa que hubo movimiento, entonces incrementa la variable “peoplecount” y espera 1,5 segundos para que el sensor de movimiento vuelva a la normalidad. Esto se hace 10 veces, asegurándose de que haya al menos 1 segundo entre cada ciclo, luego envía la suma total de “movimientos” a Ubidots . Si necesitas calibrar el contador de personas, entonces deberías jugar con las líneas “time.sleep” con otros valores.
Cuando el script finalice, estará listo para ejecutarlo desde la consola:
 

$ python contador de personas.py

¡Eso es todo! Así es como se veían los datos sin procesar en mi caso:
![imagen](http://media.tumblr.com/a3b6312a2a69679f5b9c71ce3246b141/tumblr_inline_mtlpgceZIm1s0d61y.jpg)

Ahora que los datos están en la nube, puede agregar widgets en su dashboard para mostrar la actividad en tiempo real. También puede configurar "Eventos" en su cuenta Ubidots , para recibir una notificación por SMS o correo electrónico cuando su variable alcance un límite específico.

Conclusión

imagen

Este proyecto proporciona una pista del número de personas que pasan por un punto en particular. No proporciona el número exacto de personas, dadas las limitaciones del sensor de movimiento, pero en algunas aplicaciones, esto podría ser suficiente.

Los contadores de personas más elaborados utilizan cámaras y algoritmos de procesamiento de imágenes para detectar cuál es el objeto en movimiento (persona, coche, mascota...), en qué dirección se mueve (adentro/afuera, izquierda/derecha) e incluso podrían ampliarse, en teoría. , para conocer la edad y el sexo de la persona.

Otra forma de detectar personas sería detectar pasivamente las señales de radio de sus teléfonos inteligentes, como Wifi o Bluetooth ( mira cómo este tipo detectó teléfonos inteligentes en su casa ). En última instancia, la iBeacon también debería ser un gran facilitador de estas aplicaciones.

En cualquier caso, los datos recopilados se pueden enviar fácilmente a Ubidots , donde se pueden interpretar creando alertas, dashboards en vivo o conectándolos a otros sistemas.

¿Tiene ideas de proyectos de sensores?

¡Crea una cuenta Ubidots y hazlos realidad!