Aufbau eines Personenzählers mit Raspberry Pi und Ubidots

Personenzähler werden vor allem im Einzelhandel eingesetzt, um bessere Einblicke in das Verhalten der Käufer zu gewinnen. Sie finden sich auch in den Bereichen Sicherheit, Eventmanagement und Smart City-Anwendungen. Stellen Sie sich vor, Sie leiten ein großes Einkaufszentrum: An diesen Schaltern erfahren Sie, wie viele Personen ein- und ausgehen, welche Wege sie nehmen, wo sie anhalten und vor allem, wann alles passiert.
Wie die meisten Sensoren gibt es auch Personenzähler schon seit einiger Zeit. Ihre Daten sind jedoch nicht immer zentralisiert und mit Unternehmenssystemen verbunden, um die Entscheidungsfindung zu unterstützen.
In diesem Artikel stellen wir einen sehr einfachen, selbst erstellten Personenzähler vor und streamen seine Daten in die Ubidots Cloud, wo bessere Erkenntnisse gewonnen werden können.
Ich habe es einen Tag vor einer Demo beim [Boston New Tech Meetup](http://www.youtube.com/watch?v=cSbjFs7XOQs) letzte Woche gebaut, daher kann ich Ihnen sagen, dass es ein schnelles und kostengünstiges DIY-Projekt war Projekt!
# **Was ist Ubidots ?**

# [**Kostenlos anmelden**]( ubidots )

Ubidots ist ein Cloud-Dienst, mit dem Sie Sensordaten in Echtzeit speichern und analysieren . Sie können damit Anwendungen für das Internet der Dinge erstellen, ohne tiefgreifende Kenntnisse in Webprogrammierung, Datenbanken oder APIs zu haben.

## **Was Sie brauchen**

Raspberry Pi Modell B:

– Ein kleiner Akku mit Micro-USB-Kabel:

– WLAN-USB-Dongle:

 Bewegungssensor von Parallax:

– 3 Buchse-Buchse-Drähte
– Eine kleine Box, in die alle Komponenten passen
## **Verkabelung und Gehäuse**
Wie Sie sehen, hat der Bewegungssensor nur drei Pins: V+, Masse und einen dritten, der das Signal ausgibt: „1“, wenn Bewegung vorhanden ist, und „0“, wenn keine Bewegung vorhanden ist. Es ist nicht nötig, etwas zu löten oder I2C- oder serielle Funktionen zu schreiben, um dieses Signal zu erkennen. Schließen Sie die Kabel einfach direkt an die GPIO-Pins Ihres Raspberry Pi an:
 ![Personenzähler](http://media.tumblr.com/b47fa377202358ca34ca4b883ed90e2e/tumblr_inline_mtlkq6C4oX1s0d61y.png)
So sah es aus:

UPDATE Einem Vorschlag von Doug Jefferies folgend (Danke!), sind die GPIOs des Raspberry Pi für 3,3 V ausgelegt, aber wir setzen dort auf 5 V. Es ist also eine bessere Idee, eine Verbindung herzustellen:

V+ –> Pin Nr. 1 (3,3 V).

Da der Sensor sehr empfindlich auf Bewegungen reagiert, habe ich den Jumper-Schalter dahinter verwendet, um die niedrigste Empfindlichkeit einzustellen. Außerdem habe ich es in ein dunkles Gehäuse mit kleiner Blende gesteckt, damit sich die Bewegungserkennung auf einen Punkt konzentriert und nicht so omnidirektional ist:

Codierung

An dieser Stelle gehen wir davon aus, dass Sie eine grundlegende Einrichtung Ihres Raspberry Pi durchgeführt haben und sich dessen Linux-Befehlszeile ansehen. Wenn nicht, empfehlen wir, [zuerst diese Anleitung durchzugehen]( ubidots ). Sie können auch [diesen Beitrag über die WiFi-Einrichtung des Raspberry Pi lesen.](/setup-wifi-on-raspberry-pi-using-wicd)
Stellen wir sicher, dass wir alle Bibliotheken haben:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip install ubidots

Erstellen Sie eine neue Datei mit dem Namen „peoplecounter.py“:

$ sudo nano peoplecounter.py

Und schreiben Sie den folgenden Code hinein. Stellen Sie sicher, dass Sie die Werte des API-Schlüssels und der Variablen-ID durch die Werte in Ihrem persönlichen Ubidots -Konto .

(Hinweis: Der Code ist nicht allzu elegant, aber hey, ich bin kein Python-Entwickler, sondern nur ein Hardware-Typ 🙂

von 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("5238cec3f91b282c7357a 140") außer: print „Es konnte keine Verbindung zur API hergestellt werden, überprüfen Sie Ihre Internetverbindung“ counter = 0 peoplecount = 0 while(1): Anwesenheit = GPIO.input(7) if(presence): peoplecount += 1 Anwesenheit = 0 Mal. sleep(1.5) time.sleep(1) counter += 1 if(counter==10): print peoplecount people.save_value({'value':peoplecount}) counter = 0 peoplecount = 0

Das Skript besteht aus einer Schleife, die den Zustand von Pin Nr. 7 (dem Bewegungssensor) überprüft. Wenn eine „1“ angezeigt wird, was bedeutet, dass eine Bewegung stattgefunden hat, erhöht es die Variable „peoplecount“ und wartet 1,5 Sekunden, damit der Bewegungssensor wieder in den Normalzustand wechselt. Dies wird 10 Mal durchgeführt, wobei darauf zu achten ist, dass zwischen jedem Zyklus mindestens 1 Sekunde liegt. Anschließend wird die Gesamtsumme der „Bewegungen“ an Ubidots gesendet. Wenn Sie den Personenzähler kalibrieren müssen, sollten Sie anschließend mit den „time.sleep“-Zeilen mit anderen Werten experimentieren.
Wenn das Skript fertig ist, können Sie es über die Konsole ausführen:
 

$ python peoplecounter.py

Das ist es! So sahen die Rohdaten in meinem Fall aus:
![Bild](http://media.tumblr.com/a3b6312a2a69679f5b9c71ce3246b141/tumblr_inline_mtlpgceZIm1s0d61y.jpg)

Da sich die Daten nun in der Cloud befinden, können Sie Ihrem dashboard Widgets hinzufügen, um die Aktivität in Echtzeit anzuzeigen. Sie können in Ihrem Ubidots Konto auch „Ereignisse“ konfigurieren, sodass Sie eine SMS- oder E-Mail-Benachrichtigung erhalten, wenn Ihre Variable ein bestimmtes Limit erreicht.

Abschluss

Dieses Projekt liefert einen Hinweis auf die Anzahl der Personen, die einen bestimmten Punkt passieren. Aufgrund der Einschränkungen des Bewegungssensors wird nicht die genaue Anzahl der Personen angegeben, aber in einigen Anwendungen reicht dies möglicherweise gerade aus.

Ausgefeiltere Personenzähler verwenden Kameras und Bildverarbeitungsalgorithmen, um zu erkennen, um welches sich bewegende Objekt es sich handelt (Person, Auto, Haustier usw.), in welche Richtung es sich bewegt (hinein/heraus, links/rechts) und sie könnten theoretisch sogar erweitert werden , um das Alter und Geschlecht der Person zu kennen.

Eine andere Möglichkeit, Menschen zu erkennen, besteht darin, die Funksignale ihrer Smartphones passiv zu erfassen, z. B. WLAN oder Bluetooth ( sehen Sie sich an, wie dieser Typ Smartphones in der Nähe seines Hauses erkannte ). Letztlich soll die iBeacon -Technologie auch ein großer Enabler dieser Anwendungen sein.

Ubidots gesendet werden Warnungen, Live dashboards oder die Einbindung in andere Systeme interpretiert werden können

Haben Sie Ideen für Sensorprojekte?

Erstellen Sie ein Ubidots -Konto und verwirklichen Sie es!