Bauen Sie einen Personenzähler für 30 $mit einem ESP8266 und einem NodeMCU
Ein Personenzähler misst die Anzahl der Personen, die einen Eingang, einen Flur, eine Straßenecke usw. passieren. Wenn Sie wissen möchten, wie viele Menschen sich in einem Raum aufhalten, ist dies die einfache Lösung. Typischerweise werden solche Zähler im Einzelhandel, bei Großveranstaltungen und in intelligenten Bürogebäuden eingesetzt. Diese Zähltechnologie liefert Erkenntnisse sowohl über die Anzahl der Personen in einer Umgebung als auch über deren Verhalten. Stellen Sie sich vor, Sie sind der Ladenbesitzer: Dieser Zähler informiert Sie über die täglichen Besucherzahlen, die Laufwege, die häufigsten Haltepunkte und die Verweildauer einzelner Personen. Wäre es nicht interessant zu wissen, welche Materialien/Produkte die größte Aufmerksamkeit erregen? Mit diesen Erkenntnissen kann ein Marketingexperte Produkte geografisch neu positionieren, um die Bekanntheit zu steigern. Davon profitieren sowohl die Bedürfnisse Ihrer Kunden als auch Ihr Geschäftsergebnis.
In dieser Anleitung erfahren Sie, wie Sie einen eigenen Personenzähler bauen. Außerdem finden Sie darin Anweisungen, wie Sie Ihre gesammelten Daten über Ubidots, eine Plattform zur Anwendungsentwicklung, nutzen können.
Benötigte Materialien
- ESP8266 NodeMCU

- PIR-Bewegungsmelder

- Buchse – Buchse Drähte

- Kunststoff-Schutzhülle

- Micro-USB-Kabel

Verkabelung und Gehäuse
Wie Sie sehen, verfügt der Bewegungssensor über drei Pins: V+, Masse und einen dritten für das Ausgangssignal („1“ = Bewegung, „0“ = statische Umgebung). Schließen Sie zunächst die Kabel direkt an die Pins Ihres NodeMCU an. Beachten Sie dabei die Tabelle und das Diagramm unten
| NodeMCU | PIR-Sensor | NodeMCU | LED | |
|---|---|---|---|---|
| GND | GND | GND | GND | |
| D6 | AUS | D4 | VCC | |
| 3,3 V | VCC |
Da der PIR-Bewegungsmelder sehr empfindlich auf Bewegungen reagiert, habe ich einen Jumper-Schalter dahinter angebracht, um die Empfindlichkeit auf die niedrigste Stufe einzustellen. Außerdem habe ich die Ecken der Linse abgeklebt, um den Fokus auf einen bestimmten Bereich anstatt auf eine Rundumsicht zu legen. (Seien Sie kreativ und experimentieren Sie!) Das Ergebnis dieser wenigen zusätzlichen Minuten Arbeit ist das benutzerfreundliche, kompakte Gerät, das unten abgebildet ist.

Nachdem Gehäuse und Gerät zusammengebaut sind, müssen wir nun eine Verbindung zur Arduino IDE herstellen.
Verbinden Sie zunächst Ihren NodeMCU mithilfe des Micro-USB-Kabels mit dem USB-Anschluss Ihres Computers
Hinweis Arduino IDE noch nicht installiert haben , klicken Sie hier zum Herunterladen.
1. Öffnen Sie die Arduino IDE und wählen Sie „Datei“ → „Einstellungen“. Geben Sie anschließend die folgende URL in das Textfeld „ Zusätzliche Boardverwalter-URLs“
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Hinweis : Mac-Nutzer beachten bitte, dass Arduino im Vergleich zu Windows andere Dropdown-Menüfunktionen bietet. Außerdem benötigen Sie den folgenden Treiber , um Ihren NodeMCU hochladen zu können.

2. Öffnen Sie den Boardverwalter über das Menü „Werkzeuge“ → „Board“ und installieren Sie die ESP8266-Plattform. Um das richtige Gerät zu finden, suchen Sie einfach in der Suchleiste nach „ESP8266“

3. Wählen Sie Ihr NodeMCU 1.0 (ESP-12 Modul) im Tools > Board .

Darüber hinaus müssen wir mit dem NodeMCU kommunizieren können; wählen Sie den richtigen Port com für Ihr Gerät aus.
Gehen Sie zu Tools > Port > Wählen Sie den passenden PORT für Ihre Computer-/Geräteverbindung aus.

Damit alles schnell und reibungslos läuft, sollten wir außerdem sicherstellen, dass die Upload-Geschwindigkeit 115200 optimiert ist
Gehen Sie zu Tools > Upload-Geschwindigkeit > 115200:

4. Als Nächstes müssen wir die Ubidots MQTT ESP-Bibliothek von GitHub herunterladen. Öffnen Sie dazu die MQTT ESP-Bibliothek hier , laden Sie die Bibliothek herunter, indem Sie auf die grüne Schaltfläche „ Clone or download “ klicken und „ Download ZIP “ auswählen.

5. Wechseln Sie nun zurück zu Ihrer Arduino IDE, klicken Sie auf Sketch -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen.
6. Wählen Sie die .ZIP-Datei von ubidots MQTTESP und klicken Sie dann auf „ Akzeptieren “ oder „ Auswählen “.
Bei erfolgreicher Installation erhalten Sie in der Arduino IDE die folgende Meldung, die Ihre Bibliothek bestätigt:

7. Gehen Sie anschließend zu Sketch/Programme → Bibliothek einbinden → Bibliotheksverwaltung und installieren Sie die PubSubClient -Bibliothek. Um die richtige Bibliothek zu finden, suchen Sie einfach in der Suchleiste nach „PubSubClient“

8. Schließen Sie die Arduino IDE und öffnen Sie sie erneut. Dieser Neustart ist erforderlich. Bitte überspringen Sie diesen Schritt nicht!
Jetzt ist es an der Zeit, mit dem Programmieren zu beginnen 🙂
Kopiere den unten stehenden Code und füge ihn in die Arduino IDE ein.
Nachdem Sie den Code kopiert haben, müssen Sie die Parameter zuweisen: WLAN-Name und -Passwort sowie Ihr individuelles Ubidots Token. Falls Sie nicht wissen, wo Sie Ihr Ubidots Token finden, lesen Sie bitte den folgenden Artikel.
// Erstellt von: Maria Carlina Hernandez /**************************************** * Eingebundene Bibliotheken ****************************************/ #include "UbidotsESPMQTT.h" /**************************************** * Konstanten definieren ****************************************/ #define TOKEN "..." // Ihr Ubidots -Token #define WIFINAME "..." // Ihre SSID #define WIFIPASS "..." // Ihr WLAN-Passwort #define DEVICE "pir-sensor" // Gerätebezeichnung zuweisen #define VARIABLE "motion" // Variablenbezeichnung zuweisen #define LED 2 #define SENSOR D6 uint8_t counter=0; unsigned long state = 0; Ubidots client(TOKEN); /**************************************** * Hilfsfunktionen ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Nachricht angekommen ["); Serial.print(topic); Serial.print("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(SENSOR, INPUT); pinMode(LED, OUTPUT); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if (!client.connected()) { digitalWrite(LED, LOW); client.reconnect(); digitalWrite(LED, HIGH); } else { digitalWrite(LED, HIGH); } uint8_t sensorValue = digitalRead(SENSOR); bool flag = false; if(sensorValue> 0){ for(uint8_t wait=0; wait<=4; wait++){ sensorValue = digitalRead(SENSOR); Serial.println(sensorValue); if(sensorValue==1){ counter++; } if(counter>3){ flag = true; } delay(500); } } Serial.println("Daten werden gesendet"); uint8_t value; if(flag){ value = 1; client.add(VARIABLE, value);ubidotsPublish(DEVICE); }else{ value = 0; if(state == 10000){ client.add(VARIABLE, value);ubidotsPublish(DEVICE); state = 0; } } state++; client.loop(); counter = 0; }
Nachdem Sie den Code eingefügt und die WLAN-Parameter aktualisiert haben, müssen Sie dies in der Arduino IDE überprüfen. Dazu sehen Sie oben links in der Arduino IDE die untenstehenden Symbole. Wählen Sie das Häkchen-Symbol, um den Code zu bestätigen.

Sobald der Code verifiziert ist, erhalten Sie in der Arduino IDE die Meldung Kompilierung abgeschlossen

Als Nächstes müssen Sie den Code auf Ihren NodeMCU hochladen. Wählen Sie dazu das Pfeilsymbol nach rechts neben dem Häkchensymbol.

Sobald der Code hochgeladen ist, erhalten Sie in der Arduino IDE die Meldung Hochladen abgeschlossen

Ihr Sensor sendet nun Daten an die Ubidots Cloud!
Status-LED
Sobald Ihr Code hochgeladen ist, zeigt Ihnen die integrierte LED den Verbindungsstatus des Geräts an.
- LED leuchtet -> OK, Gerät verbunden und sendet Daten.
- LED blinkt (1 Sekunde) -> Verbindungsversuch. Verbindung unterbrochen. Kein Internetzugang.
- LED aus -> Gerät nicht angeschlossen
Datenverwaltung in Ubidots
Ubidots im Gerätebereich ein neues Gerät angezeigt . Der Name des Geräts lautet „ sensor-pir “, und innerhalb des Geräts wird die Variable „ motion “
Wenn Sie Ihre Geräte- und Variablennamen in benutzerfreundlichere Namen ändern möchten, lesen Sie bitte diesen Artikel

Um die Anzahl der von Ihrem Gerät erkannten Personen zu zählen, müssen wir als Nächstes eine neue abgeleitete Variable erstellen, um die Daten verwalten und die Anzahl der erkannten Personen zählen zu können.
Klicken Sie auf „ Variable hinzufügen “ und wählen Sie „ Synthetisch “ aus:

Wählen Sie das Gerät „ PIR-Sensor “ und die Variable „ Bewegung “ aus. Berechnen Sie anschließend die Summe in jedem gewünschten Zeitintervall (1 Minute, 1 Stunde, 1 Tag), um die Anzahl der erfassten Personen zu ermitteln. Klicken Sie auf „Speichern“ und geben Sie der Variable einen Namen. Ihre Formel sieht dann etwa wie folgt aus:
sum(motion, "1H")

Sobald Ihre Variable erstellt ist, erhalten Sie die Anzahl der in dieser neuen synthetischen Variable erfassten Personen. Nachfolgend sehen Sie eine Veranschaulichung des Endergebnisses:

Ergebnis
Dieses Projekt informiert Administratoren und Entscheidungsträger über die Anzahl der Personen, die einen bestimmten Bereich passieren, und deren Verhalten. Bitte beachten Sie, dass aufgrund der Einschränkungen des Bewegungsmelders nicht jede Person erfasst werden kann. Sichtkontakt ist für uns Menschen wichtig, und auch Maschinen haben damit Schwierigkeiten. Wir arbeiten jedoch an einer Lösung!
Jetzt ist es an der Zeit, ein dashboard , um die Variablen Ihres eigenen Personenzählers zu steuern und zu verwalten. Um mehr über Ubidots -Widgets und -Ereignisse zu erfahren, sehen Sie sich diese Video-Tutorials und melden Sie sich noch heute kostenlos an !