Inhaltsverzeichnis:

So bauen Sie ein Bewegungserkennungssystem mit Arduino - Gunook
So bauen Sie ein Bewegungserkennungssystem mit Arduino - Gunook

Video: So bauen Sie ein Bewegungserkennungssystem mit Arduino - Gunook

Video: So bauen Sie ein Bewegungserkennungssystem mit Arduino - Gunook
Video: MIDI-Controller selber bauen (E01) (Tutorial deutsch, für Arduino-Anfänger) 2024, Juli
Anonim
So bauen Sie ein Bewegungserkennungssystem mit Arduino
So bauen Sie ein Bewegungserkennungssystem mit Arduino

Erstellen Sie einen Bewegungs- und Präsenz-Produktionszähler mit einem Feather HUZZAH, der mit Arduino programmiert und von Ubidots betrieben wird.

Eine effektive Bewegungs- und Anwesenheitserkennung in Smart Homes und Smart Manufacturing kann in Anwendungen wie älteren Ambient Assisted Living (AAL)-Lösungen oder einem Produktionszählsystem, das ein größeres MES speist, sehr nützlich sein. Andere Anwendungen für die Bewegungs- und Anwesenheitserkennung umfassen, sind aber nicht beschränkt auf:

  1. Tür- und Torautomation
  2. Parksensoren zur Kennzeichnung von freien Plätzen
  3. Fernüberwachung des Tankfüllstands
  4. Smart Homes und Einrichtungen für Beleuchtung und Sicherheit
  5. Stückerkennung und Zählung in Förderstrecken
  6. Markenerkennung auf bedruckten Materialien
  7. Flüssigkeitserkennung in Karton-, Kunststoff- und Papierneigungen
  8. Entfernungserkennung
  9. Personenzähler

Während es viele Anwendungen für Präsenz und Bewegung gibt, gibt es ebenso viele Sensoren zur Datenerfassung, wie kapazitive, induktive, photoelektrische und Ultraschallsensoren. Abhängig von den Kosten, Umgebungsbedingungen und Genauigkeitsanforderungen sollte man die am besten geeignete Hardware für eine Umgebung und Anwendungsanforderungen auswählen.

In diesem Tutorial konzentrieren wir uns auf den Aufbau eines Echtzeit-Produktionszählers; Die Anwendung zählt jede Einheit, die auf einem Förderband vorbeifährt. Wir werden die Arduino IDE verwenden, um einen Feather HUZZAH ESP8266, einen Ultraschallsensor und Ubidots zu programmieren, um unsere Anwendung zu entwickeln und unser IoT-Dashboard anzuzeigen.

Schritt 1: Anforderungen

  1. Feder HUZZAH mit ESP8266MB7389-100
  2. Ultraschallsensor
  3. Arduino IDE 1.8.2 oder höher
  4. Ubidots-Konto -oder-STEM-Lizenz

Schritt 2: Einrichtung

  • I Hardware-Setup
  • II. Firmware-Setup
  • III. Ubidots-Anwendungsentwicklung (Ereignisse, Variablen und Dashboards)

Schritt 3: Hardware-Setup

Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup

Der Ultraschallsensor MB7389-100 ist dank seiner IPv67-Einstufung eine kostengünstige Option für industrielle Anwendungen mit Weitbereichs- und geringen Stromverbrauchsanforderungen bei schwierigen Wetterbedingungen.

Um zu beginnen, spiegeln Sie das Diagramm unten, um den Ultraschallsensor am Feather HUZZAH ESP8266 zu befestigen.

HINWEIS: Der Sensormesswert kann als analoge Messwerte oder als PWM erfolgen; Im Folgenden erklären wir die Einrichtung für das PWM-Lesen, weitere Informationen finden Sie in den oben gezeigten Beispielen.

[Optional] Platzieren Sie den Mikrocontroller und die Sensoren im IP67-Gehäuse, um sie vor Staub, Wasser und anderen bedrohlichen Umweltfaktoren zu schützen. Das Standardgehäuse sieht ähnlich aus wie auf den Fotos oben.

Schritt 4: Firmware-Setup

Firmware-Setup
Firmware-Setup
Firmware-Setup
Firmware-Setup

Zuerst sollten Sie die Feather Huzzah in der Arduino IDE installieren und den Code kompilieren. Denken Sie daran, diese Einrichtung durch einen einfachen Blinktest zu überprüfen. Weitere Informationen zum Anschließen Ihres Feather-Geräts finden Sie in dieser hilfreichen Anleitung zur Hardware-Einrichtung.

Um Sensordaten an die Ubidots IoT Development Platform zu senden, kopieren Sie den folgenden Code und fügen Sie ihn in die Arduino IDE ein. Denken Sie daran, den Wi-Fi-Netzwerknamen, das Passwort und das Token Ihres Ubidots-Kontos zuzuweisen, wo im Code angegeben.

