Construyendo un contador de personas con Raspberry Pi y 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.
– Una pequeña batería, con su cable micro-USB:
– Sensor de movimiento de Parallax:
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:
Codificación
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
$ python contador de personas.py
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
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.