Construire un compteur de personnes avec Raspberry Pi et Ubidots
Ubidots est un service cloud qui permet de stocker et d'analyser des données de capteurs en temps réel . Il permet de créer des applications pour l'Internet des objets, sans nécessiter de connaissances approfondies edge programmation web, bases de données ou API.
– Une petite batterie externe, avec son câble micro-USB:
– Capteur de mouvement Parallax:
MISE À JOUR Suite à une suggestion de Doug Jefferies (Merci !), les broches GPIO du Raspberry Pi sont conçues pour 3,3 V, mais nous y appliquons du 5 V. Il est donc préférable de les connecter comme suit :
V+ –> Broche n° 1 (3,3 V).
Comme le capteur est très sensible aux mouvements, j'ai utilisé le cavalier situé à l'arrière pour régler sa sensibilité au minimum. De plus, je l'ai placé dans un boîtier opaque avec une petite ouverture, afin que la détection de mouvement se concentre sur un point précis plutôt que d'être omnidirectionnelle
Codage
Créez un nouveau fichier appelé « peoplecounter.py » :
$ sudo nano peoplecounter.py
Saisissez ensuite le code suivant. Veillez à remplacer les valeurs de la clé API et de l'identifiant de la variable par celles de votre compte Ubidots personnel .
(Remarque : le code n'est pas très élégant, mais bon, je ne suis pas développeur Python, juste un spécialiste du matériel 🙂)
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 "Impossible de se connecter à l'API, vérifiez votre connexion 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
$ python peoplecounter.py
Maintenant que vos données sont dans le cloud, vous pouvez ajouter des widgets à votre dashboard pour afficher l'activité en temps réel. Vous pouvez également configurer des « Événements » dans votre compte Ubidots afin de recevoir une notification par SMS ou par e-mail lorsque votre variable atteint un seuil prédéfini.
Conclusion
Ce projet donne une indication du nombre de personnes passant par un point précis. Il ne fournit pas le nombre exact, compte tenu des limitations du capteur de mouvement, mais dans certaines applications, cela peut suffire.
Les compteurs de personnes plus sophistiqués utilisent des caméras et des algorithmes de traitement d'images pour détecter la nature de l'objet en mouvement (personne, voiture, animal de compagnie…), la direction dans laquelle il se déplace (vers l'intérieur/l'extérieur, à gauche/à droite) et pourraient même, en théorie, être étendus pour connaître l'âge et le sexe de la personne.
Une autre méthode de détection des personnes consiste à capter passivement les signaux radio émis par leurs smartphones, comme le Wi-Fi ou le Bluetooth ( voir comment cette personne a détecté les smartphones autour de sa maison ). À terme, la iBeacon devrait également jouer un rôle déterminant dans le développement de ces applications.
Dans tous les cas, les données collectées peuvent être facilement envoyées à Ubidots , où elles peuvent être interprétées en créant des alertes, dashboards en direct ou en les intégrant à d'autres systèmes.