Construire un compteur de personnes avec Raspberry Pi et Ubidots

Les compteurs de personnes sont principalement utilisés dans le secteur de la vente au détail pour mieux comprendre le comportement des acheteurs. On les retrouve également dans les applications de sécurité, de gestion d’événements et de ville intelligente. Imaginez que vous gérez un grand centre commercial : ces compteurs vous permettent de savoir combien de personnes entrent et sortent, quels chemins elles empruntent, où elles s'arrêtent et, surtout, quand tout cela se produit.
Tout comme la plupart des capteurs, les compteurs de personnes existent depuis un certain temps. Cependant, leurs données ne sont pas toujours centralisées et connectées aux systèmes de l’entreprise pour éclairer la prise de décision.
Dans cet article, nous présenterons un compteur de personnes très basique et fait maison et diffuserons ses données vers le cloud Ubidots , où de meilleures informations peuvent être créées.
Je l'ai construit un jour avant une démo au [Boston New Tech Meetup](http://www.youtube.com/watch?v=cSbjFs7XOQs) la semaine dernière, donc je peux vous dire que c'était un bricolage rapide et peu coûteux. projet!
# **Qu'est-ce Ubidots ?**

# [**Inscrivez-vous gratuitement**](https: ubidots .com/accounts/signup_industrial/)

Ubidots est un service cloud qui vous permet de stocker et d'analyser les données des capteurs en temps réel . Il vous permet de créer des applications pour l'Internet des objets, sans aucune connaissance approfondie de la programmation Web, des bases de données ou des API.

## **Ce dont vous aurez besoin**

Framboise Pi modèle B:

– Un petit pack batterie, avec son câble micro-USB:

– Clé USB Wi-Fi :

 Capteur de mouvement par Parallax:

– 3 fils femelle-femelle
– Une petite boîte pour ranger tous les composants
## **Câblage et boîtier**
Comme vous pouvez le voir, le capteur de mouvement n'a que trois broches : V+, Ground et une troisième qui émet le signal : « 1 » lorsqu'il y a un mouvement, et « 0 » lorsqu'il n'y en a pas. Pas besoin de souder quoi que ce soit, ni d'écrire des fonctions I2C ou série pour détecter ce signal ; branchez simplement les câbles directement sur les broches GPIO de votre Raspberry Pi :
 ![compteur de personnes](http://media.tumblr.com/b47fa377202358ca34ca4b883ed90e2e/tumblr_inline_mtlkq6C4oX1s0d61y.png)
Voici à quoi cela ressemblait :

MISE À JOUR Suite à une suggestion de Doug Jefferies (Merci !), les GPIO du Raspberry Pi sont conçus pour 3,3 V mais nous y mettons 5 V. C'est donc une meilleure idée de connecter :

V+ -> Broche n°1 (3,3 V).

Étant donné que le capteur est très sensible au mouvement, j'ai utilisé le cavalier situé derrière lui pour régler la sensibilité la plus basse. De plus, je l'ai placé dans un boîtier sombre avec une petite ouverture, afin que la détection de mouvement se concentre sur un point au lieu d'être aussi omnidirectionnelle :

Codage

À ce stade, nous supposerons que vous avez effectué une configuration de base de votre Raspberry Pi et que vous consultez sa ligne de commande Linux. Sinon, nous vous recommandons de [consulter d'abord ce guide] (http:// ubidots .com/docs/devices/raspberrypi.html#setup-your-raspberry-pi). Vous pouvez également consulter [cet article sur la configuration WiFi du Raspberry Pi.](/setup-wifi-on-raspberry-pi-using-wicd)
Assurons-nous que nous avons toutes les bibliothèques :
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip install ubidots

Créez un nouveau fichier appelé « peoplecounter.py » :

$ sudo nano peoplecounter.py

Et écrivez-y le code suivant. Assurez-vous de remplacer les valeurs de la clé API et de l'ID de variable par celles de votre compte personnel Ubidots .

(Remarque : le code n'est pas trop élégant, mais bon, je ne suis pas un développeur Python, juste un spécialiste du matériel 🙂

à partir d' ubidots importez ApiClient, importez RPi.GPIO en tant qu'heure d'importation GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.IN) essayez : api = ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3") people = api.get_variable("5238cec3f91b282c7357 a140") sauf : print "Impossible de se connecter à l'API, vérifiez votre connexion Internet" counter = 0 peoplecount = 0 while(1) : présence = GPIO.input(7) if(presence) : peoplecount += 1 présence = 0 time. sleep(1.5) time.sleep(1) counter += 1 if(counter==10) : print peoplecount people.save_value({'value':peoplecount}) counter = 0 peoplecount = 0

Le script consiste en une boucle qui vérifie l'état de la broche n°7 (le capteur de mouvement). S'il lit un « 1 », signifiant qu'il y a eu un mouvement, alors il incrémente la variable « peoplecount » et attend 1,5 seconde pour que le capteur de mouvement revienne à la normale. Cela se fait 10 fois, en s'assurant qu'il y a au moins 1 seconde entre chaque cycle, puis il envoie la somme totale des « mouvements » à Ubidots . Si vous avez besoin de calibrer le compteur de personnes, vous devez alors jouer avec les lignes « time.sleep » avec d'autres valeurs.
Une fois le script terminé, vous êtes prêt à l'exécuter depuis la console :
 

$ python compteur de personnes.py

C'est ça! Voici à quoi ressemblaient les données brutes dans mon cas :
![image](http://media.tumblr.com/a3b6312a2a69679f5b9c71ce3246b141/tumblr_inline_mtlpgceZIm1s0d61y.jpg)

Maintenant que les données sont dans le cloud, vous pouvez ajouter des widgets dans 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 une limite spécifique.

Conclusion

Ce projet donne une idée du nombre de personnes passant par un point particulier. Il ne fournit pas le nombre exact de personnes, compte tenu des limites du capteur de mouvement, mais dans certaines applications, cela peut suffire.

Des compteurs de personnes plus élaborés utilisent des caméras et des algorithmes de traitement d'image pour détecter ce qu'est l'objet en mouvement (personne, voiture, animal de compagnie...), dans quelle direction il se déplace (entrée/sortie, gauche/droite) et ils pourraient même être étendus, en théorie. , pour connaître l'âge et le sexe de la personne.

Une autre façon de détecter les gens serait de détecter passivement les signaux radio de leurs smartphones, comme le Wifi ou le Bluetooth ( découvrez comment ce type a détecté les smartphones autour de sa maison ). En fin de compte, la iBeacon devrait également être un grand catalyseur 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 connectant à d'autres systèmes.

Avez-vous des idées de projets de capteurs ?

Créez un compte Ubidots et réalisez-les !