Inhaltsverzeichnis:

Der Path Mapper - Gunook
Der Path Mapper - Gunook

Video: Der Path Mapper - Gunook

Video: Der Path Mapper - Gunook
Video: Thoughts from West Africa: Two decades of protecting human rights and the environment 2024, November
Anonim
Der Path Mapper
Der Path Mapper
Der Path Mapper
Der Path Mapper
Der Path Mapper
Der Path Mapper

In diesem IoT-Projekt verdrahten wir ein NEO-6M (GPS-Modul), um Standortdaten über den Arduino an eine Excel-Tabelle zu liefern, die auf dem Computer gespeichert wird. Anschließend erstellen wir mit Tableau Public eine Datenvisualisierung dieser Daten, um den eingeschlagenen Weg abzubilden. Dies ist zwar eine Möglichkeit zum Sammeln und Präsentieren von Echtzeitdaten in einer hochkorrelierten Datenvisualisierung, dieser Prozess kann jedoch auch auf andere datengesteuerte Projekte angewendet werden.

Schritt 1: Materialien beschaffen

Beschaffung von Materialien
Beschaffung von Materialien

Für dieses Projekt benötigen Sie Folgendes:

  • NEO-6M GPS-Modul
  • Arduino Uno
  • Männliche / männliche Überbrückungsdrähte (Sie benötigen 4 Drähte)
  • USB 2.0 Kabel Typ A auf B
  • Computer mit diesen Programmen: Tableau Public, Arduino IDE (mit TinyGPS++) und Processing

Schritt 2: Einrichten der Geräte

Einrichten der Geräte
Einrichten der Geräte
Einrichten der Geräte
Einrichten der Geräte

Wir müssen zuerst das GPS-Modul mit dem Arduino UNO einrichten, damit der Arduino uns eine Schnittstelle zur Anzeige der Daten zur Verfügung stellt. Jeder der vier an den NEO-6M angeschlossenen Drähte entspricht bestimmten Ports. Wenn Ihr NEO-6M nicht mit den Drähten geliefert wird, müssen Sie es direkt mit Überbrückungsdrähten verdrahten. Im obigen Diagramm entspricht Rot der Stromversorgung (VCC), Schwarz der Masse (GND), Gelb dem Senden von Daten (TxD) und Weiß dem Empfangen von Daten (RxD). Wir verbinden diese Drähte mit männlichen / männlichen Überbrückungsdrähten, damit wir sie mit dem Arduino verbinden können. Nach dem obigen Diagramm verbinden wir das Erdungskabel mit dem digitalen GND-Pin des Arduino, das TxD-Kabel mit 4, das RxD-Kabel mit ~ 3 und das VCC-Kabel mit 5 V für Spannung. In einem zukünftigen Schritt müssen wir TxD und RxD mit den richtigen Zahlen in der SoftwareSerial definieren.

Sobald die beiden Geräte miteinander verkabelt sind, müssen wir eine Stromquelle bereitstellen. Schließen Sie das USB 2.0-Kabel an Ihren Laptop an und das Licht am NEO-6M sollte aufleuchten.

Schritt 3: Codieren des Arduino zum Extrahieren von Daten

Codieren des Arduino zum Extrahieren von Daten
Codieren des Arduino zum Extrahieren von Daten

Nachdem wir nun die Geräte eingerichtet haben, um GPS-Daten von den Satelliten zu sammeln, schreiben wir Code, um die gewünschten GPS-Daten zu analysieren. Angenommen, Sie haben ein Signal empfangen (mein GPS-Modul würde blau blinken), druckt der NEO-6M standardmäßig Rohdaten in Form von NMEA-Nachrichten auf dem seriellen Monitor aus, die etwa wie $GP aussehen, gefolgt von weiteren Buchstaben und einer Reihe von Zahlen. Das obige Bild gibt eine allgemeine Vorstellung davon, was auf Ihrem seriellen Monitor angezeigt werden sollte, sobald der grundlegende Arduino-Code eingegeben wurde.

Um den Code zu erklären, den ich angehängt habe (oder wenn Sie versuchen möchten, ihn selbst zu codieren), müssen Sie zuerst sowohl die SoftwareSerial- als auch die TinyGPS++-Bibliothek einschließen (für letztere Sketch> Einschließen>. ZIP-Bibliothek hinzufügen). SoftwareSerial ermöglicht uns eine serielle Verbindung; TinyGPS++ bietet uns ein einfaches Werkzeug, um die gezielten Informationen in lesbarer Form auszudrucken. Stellen Sie sicher, dass Sie das SoftwareSerial-Objekt mit den entsprechenden Pins auf dem Arduino initialisieren. In der Setup-Funktion verwenden wir 9600 als Baudrate.

Zu diesem Zweck drucken wir nur sieben Arten von Daten in der Schleifenfunktion aus: Breite (Grad), Länge (Grad), Geschwindigkeit (km), Kurs (Grad), Höhe (km), Anzahl der Satelliten in verwenden und hdop. Sie können die Syntax zum Ausdrucken dieser Informationen in der Arduino-Bibliothek durchsuchen. Die allgemeine Form ist Serial.print(). Um beispielsweise den Längengrad auszudrucken, geben wir Serial.print(gps.location.lng(), 6) ein. Die 6 stellt dar, wie viele Stellen wir rechts vom Dezimalpunkt haben möchten.

Mein Code enthält zusätzliche Zeichen, um im nächsten Schritt eine einfach zu formatierende Regex zu erhalten. Wenn Sie bei diesem Schritt jedoch aufhören möchten, können Sie die Daten zur besseren Anzeige auf dem seriellen Monitor anders formatieren.

Schritt 4: Verarbeitung zum Zuhören verwenden

Verarbeitung zum Zuhören verwenden
Verarbeitung zum Zuhören verwenden

Während wir Code für die Arduino IDE eingerichtet haben, haben wir ein Problem beim Speichern dieser Daten. Derzeit können wir die Daten nur auf dem seriellen Monitor anzeigen, während wir sie sammeln. Es gibt viele Möglichkeiten, diese Daten zu protokollieren, aber ich habe mich hauptsächlich für Processing entschieden, weil seine Schnittstelle die Arduino-IDE nachahmt und Java verwendet, eine Sprache, mit der ich vertraut bin (beachten Sie, dass Sie das Arduino-Board auch mit Processing steuern können, wenn Sie Firmata herunterladen). Die Verarbeitung hört den mit dem Arduino verbundenen Port ab und hat die Möglichkeit, die auf dem seriellen Monitor gelesenen Daten zu manipulieren. Um den Namen dieses Ports zu finden, rufen Sie Ihre Arduino IDE-Datei auf und überprüfen Sie Tools > Port.

Ich habe den Verarbeitungscode bereitgestellt, aber hier ist eine kurze Übersicht über die Funktionsweise des Codes.

Stellen Sie vor der Einrichtungsfunktion sicher, dass Sie Variablen für den Port, die resultierende Tabelle, die Zeile, mit der wir arbeiten werden, und den Namen der Datei haben. Dann gibt es in der Setup-Funktion Parameter zum Einstellen der Größe Ihres Ausführungsfensters, aber diese Zahlen haben keinen Einfluss auf unsere Funktionalität (stellen Sie sie beispielsweise auf (500, 500) ein). Verwenden Sie beim Initialisieren des Ports den Namen des Ports im String-Format und eine Baudrate von 9600. Erstellen Sie abschließend die neun Spalten (für die sieben GPS-Kategorien, Uhrzeit und Datum), um die Tabelle zu initialisieren.

In der Draw-Funktion verwenden wir die eingebauten Datums- und Zeitfunktionen, um zu verfolgen, wann jeder Satz von GPS-Daten extrahiert wird. Um nun den Datenstrom vom Arduino zu lesen und unter die entsprechenden Header mit der richtigen Uhrzeit und dem richtigen Datum zu setzen, verwenden wir reguläre Ausdrücke.

Ich verwende Regex, um die genauen Daten mit der matchAll-Funktion zu analysieren, die nach einem Ausdruck zwischen dem Gleichheitszeichen und dem Semikolon (den Trennzeichen, die ich in meinen Arduino-Code eingefügt habe) sucht. Dies platziert anschließend alle übereinstimmenden Tags, die numerischen Daten, in einem zweidimensionalen Array. Wir können dann diese Array-Indizes aufrufen, um sie unter die Überschriften des Excel-Blatts zu stellen.

Um die neue.csv-Datei zu speichern, verwenden wir einen Tastendruck, um das Ausführen-Fenster zu schließen. Je länger Sie mit dem Drücken einer Taste warten, desto mehr Daten sammeln Sie. In Anlehnung an eine andere Anleitung habe ich mich auch entschieden, die Datei mit Datum und Uhrzeit als Dateinamen im Datenordner zu speichern.

Schritt 5: Anzeigen von Daten in Tableau Public

Anzeigen von Daten in Tableau Public
Anzeigen von Daten in Tableau Public
Anzeigen von Daten in Tableau Public
Anzeigen von Daten in Tableau Public
Anzeigen von Daten in Tableau Public
Anzeigen von Daten in Tableau Public

Der letzte Schritt beinhaltet eine Datenvisualisierung. Es gibt viele Programme zum Erstellen und Anzeigen von Datenvisualisierungen, z. B. Plotly, aber für dieses Projekt verwenden wir Tableau. Öffnen Sie Tableau Public und öffnen Sie die gespeicherte Excel-Datei als Textdatei. Um ein Arbeitsblatt zu erstellen, klicken Sie unten links auf Blatt 1.

Da wir mit GPS-Daten arbeiten, verwenden wir eine Karte, um unsere Informationen darzustellen. In der linken Spalte, in der Measures steht, ziehen wir Längengrad in Spalten und Breitengrad in Zeilen oben. Tableau verwendet für beide Kennzahlen standardmäßig AVG, klicken Sie also auf das Dropdown-Menü neben den Begriffen und ändern Sie beide in Dimension. Jetzt sollte auf der Karte ein Pfad mit den erfassten Breiten- und Längengradwerten angezeigt werden.

Um Ihre Daten auf Fehler zu bereinigen (was auch vor dem Öffnen von Tableau möglich ist), können Sie einige Ortskreise ausschließen, indem Sie darauf klicken und die Option auswählen. Mein GPS-Modul ist nicht 100% genau, da einige Teile meines Weges nicht geortet wurden, aber der allgemeine Weg wurde aufgezeichnet.

Schritt 6: Verfeinern der Viz

Verfeinerung der Viz
Verfeinerung der Viz

Der letzte Teil besteht darin, diese Daten lesbarer zu machen. Wenn Sie einen Straßenkontext wünschen, können Sie zu Karte > Kartenebene > Straßen und Autobahnen gehen. Fühlen Sie sich frei, mit anderen Marken zu experimentieren. Ich habe Geschwindigkeit über Farbe gezogen, um zu zeigen, wie die Intensität der Farbe mit zunehmender Geschwindigkeit zunimmt. Ich habe auch Detail anstelle von Label für Course verwendet, da Label die Zahlen auf der Karte anzeigt, während ich nur wollte, dass Informationen angezeigt werden, wenn Sie mit der Maus über die Standortpunkte fahren.

Nachdem Sie nun den gesamten Prozess des Sammelns von Daten und der Darstellung Ihrer Daten in einer Datenvisualisierung erlebt haben, können Sie dies auf andere Projekte anwenden!

von Pingdi Huang, Sommer 2018

Empfohlen: