Innholdsfortegnelse:

Transportdatavisualisering med Google Map: 6 trinn
Transportdatavisualisering med Google Map: 6 trinn

Video: Transportdatavisualisering med Google Map: 6 trinn

Video: Transportdatavisualisering med Google Map: 6 trinn
Video: ДОБАВЬТЕ ЭТО В ГРУНТ ПЕРЕД ПОСЕВОМ СЕМЯН. Результат будет потрясающий! 2024, Juli
Anonim
Transportdatavisualisering med Google Map
Transportdatavisualisering med Google Map

Vi vil vanligvis registrere forskjellige data under sykling, denne gangen brukte vi nye Wio LTE for å spore dem.

Trinn 1: Ting som brukes i dette prosjektet

Hareware -komponenter

  • Wio LTE EU-versjon v1.3- 4G, Cat.1, GNSS, Espruino-kompatibel
  • Grove - Øreklips pulssensor
  • Grove - 16 x 2 LCD (svart på gul)

Programvare -apper og online -tjenester

  • Arduino IDE
  • PubNub Publiser/Abonner API
  • Google Kart

Trinn 2: Historie

Image
Image

Trinn 3: Maskinvaretilkobling

Webkonfigurasjon
Webkonfigurasjon

Installer GPS- og LTE -antenner til Wio LTE og koble SIM -kortet til det. Koble øreklips pulssensor og 16x2 LCD til Wio LTEs D20- og I2C-port.

Du kan bytte øreklips pulssensor til andre sensorer du liker. Se slutten av denne artikkelen.

Trinn 4: Webkonfigurasjon

Del 1: PubNub

Klikk her logg inn eller registrer en PubNub-konto. PubNub brukes til å overføre sanntidsdata til kart.

Åpne demo -prosjektet i PubNub Admin Portal, du vil se en publiseringsnøkkel og en abonnementsnøkkel, husk dem for programvareprogrammering.

Del 2: Google Map

Følg med her for å få en Google Map API -nøkkel, den vil også bli brukt i programvareprogrammering.

Trinn 5: Programvareprogrammering

Programvare programmering
Programvare programmering

Del 1: Wio LTE

Fordi det ikke er noe PubNub -bibliotek for Wio LTE, kan vi sende dataene våre fra HTTP -forespørsel, se PubNub REST API Document.

For å opprette en HTTP -tilkobling via SIM -kortet som er koblet til Wio LTE, bør du angi APN -en din først. Ta kontakt med mobiloperatørene hvis du ikke vet det.

Sett deretter PubNub -publiseringsnøkkelen, abonnementsnøkkelen og kanalen. Kanalen her brukes til å differensiere utgivere og abonnenter. For eksempel bruker vi kanalsykkel her, alle abonnenter på kanalsykkel vil motta meldinger vi publiserte.

Innstillingene ovenfor pakket vi ikke inn i klassen, slik at du kan endre dem på bike.ino enklere, du kan laste ned disse kodene fra slutten av denne artikkelen.

Del 2: PubNub

Trykk og hold inne Boot0 -tasten i Wio LTE, koble den til datamaskinen din via en USB -kabel, last opp programmet i Arduino IDE, trykk på Reset -tasten i Wio LTE.

Deretter går du til PubNub, klikker på Debug Console i demo -prosjektet, fyll ut kanalens navn i Standard Channel, klikk på Add Client.

Når du ser [1, "Abonnert", "sykkel"] i konsollen, ble abonnenten lagt til. Vent en stund, du vil se Wio LTE -data vises i konsollen.

Del 3: Google Map

ENO Maps er sanntidskart med PubNub og MapBox, det kan også brukes til PubNub og Google Map, du kan laste det ned fra GitHub.

Du kan ganske enkelt bruke et eksempel som heter google-draw-line.html i eksempler-mappen, bare endre Publish Key, Subscribe Key, Channel og Google Key på linje 29, 30, 33 og 47.

MERKNAD: Kommenter linje 42, ellers sender den simuleringsdata til PubNub.

Hvis du vil vise pulsdiagrammet nederst til høyre, kan du bruke Chart.js, det kan lastes ned fra nettstedet, sette det i ENO Maps 'rotmappe og inkludere det i google-draw-line.html-hodet.

Og legg til et lerret i et div for å vise diagrammet:

Lag deretter to matriser for å beholde diagramdata

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

Blant dem brukes chartLabels for å beholde posisjonsdata, chartData brukes til å beholde pulsdata. Når meldinger kommer, skyver du nye data til dem og oppdaterer diagrammet.

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

Ferdig. Prøv å ta det med sykkelen din neste gang.

Trinn 6: Hvordan arbeide med en annen sensorlund?

I Wio LTEs program kan du ta en og flere egendefinerte data som skal vises i diagrammet eller gjøre mer. Den følgende artikkelen viser hvordan du endrer programmet for å oppnå det.

Det første du trenger å vite er at jsonen du vil publisere til PubNub, bør være URL-kodet. Kodet json er hardkodet i BikeTracker-klassen, det ser slik ut:

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

Så det er enkelt å ta en tilpasset data, eller du kan bruke URL-kodingsverktøy for å lage din egen kodede json for å ta mer data.

Denne gangen prøver vi å bruke I2C High Accracy Temp & Humi Grove til å erstatte Heart Rate Grove. Fordi LCD Grove også bruker I2C, bruker vi en I2C Hub for å koble Temp & Humi Grove og LCD Grove til Wio LTE.

Inkluder deretter hodefil til BickTracker.h, og legg til en variabel og en metode i BikeTracker -klassen for å lagre og måle temperatur.

/// BikeTracker.h

//… #include "Seeed_SHT35.h" klasseprogram:: BikeTracker: application:: interface:: IApplication {//… proteced: //… SHT35 _sht35; float _temperatur; //… void MeasureTemperature (void); } /// BikeTracker.cpp //… // BikeTracker:: BikeTracker (void) //: _ethernet (Ethernet ()), _gnss (GNSS ()) {} // 21 er SCL -PIN -nummeret BikeTracker:: BikeTracker (void): _ethernet (Ethernet ()), _gnss (GNSS ()), _sht35 (SHT35 (21)) {} //… void BikeTracker:: measureTemperature (void) {flytemperatur, fuktighet; hvis (_sht35.read_meas_data_single_shot (HIGH_REP_WITH_STRCH, & temperatur, og fuktighet) == NO_ERROR) {_temperature = temperatur; }} // …

Hvis du vil, kan du endre LCD -skjermen i Loop () -metoden:

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

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

Men hvordan publiserer du det til PubNub? Du må endre parametrene for kodet json og sprintf () funksjon i PublishToPubNub () -metoden, la det se slik ut:

// 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);

Deretter kan du se temperaturen i PubNub -feilsøkingskonsollen.

Anbefalt: