Construir un contador de personas con Raspberry Pi y Ubidots
Ubidots es un servicio en la nube que te permite almacenar y analizar datos de sensores en tiempo real. Permite crear aplicaciones para el Internet de las Cosas, sin necesidad de conocimientos profundos de programación web, bases de datos o API.
- Un pequeño pack de baterías, con su cable micro-USB:
- Sensor de movimiento de Parallax:
ACTUALIZACIÓN Siguiendo una sugerencia de Doug Jefferies (¡Gracias!), los GPIOs de Raspberry Pi están diseñados para 3.3v pero estamos poniendo 5v allí. Así que es una mejor idea para conectar:
V+ -> Pin #1 (3.3v).
Como el sensor es muy sensible al movimiento, utilicé el interruptor puente que tiene detrás para ajustar la sensibilidad más baja. Además, lo coloqué en una caja oscura con una apertura pequeña, para que la detección de movimiento se centre en un punto en lugar de ser tan omnidireccional:
Codificación
Crea un nuevo archivo llamado "peoplecounter.py":
$ sudo nano peoplecounter.py
Y escribe el siguiente código en él. Asegúrate de sustituir los valores de la clave API y la variable ID por los de tu cuenta personal de Ubidots.
(Nota: el código no es demasiado elegante, pero oye no soy un desarrollador de Python, sólo un chico de 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 "Couldn't connect to the API, check your Internet connection" 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
$ python peoplecounter.py
Ahora que los datos están en la nube, puedes añadir widgets en tu dashboard para mostrar la actividad en tiempo real. También puedes configurar "Eventos" en tu cuenta de Ubidots, para recibir una notificación por SMS o correo electrónico cuando tu variable alcance un límite específico.
Conclusión
Este proyecto proporciona una pista del número de personas que pasan por un punto determinado. No proporciona el número exacto de personas, dadas las limitaciones del sensor de movimiento, pero en algunas aplicaciones puede 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 (dentro/fuera, 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ó smartphones en su casa). En última instancia, la tecnología iBeacon también debería ser un gran facilitador de estas aplicaciones.
En cualquier caso, los datos recopilados pueden enviarse fácilmente a Ubidots, donde pueden interpretarse creando alertas, cuadros de mando en directo o conectándolos a otros sistemas.
¿Tiene ideas para proyectos de sensores?
Crear una cuenta Ubidotsy ¡hazlos realidad!