/******************************** Bibliotheken enthalten ************** ****************/#enthalten /****************************** ** Konstanten und Objekte ****************************** //* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // Tragen Sie hier Ihre SSID nameconst char* ein SSID_PASS = "xxxxxxxx"; // Geben Sie hier Ihr Passwort ein const char* TOKEN = "Asssig_your_ubidots_token"; // Geben Sie hier Ihren TOKENconst char* ein DEVICE_LABEL = "motion-control"; // Ihr Gerät labelconst char* VARIABLE_LABEL = "distance"; // Ihre Variable labelconst char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Ubidots Business-Benutzer//const char* HTTPSERVER = " Dinge.ubidots.com"; // Ubidots Educational usersint HTTPPORT = 80;/* Ultraschallsensor */const int pwPin1 = 5; // Der PWM-Pin, an dem der Sensor angeschlossen istWiFiClient clientUbi;/******************************** Hilfsfunktionen *** ************************** //** Ermittelt die Länge des Körpers @arg Variable den Körper vom Typ char @return dataLen the Länge der Variablen*/int dataLen(char* variable) { uint8_t dataLen = 0; for (int i = 0; i distance / 25,4 */ float distance = pulseIn(pwPin1, HIGH); sendToUbidots(DEVICE_LABEL, VARIABLE_LABEL, distance); delay(1000);}void sendToUbidots(const char* device_label, const char* variable_label, float sensor_value) { char* body = (char *) malloc(sizeof(char) * 150); char* data = (char *) malloc(sizeof(char) * 300); /* Platz zum Speichern der zu sendenden Werte * / char str_val[10]; /*---- Transformiert die Werte der Sensoren in den Typ char -----*/ /* 4 ist die minimale Breite, 2 ist die Genauigkeit; Float-Wert wird auf str_val kopiert*/ dtostrf(sensor_value, 4, 2, str_val); /* Baut den Body, der in die Anfrage gesendet werden soll*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* Baut das HTTP Request to be POST */ sprintf(data, "POST /api/v1.6/devices/%s", device_label); sprintf(data, "%s HTTP/1.1\r\n", data); sprintf(data, "%sHost: things.ubidots.com\r\n", data); sprintf(data, "%sUser-Agent: %s/%s\r\n", data, USER_AGENT, VERSION); sprintf(data, "%sX-Auth-Token: %s\r\n", Daten, TOKEN); sprint f(Daten, "%sVerbindung: schließen\r\n", Daten); sprintf(data, "%sContent-Type: application/json\r\n", data); sprintf(data, "%sContent-Length: %d\r\n\r\n", data, dataLen(body)); sprintf(Daten, "%s%s\r\n\r\n", Daten, Hauptteil); /* Erstverbindung */ clientUbi.connect(HTTPSERVER, HTTPPORT); /* Überprüfen Sie die Client-Verbindung */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F("Posting your variables:")); Serial.println (Daten); /* HTTP-Request senden */ clientUbi.print(data); } /* Während der Client verfügbar ist, die Antwort des Servers lesen */ while (clientUbi.available()) { char c = clientUbi.read(); Serial.write (c); } /* Freier Speicher */ free(data); frei(Körper); /* Stoppen Sie den Client */ clientUbi.stop();}

ProTip: Sie können überprüfen, ob Ihr Gerät richtig angeschlossen ist, indem Sie den seriellen Monitor in der Arduino IDE öffnen.

Sie können überprüfen, ob ein Gerät in Ihrem Ubidots-Backend erstellt wurde, indem Sie es in Ihrem Konto Geräteverwaltung -> Geräte anzeigen.

Wenn Sie auf Ihr Gerät klicken, finden Sie eine Variable namens "Entfernung", in der die Messwerte des Sensors gespeichert werden. Dieser Name wurde in dem Code zugewiesen, den Sie gerade in die Arduino IDE eingefügt haben. Wenn Sie Ihre automatischen Variablen anpassen möchten, können Sie dies tun, indem Sie die Gerätekarte bearbeiten oder einen aktualisierten Code mit der richtigen Variablennomenklatur für Ihre Anwendung flashen.

Wenn der Feather HUZZAH ESP8266 verbunden ist und Daten an Ubidots meldet, ist es jetzt an der Zeit, die Anwendung mit Ubidots sorgfältig entworfener codefreier Anwendungskonfiguration zu erstellen.

Schritt 5: Ubidots-Anwendungsentwicklung

Ubidots-Anwendungsentwicklung
Ubidots-Anwendungsentwicklung
Ubidots-Anwendungsentwicklung
Ubidots-Anwendungsentwicklung
Ubidots-Anwendungsentwicklung
Ubidots-Anwendungsentwicklung

