Innehållsförteckning:

Transportdatavisualisering med Google Map: 6 steg
Transportdatavisualisering med Google Map: 6 steg

Video: Transportdatavisualisering med Google Map: 6 steg

Video: Transportdatavisualisering med Google Map: 6 steg
Video: Visualisering med öppen trafikdata 2024, Juli
Anonim
Transportdatavisualisering med Google Map
Transportdatavisualisering med Google Map

Vi brukar vilja spela in olika data under cykling, den här gången använde vi nya Wio LTE för att spåra dem.

Steg 1: Saker som används i detta projekt

Hareware -komponenter

  • Wio LTE EU Version v1.3- 4G, Cat.1, GNSS, Espruino-kompatibel
  • Grove - Öronklämma pulssensor
  • Grove - 16 x 2 LCD (svart på gul)

Programvaruappar och onlinetjänster

  • Arduino IDE
  • PubNub Publicera/prenumerera API
  • Google kartor

Steg 2: Berättelse

Image
Image

Steg 3: Maskinvaruanslutning

Webbkonfiguration
Webbkonfiguration

Installera GPS- och LTE -antenner till Wio LTE och anslut ditt SIM -kort till det. Anslut öronklips pulssensor och 16x2 LCD till Wio LTE: s D20- och I2C-port.

Du kan ändra öronklipps pulssensor till andra sensorer som du gillar. Se slutet av denna artikel.

Steg 4: Webbkonfiguration

Del 1: PubNub

Klicka här logga in eller registrera ett PubNub-konto, PubNub används för att överföra realtidsdata till kartan.

Öppna demo -projekt i PubNub Admin Portal, du kommer att se en publiceringsnyckel och en prenumerationsnyckel, kom ihåg dem för programvaruprogrammering.

Del 2: Google Map

Följ här för att få en Google Map API -nyckel, den kommer också att användas i programvaruprogrammering.

Steg 5: Programvaruprogrammering

Programvaruprogrammering
Programvaruprogrammering

Del 1: Wio LTE

Eftersom det inte finns något PubNub -bibliotek för Wio LTE kan vi skicka våra data från HTTP -begäran, se PubNub REST API -dokument.

För att göra en HTTP -anslutning via ditt SIM -kort som är anslutet till Wio LTE, bör du först ställa in ditt APN. Om du inte vet det, kontakta dina mobiloperatörer.

Ställ sedan in din PubNub -publiceringsnyckel, prenumerationsnyckel och kanal. Kanalen här används för att skilja utgivare och prenumeranter. Till exempel använder vi kanalcykel här, alla prenumeranter på kanalcykel kommer att få meddelanden vi publicerat.

Inställningarna ovan, vi packade inte i klassen, så att du kan ändra dem på bike.ino enklare kan du ladda ner dessa koder från slutet av den här artikeln.

Del 2: PubNub

Håll ned Boot0 -tangenten i Wio LTE, anslut den till din dator via en USB -kabel, ladda upp programmet i Arduino IDE, tryck på Återställ -tangenten i Wio LTE.

Vänd sedan till PubNub, klicka på Debug Console i demoprojekt, fyll kanalens namn i standardkanalen, klicka på Lägg till klient.

När du ser [1, "Abonnerat", "cykel"] på konsolen, har prenumeranten lagts till. Vänta ett tag, du kommer att se Wio LTE -data visas i konsolen.

Del 3: Google Map

ENO Maps är realtidskartor med PubNub och MapBox, den kan också användas för PubNub och Google Map, du kan ladda ner den från GitHub.

Du kan helt enkelt använda ett exempel med namnet google-draw-line.html i exempelmappen, bara ändra publiceringsnyckel, prenumerationsnyckel, kanal och Google-nyckel på rad 29, 30, 33 och 47.

ANMÄRKNING: Kommentera rad 42, annars skickas simuleringsdata till din PubNub.

Om du vill visa pulsdiagrammet längst ner till höger kan du använda Chart.js, det kan laddas ner från webbplatsen, lägg det i ENO Maps rotmapp och inkludera det i google-draw-line.html huvud.

Och lägg till en duk i en div för att visa diagrammet:

Skapa sedan två matriser för att behålla diagramdata

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

Bland dem används chartLabels för att hålla platsdata, chartData används för att hålla pulsdata. När meddelanden kommer, skicka ny data till dem och uppdatera diagrammet.

//… var map = eon.map ({meddelande: funktion (meddelande, tidtoken, kanal) {//… chartLabels.push (obj2string (meddelande [0].latlng)); chartData.push (meddelande [0].data); var ctx = document.getElementById ("diagram"). getContext ('2d'); var chart = nytt diagram (ctx, {type: 'line', data: {labels: chartLabels, dataset: [{label: " Puls ", data: chartData}]}}); //…}});

Klart. Försök att ta det med din cykling nästa gång.

Steg 6: Hur man arbetar med annan sensorgrove?

I Wio LTE: s program kan du ta en och flera anpassade data att visa i diagrammet eller göra mer. Följande artikel visar hur du ändrar programmet för att uppnå det.

Det första du behöver veta är att den json du vill publicera på PubNub ska vara url-kodad. Kodad json är hårdkodad i BikeTracker-klassen, det ser ut så här:

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

Så det är enkelt att ta en anpassad data, eller så kan du använda url-kodningsverktyg för att göra din egen kodade json för att ta mer data.

Den här gången försöker vi använda I2C High Accracy Temp & Humi Grove för att ersätta Heart Rate Grove. Eftersom LCD Grove också använder I2C använder vi en I2C Hub för att ansluta Temp & Humi Grove och LCD Grove till Wio LTE.

Inkludera sedan huvudfil till BickTracker.h, och lägg till en variabel och en metod till BikeTracker -klassen för att lagra och mäta temperatur.

/// BikeTracker.h

//… #include "Seeed_SHT35.h" klassapplikation:: BikeTracker: application:: interface:: IApplication {//… proteced: //… SHT35 _sht35; flottörtemperatur; //… void MeasureTemperature (void); } /// BikeTracker.cpp //… // BikeTracker:: BikeTracker (void) //: _ethernet (Ethernet ()), _gnss (GNSS ()) {} // 21 är SCL -PIN -numret BikeTracker:: BikeTracker (void): _ethernet (Ethernet ()), _gnss (GNSS ()), _sht35 (SHT35 (21)) {} //… void BikeTracker:: MeasureTemperature (void) {flyttemperatur, fuktighet; if (_sht35.read_meas_data_single_shot (HIGH_REP_WITH_STRCH, & temperatur, & fuktighet) == NO_ERROR) {_temperature = temperatur; }} //…

Om du vill kan du ändra LCD -skärmen i Loop () -metoden:

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

MeasureTemperature (); sprintf (rad2, "Temp: %f", _temperatur);

Men hur publicerar man det till PubNub? Du måste ändra kodade json- och sprintf () -funktionsparametrar i metoden PublishToPubNub (), låt det se ut så här:

// 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 HTTP/1.0 / n / r / n / r ", // _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);

Då kan du se temperaturen i PubNub -felsökningskonsolen.

Rekommenderad: