Ubidots

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 comprender mejor el comportamiento de los compradores. También se utilizan en aplicaciones de seguridad, gestión de eventos y ciudades inteligentes. Imagine que gestiona un gran centro comercial: estos contadores 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 tiempo. Sin embargo, sus datos no siempre están centralizados ni conectados a los sistemas empresariales para fundamentar la toma de decisiones.
En este artículo, presentaremos un contador de personas casero muy básico 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 proyecto de bricolaje rápido y de bajo costo!
# **¿Qué es Ubidots?**

característicasTrigger2

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

Ubidots es un servicio en la nube que permite almacenar y analizar datos de sensores en tiempo real . Permite crear aplicaciones para el Internet de las Cosas (IoT) sin necesidad de conocimientos avanzados edge programación web, bases de datos o API.

## **Lo que necesitarás**

Raspberry Pi Modelo B:

imagen

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

imagen

– Dongle 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 puede ver, el sensor de movimiento solo tiene tres pines: V+, Tierra y un tercero que emite la señal: "1" cuando hay movimiento y "0" cuando no. No necesita soldar nada ni escribir funciones I2C o seriales para detectar esta señal; simplemente conecte los cables directamente a los pines GPIO de su 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!), las entradas y salidas de la Raspberry Pi están diseñadas para 3,3 V, pero estamos usando 5 V. Por lo tanto, es mejor conectar:

V+ -> Pin #1 (3,3v).

Dado que el sensor es muy sensible al movimiento, usé el interruptor de puente trasero para ajustar la sensibilidad mínima. 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 omnidireccional

imagen

imagen

Codificación

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

Crea un nuevo archivo llamado “peoplecounter.py”:

$ sudo nano contador de personas.py

Escribe el siguiente código. Asegúrate de reemplazar los valores de la clave API y el ID de la variable con los de tu cuenta personal Ubidots .

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

from ubidots import ApiClient import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.IN) try: api = ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3") people = api.get_variable("5238cec3f91b282c7357a140") except: print "No se pudo conectar a la API, verifique su conexión a Internet" counter = 0 peoplecount = 0 while(1): presence = GPIO.input(7) if(presence): peoplecount += 1 presence = 0 time.sleep(1.5) time.sleep(1) counter += 1 if(counter==10): print peoplecount people.save_value({'value':peoplecount}) counter = 0 peoplecount = 0

El script consiste en un bucle que verifica el estado del pin n.° 7 (sensor de movimiento). Si lee un "1", lo que significa que hubo movimiento, incrementa la variable "peoplecount" y espera 1,5 segundos para que el sensor de movimiento vuelva a la normalidad. Esto se repite 10 veces, asegurándose de que haya al menos un segundo entre cada ciclo. Después, envía la suma total de "movimientos" a Ubidots. Si necesita calibrar el contador de personas, debería experimentar con las líneas "time.sleep" con otros valores.
Cuando el script esté terminado, estará listo para ejecutarlo desde la consola:
 

$ python peoplecounter.py

¡Listo! Así 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, puedes añadir widgets a tu dashboard para ver la actividad en tiempo real. También puedes configurar "Eventos" en tu cuenta Ubidots para recibir una notificación por SMS o correo electrónico cuando tu 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 determinado. No proporciona el número exacto, 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 qué objeto se mueve (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 smartphones, como wifi o Bluetooth ( mira cómo este hombre detectó smartphones en su casa ). En definitiva, la iBeacon también debería ser un importante impulsor 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.

¿Tienes ideas para proyectos de sensores?

¡Crea una cuenta Ubidots y hazlos realidad!