Ubidots

Einen Personenzähler mit Raspberry Pi und Ubidots bauen

Agustin Pelaez
· Lesezeit: 5 Minuten
Per E-Mail versenden
Personenzähler werden hauptsächlich im Einzelhandel eingesetzt, um das Verhalten von Kunden besser zu verstehen. Sie finden aber auch Anwendung in den Bereichen Sicherheit, Veranstaltungsmanagement und Smart City. Stellen Sie sich vor, Sie leiten ein großes Einkaufszentrum: Mithilfe dieser Zähler erfahren Sie, wie viele Personen das Einkaufszentrum betreten und verlassen, welche Wege sie nehmen, wo sie sich aufhalten und – am wichtigsten – wann das alles passiert.
Personenzähler gibt es, wie die meisten Sensoren, 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, selbstgebauten Personenzähler vor und streamen dessen Daten in die Ubidots Cloud, wo sich bessere Erkenntnisse gewinnen lassen.
Ich habe das 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!
# **Was ist Ubidots?**

FunktionenTrigger2

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

Ubidots ist ein Cloud-Dienst, mit dem Sie Sensordaten in Echtzeit speichern und analysieren . Er ermöglicht Ihnen die Entwicklung von Anwendungen für das Internet der Dinge, ohne dass tiefgreifende Kenntnisse edge Webprogrammierung, Datenbanken oder APIs erforderlich sind.

## **Was Sie benötigen**

Raspberry Pi Modell B:

Bild

– Ein kleiner Akku mit Micro-USB-Kabel:

Bild

– WLAN-USB-Dongle:

Bild

 Bewegungssensor von Parallax:

Bild

– 3 Buchsen-Buchsen-Drähte
– Eine kleine Box, in der alle Komponenten Platz finden
## **Verkabelung und Gehäuse**
Wie Sie sehen, hat der Bewegungssensor nur drei Pins: V+, Masse und einen dritten, der das Signal ausgibt: „1“ bei Bewegung und „0“ bei keiner Bewegung. Sie müssen nichts löten oder I2C- oder serielle Funktionen schreiben, um dieses Signal zu erkennen; schließen Sie die Kabel einfach direkt an die GPIO-Pins Ihres Raspberry Pi an
 ![people counter](http://media.tumblr.com/b47fa377202358ca34ca4b883ed90e2e/tumblr_inline_mtlkq6C4oX1s0d61y.png)
So sah es aus:

Bild

UPDATE: Auf Anregung von Doug Jefferies (vielen Dank!): Die GPIOs des Raspberry Pi sind für 3,3 V ausgelegt, wir verwenden aber 5 V. Daher ist folgende Verbindung besser geeignet:

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

Da der Sensor sehr bewegungsempfindlich ist, habe ich den Jumper-Schalter auf der Rückseite verwendet, um die Empfindlichkeit auf die niedrigste Stufe einzustellen. Außerdem habe ich ihn in ein dunkles Gehäuse mit kleiner Öffnung eingesetzt, damit die Bewegungserkennung sich auf einen Punkt konzentriert und nicht so omnidirektional ist

Bild

Bild

Codierung

An dieser Stelle gehen wir davon aus, dass Sie Ihren Raspberry Pi bereits grundlegend eingerichtet haben und die Linux-Befehlszeile verwenden. Falls nicht, empfehlen wir Ihnen, [zuerst diese Anleitung durchzulesen](ubidots). Sie können auch [diesen Beitrag zur WLAN-Einrichtung des Raspberry Pi](/setup-wifi-on-raspberry-pi-using-wicd) lesen
Lasst uns sicherstellen, 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 namens „peoplecounter.py“:

$ sudo nano peoplecounter.py

Fügen Sie anschließend den folgenden Code ein. Achten Sie darauf, die Werte für den API-Schlüssel und die Variable ID durch die Werte Ihres persönlichen Ubidots Kontos .

(Anmerkung: Der Code ist nicht besonders elegant, aber ich bin ja kein Python-Entwickler, sondern nur ein Hardware-Experte 🙂)

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 "Konnte keine Verbindung zur API herstellen. Überprüfen Sie Ihre Internetverbindung." 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

Das Skript besteht aus einer Schleife, die den Status von Pin 7 (dem Bewegungssensor) prüft. Wird eine „1“ erkannt, also eine Bewegung, wird die Variable „peoplecount“ inkrementiert und 1,5 Sekunden gewartet, bis der Bewegungssensor wieder in den Normalzustand zurückkehrt. Dieser Vorgang wird zehnmal wiederholt, wobei zwischen den Durchläufen jeweils mindestens eine Sekunde vergeht. Anschließend wird die Gesamtzahl der Bewegungen an Ubidotsgesendet. Um den Personenzähler zu kalibrieren, können Sie die Werte in den Zeilen mit „time.sleep“ anpassen.
Wenn das Skript fertig ist, können Sie es über die Konsole ausführen:
 

$ python peoplecounter.py

Das war's! So sahen die Rohdaten in meinem Fall aus:
![image](http://media.tumblr.com/a3b6312a2a69679f5b9c71ce3246b141/tumblr_inline_mtlpgceZIm1s0d61y.jpg)

Da die Daten nun in der Cloud gespeichert sind, können Sie Widgets in Ihrem dashboard hinzufügen, um die Aktivitäten in Echtzeit anzuzeigen. Sie können außerdem in Ihrem Ubidots -Konto „Ereignisse“ konfigurieren, sodass Sie per SMS oder E-Mail benachrichtigt werden, sobald eine Variable einen bestimmten Grenzwert erreicht.

Abschluss

Bild

Dieses Projekt liefert einen Anhaltspunkt für die Anzahl der Personen, die einen bestimmten Punkt passieren. Aufgrund der Einschränkungen des Bewegungssensors liefert es keine exakte Personenzahl, aber in manchen Anwendungsfällen mag dies ausreichend sein.

Aufwändigere 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 (nach innen/außen, links/rechts) und könnten theoretisch sogar so erweitert werden, dass sie das Alter und das Geschlecht der Person ermitteln.

Eine weitere Möglichkeit, Personen zu orten, bestünde darin, die Funksignale ihrer Smartphones passiv zu erfassen, beispielsweise WLAN oder Bluetooth ( siehe, wie dieser Mann Smartphones in seinem Haus geortet hat ). Letztendlich dürfte die iBeacon -Technologie ebenfalls eine wichtige Rolle bei der Entwicklung solcher Anwendungen spielen.

Die gesammelten Daten können in jedem Fall problemlos an Ubidots von Warnmeldungen, Live- dashboards oder die Anbindung an andere Systeme interpretiert werden können

Haben Sie Ideen für Sensorprojekte?

Erstelle ein Ubidots Konto und setze deine Träume in die Tat um!