Ubidots-Ereigniskonfiguration

Die aktuellen Messwerte, die wir an Ubidots senden, sind Entfernungseingaben. Um diese Messwerte in die gewünschte Ausgabe zu übersetzen – gezählte Einheiten – sollten wir ein Ereignis mit den folgenden Schritten erstellen:

  1. Erstellen Sie im aktuellen Gerät "motion-control" eine neue Standardvariable namens "boxes", die jedes Mal eine 1 erhält, wenn eine neue Einheit gezählt wird.
  2. Gehen Sie zu Geräteverwaltung -> Ereignisse und klicken Sie auf das blaue Plussymbol in der oberen rechten Ecke der Seite, um ein neues Ereignis hinzuzufügen.
  3. Konfigurieren Sie Ihr Ereignis beginnend mit "Wenn Trigger":
  • Wählen Sie eine Variable aus: "Entfernung"
  • Wert: Wert (Standard)
  • Ist kleiner oder gleich [der maximal erwarteten Entfernung} zwischen dem Sensor und den vorbeifahrenden Kartons * unsere Anwendung erfordert 500 mm
  • Für 0 Minuten
  • Speichern

4. Nachdem die Trigger gemäß den Spezifikationen Ihrer Anwendung konfiguriert wurden, klicken Sie auf das orangefarbene „Plus“-Symbol in der oberen rechten Ecke, um eine bedingte Aktion hinzuzufügen.

5. Wählen Sie als Aktion „Variable setzen“.

6. Als nächstes wählen Sie die zuvor erstellte Standardvariable „boxes“und den Wert „1“.

7. Änderungen speichern. Wenn das Ereignis richtig eingerichtet ist, sendet es jedes Mal eine "1", wenn der Abstand zwischen dem Sensor und dem Gerät länger als ein angezeigter Schwellenwert ist, was darauf hindeutet, dass sich kein Objekt in der Nähe befindet - und sollte eine neue Einheit zählen, die gerade vorbeigekommen ist.

Auf der federspezifischen Gerätekarte finden Sie die Variablen "Boxen", in denen eine "1" gesendet wird, wenn die Anwesenheit einer Einheit erfasst wird.

Dieser Prototyp ist besonders nützlich für industrielle Förderbänder und die Stückzählung und kann an unterschiedliche Umgebungen oder Hardware einfach in Ihrer Codierung oder Ihrer Anwendungsentwicklung angepasst werden.

8. Visualisieren Sie die Anzahl der erfassten Einheiten (oder wie oft ein Objekt erkannt wurde) Nun erstellen wir mit der Variablen "boxes" eine neue rollende Fenstervariable, um die Gesamtmenge der von der Variablen "boxes" empfangenen Messwerte in. zu summieren ein definierter Spam (Minuten, Stunden, Tage, Wochen usw.). Um diese Entwicklung auszuführen, folgen Sie diesen einfachen Schritten:

Weisen Sie Ihrer neuen Rolling Window-Variable die folgenden Anmeldeinformationen zu

Wählen Sie ein Gerät aus: Bewegungssteuerung (oder den Namen des Geräts, an das Sie Ihre Daten senden)

Wählen Sie eine Variable aus: Kästchen

Berechne die: Summe

Jede: "1" Stunde (oder nach Ihren Bewerbungswünschen)

Weisen Sie nun der neuen Variablen einen Namen zu, der die Anzahl der in einer Stunde gezählten Boxen (oder Bewegungen) angibt, genau wie "Boxen/Stunde" oder "Einheiten/Stunden".

Schritt 6: Dashboard-Konfigurationen

Dashboard-Konfigurationen
Dashboard-Konfigurationen

Erstellen Sie schließlich ein Dashboard, um die Anzahl der erfassten Einheiten anzuzeigen.

Gehen Sie zu Geräteverwaltung –> Dashboards und fügen Sie ein neues Widget hinzu. Dieses Widget zeigt die Anzahl der heute gezählten Boxen nach Stunden aufgeschlüsselt an.

Weisen Sie Ihrem neuen Widget die folgenden Anmeldeinformationen zu, um Ihre Zählung zu visualisieren.

Wie möchten Sie Ihre Daten sehen?: Diagramm

Wählen Sie einen Widget-Typ aus: Liniendiagramm

Gerät hinzufügen: Bewegungssteuerung

Fügen Sie eine Variable hinzu: Boxen/Stunde

Beenden. Und mit dieser abschließenden Dashboard-Entwicklung ist Ihre Anwendung abgeschlossen und Sie verfügen nun über ein effizientes und effektives Bewegungs- und Anwesenheitserkennungssystem. Hier ein abschließender Blick auf unsere Ergebnisse.

Empfohlen: