Inhaltsverzeichnis:

Visualisierung von Verkehrsdaten mit Google Map - Gunook
Visualisierung von Verkehrsdaten mit Google Map - Gunook

Video: Visualisierung von Verkehrsdaten mit Google Map - Gunook

Video: Visualisierung von Verkehrsdaten mit Google Map - Gunook
Video: GEHEIMTIPP FÜR GOOGLE MAPS - Mit MyMaps eigene Karten erstellen, Urlaube planen und mehr! 2024, Juli
Anonim
Verkehrsdatenvisualisierung mit Google Map
Verkehrsdatenvisualisierung mit Google Map

Normalerweise wollen wir beim Radfahren verschiedene Daten aufzeichnen, diesmal haben wir neue Wio LTE verwendet, um sie zu verfolgen.

Schritt 1: Dinge, die in diesem Projekt verwendet werden

Hareware-Komponenten

  • Wio LTE EU-Version v1.3- 4G, Cat.1, GNSS, Espruino-kompatibel
  • Grove - Herzfrequenzsensor mit Ohrclip
  • Grove - 16 x 2 LCD (Schwarz auf Gelb)

Software-Apps und Online-Dienste

  • Arduino-IDE
  • PubNub Publish/Subscribe-API
  • Google Maps

Schritt 2: Geschichte

Image
Image

Schritt 3: Hardwareverbindung

Webkonfiguration
Webkonfiguration

Installieren Sie GPS- und LTE-Antennen in Wio LTE und schließen Sie Ihre SIM-Karte an. Schließen Sie den Ohrclip-Herzfrequenzsensor und das 16x2-LCD an den D20- und I2C-Port der Wio LTE an.

Sie können den Ohrclip-Herzfrequenzsensor durch andere Sensoren ersetzen, die Ihnen gefallen. Bitte beachten Sie das Ende dieses Artikels.

Schritt 4: Webkonfiguration

Teil 1: PubNub

Klicken Sie hier, um sich anzumelden oder ein PubNub-Konto zu registrieren. PubNub wird verwendet, um Echtzeitdaten an die Karte zu übertragen.

Öffnen Sie das Demo-Projekt im PubNub-Admin-Portal, Sie sehen einen Veröffentlichungsschlüssel und einen Abonnierschlüssel. Merken Sie sich diese für die Softwareprogrammierung.

Teil 2: Google-Karte

Bitte folgen Sie hier, um einen Google Map API-Schlüssel zu erhalten. Er wird auch in der Softwareprogrammierung verwendet.

Schritt 5: Softwareprogrammierung

Softwareprogrammierung
Softwareprogrammierung

Teil 1: Wio LTE

Da es keine PubNub-Bibliothek für Wio LTE gibt, können wir unsere Daten per HTTP-Anfrage senden, siehe PubNub-REST-API-Dokument.

Um eine HTTP-Verbindung über Ihre in Wio LTE eingesteckte SIM-Karte herzustellen, sollten Sie zuerst Ihren APN einstellen, wenn Sie das nicht wissen, wenden Sie sich bitte an Ihren Mobilfunkanbieter.

Legen Sie dann Ihren PubNub-Veröffentlichungsschlüssel, Ihren Abonnierungsschlüssel und Ihren Kanal fest. Der Kanal hier wird verwendet, um Herausgeber und Abonnenten zu unterscheiden. Zum Beispiel verwenden wir hier Channel bike, alle Abonnenten von Channel bike erhalten von uns veröffentlichte Nachrichten.

Die obigen Einstellungen haben wir nicht in die Klasse gepackt, damit Sie sie in bike.ino einfacher ändern können, können Sie diese Codes am Ende dieses Artikels herunterladen.

Teil 2: PubNub

Halten Sie die Boot0-Taste in Wio LTE gedrückt, verbinden Sie es über ein USB-Kabel mit Ihrem Computer, laden Sie das Programm in Arduino IDE hoch, drücken Sie die Reset-Taste in Wio LTE.

Wechseln Sie dann zu PubNub, klicken Sie im Demoprojekt auf Debug-Konsole, geben Sie den Namen Ihres Kanals in Standardkanal ein, klicken Sie auf Client hinzufügen.

Wenn in der Konsole [1, "Abonniert", "Fahrrad"] angezeigt wird, wurde der Abonnent erfolgreich hinzugefügt. Warten Sie eine Weile, dann werden Wio LTE-Daten in der Konsole angezeigt.

Teil 3: Google-Karte

ENO Maps sind Echtzeitkarten mit PubNub und MapBox, es kann auch für PubNub und Google Map verwendet werden, Sie können es von seinem GitHub herunterladen.

Sie können einfach ein Beispiel namens google-draw-line.html im Beispielordner verwenden, ändern Sie einfach den Publish Key, Subscribe Key, Channel und Google Key in den Zeilen 29, 30, 33 und 47.

HINWEIS: Bitte kommentieren Sie Zeile 42, sonst werden Simulationsdaten an Ihren PubNub gesendet.

Wenn Sie das Herzfrequenzdiagramm im unteren rechten Fenster anzeigen möchten, können Sie Chart.js verwenden, es kann von seiner Website heruntergeladen, in den Stammordner von ENO Maps gelegt und in den Kopf von google-draw-line.html eingefügt werden.

Und fügen Sie eine Leinwand in einem Div hinzu, um das Diagramm anzuzeigen:

Erstellen Sie dann zwei Arrays, um die Diagrammdaten zu behalten

// … var chartLabels = new Array(); var chartData = neues Array(); // …

Darunter werden chartLabels verwendet, um Standortdaten zu speichern, chartData wird verwendet, um Herzfrequenzdaten zu speichern. Wenn Nachrichten eingehen, senden Sie ihnen neue Daten und aktualisieren Sie das Diagramm.

// … var map = eon.map({ message: function(message, timetoken, channel) { // … chartLabels.push(obj2string(message[0].latlng)); chartData.push(message[0].data); var ctx = document.getElementById("chart").getContext('2d'); var chart = new Chart(ctx, { type: 'line', data: { labels: chartLabels, datasets: [{ label: " Herzfrequenz", Daten: chartData }] } }); // … } });

Alles erledigt. Versuchen Sie es beim nächsten Mal mit Ihrem Fahrrad zu nehmen.

Schritt 6: Wie arbeite ich mit anderen Sensor Grove?

Im Programm von Wio LTE können Sie eine oder mehrere benutzerdefinierte Daten verwenden, um sie in einem Diagramm anzuzeigen oder mehr zu tun. Der folgende Artikel zeigt, wie Sie das Programm ändern, um es zu erreichen.

Das erste, was Sie wissen müssen, ist, dass das JSON, das Sie in PubNub veröffentlichen möchten, URL-codiert sein sollte. Codiertes json ist in der BikeTracker-Klasse hartcodiert, es sieht so aus:

%%5b%%7b%%22latlng%%22%%3a%%5b%f%%2c%f%%5d%%2c%%22data%%22%%3a%d%%7d%%5d

Es ist also einfach, benutzerdefinierte Daten zu verwenden, oder Sie können URL-Codierungstools verwenden, um Ihren eigenen codierten Json zu erstellen, um mehr Daten aufzunehmen.

Dieses Mal versuchen wir I2C High Accracy Temp & Humi Grove zu verwenden, um Heart Rate Grove zu ersetzen. Da der LCD Grove auch I2C verwendet, verwenden wir einen I2C-Hub, um Temp & Humi Grove und LCD Grove mit Wio LTE zu verbinden.

Fügen Sie dann die Head-Datei in BickTracker.h ein und fügen Sie der BikeTracker-Klasse eine Variable und eine Methode hinzu, um die Temperatur zu speichern und zu messen.

/// BikeTracker.h

// … #include "Seeed_SHT35.h" Klasse application::BikeTracker: application::interface::IApplication { // … geschützt: // … SHT35 _sht35; float_temperatur; // … void MeasureTemperature(void); } /// BikeTracker.cpp // … // BikeTracker::BikeTracker(void) //: _ethernet(Ethernet()), _gnss(GNSS()) { } // 21 ist die SCL-Pinnummer BikeTracker::BikeTracker(void): _ethernet(Ethernet()), _gnss(GNSS()), _sht35(SHT35(21)) { } // … void BikeTracker::measureTemperature(void) { float temperature, feuchtigkeit; if (_sht35.read_meas_data_single_shot(HIGH_REP_WITH_STRCH, &temperature, &humidity) == NO_ERROR) {_temperature = temperature; } } // …

Wenn Sie möchten, können Sie die LCD-Anzeige in der Loop()-Methode ändern:

// sprintf(line2, "Herzfrequenz: %d", _heartRate);

Temperatur messen(); sprintf(line2, "Temp: %f", _temperature);

Aber wie kann man es in PubNub veröffentlichen? Sie müssen die Parameter der codierten json- und sprintf()-Funktion in der PublishToPubNub()-Methode ändern. Lassen Sie es so aussehen:

// sprintf(cmd, GET /publish/%s/%s/0/%s/0/%%5b%%7b%%22latlng%%22%%3a%%5b%f%%2c%f% %5d%%2c%%22data%%22%%3a%d%%7d%%5d?store=0

// _publishKey, _subscribeKey, _channel, _latitude, _longitude, _heartRate); sprintf(cmd, "GET /publish/%s/%s/0/%s/0/%%5b%%7b%%22latlng%%22%%3a%%5b%f%%2c%f%%5d %%2c%%22data%%22%%3a%f%%7d%%5d?store=0 HTTP/1.0\n\r\n\r", _publishKey, _subscribeKey, _channel, _latitude, _longitude, _temperature);

Dann können Sie die Temperatur in der PubNub-Debug-Konsole sehen.

Empfohlen: