Sadržaj:

Vizualizacija transportnih podataka pomoću Google karte: 6 koraka
Vizualizacija transportnih podataka pomoću Google karte: 6 koraka

Video: Vizualizacija transportnih podataka pomoću Google karte: 6 koraka

Video: Vizualizacija transportnih podataka pomoću Google karte: 6 koraka
Video: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, Novembar
Anonim
Vizualizacija transportnih podataka pomoću Google karte
Vizualizacija transportnih podataka pomoću Google karte

Obično želimo zabilježiti različite podatke tijekom vožnje bicikla, ovaj put smo ih koristili za praćenje Wio LTE.

Korak 1: Stvari koje se koriste u ovom projektu

Oprema za alate

  • Wio LTE EU verzija v1.3- 4G, Kat.1, GNSS, Espruino kompatibilan
  • Grove - Senzor otkucaja srca u ušima
  • Grove - 16 x 2 LCD (crno na žuto)

Softverske aplikacije i mrežne usluge

  • Arduino IDE
  • PubNub Publish/Subscribe API
  • google mape

Korak 2: Priča

Image
Image

Korak 3: Povezivanje hardvera

Web konfiguracija
Web konfiguracija

Instalirajte GPS i LTE antene na Wio LTE i priključite svoju SIM karticu na nju. Povežite senzor otkucaja srca sa štipaljkom za uši i LCD zaslon veličine 16x2 na Wio LTE D20 i I2C priključak.

Senzor otkucaja srca u ušici možete promijeniti na druge senzore koji vam se sviđaju. Molimo pogledajte kraj ovog članka.

Korak 4: Web konfiguracija

1. dio: PubNub

Kliknite ovdje da biste se prijavili ili registrirali PubNub račun, PubNub se koristi za prijenos podataka u stvarnom vremenu na mapu.

Otvorite demo projekt na PubNub Admin Portalu, vidjet ćete ključ za objavljivanje i ključ za pretplatu, zapamtite ih za programiranje softvera.

Dio 2: Google Map

Slijedite ovdje kako biste dobili API ključ Google karte, on će se koristiti i u programiranju softvera.

Korak 5: Programiranje softvera

Softversko programiranje
Softversko programiranje

Dio 1: Wio LTE

Budući da ne postoji PubNub biblioteka za Wio LTE, možemo slati naše podatke iz HTTP zahtjeva, pogledajte PubNub REST API dokument.

Da biste uspostavili HTTP vezu putem SIM kartice priključene na Wio LTE, prvo postavite APN. Ako to ne znate, obratite se mobilnim operaterima.

Zatim postavite svoj PubNub ključ za objavljivanje, ključ za pretplatu i kanal. Ovdje se kanal koristi za razlikovanje izdavača i pretplatnika. Na primjer, ovdje koristimo kanal bike, svi pretplatnici na channel bike primit će poruke koje smo objavili.

Gore navedene postavke nismo zapakirali u razredu, tako da ih možete lakše izmijeniti u bike.ino, te kodove možete preuzeti s kraja ovog članka.

Dio 2: PubNub

Pritisnite i držite taster Boot0 u Wio LTE, povežite ga sa računarom putem USB kabla, otpremite program u Arduino IDE, pritisnite taster Reset u Wio LTE.

Zatim se obratite PubNub -u, kliknite Debug Console u Demo Project -u, unesite naziv svog kanala u Default Channel, kliknite Add Client.

Kada vidite [1, "Pretplaćen", "bicikl"] na konzoli, Pretplatnik je uspješno dodan. Pričekajte malo, vidjet ćete da se Wio LTE podaci pojavljuju u konzoli.

3. dio: Google Map

ENO karte su karte u stvarnom vremenu s PubNub-om i MapBox-om, a mogu se koristiti i za PubNub i Google Map, možete ih preuzeti sa svog GitHub-a.

Možete jednostavno upotrijebiti primjer pod nazivom google-draw-line.html u mapi primjera, samo izmijenite ključ za objavljivanje, ključ za pretplatu, kanal i Google ključ u redovima 29, 30, 33 i 47.

OBAVIJEST: Komentirajte red 42 ili će poslati podatke simulacije vašem PubNub -u.

Ako želite prikazati grafikon brzine otkucaja srca u donjem desnom konektoru, možete koristiti Chart.js, može se preuzeti sa njegove web stranice, staviti u korijensku mapu ENO mapa i uključiti u glavu google-draw-line.html.

I dodajte platno u div za prikaz grafikona:

Zatim stvorite dva niza za čuvanje podataka grafikona

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

Među njima, chartLabels se koristi za čuvanje podataka o lokaciji, chartData se koristi za čuvanje podataka o pulsu. Kad stignu poruke, unesite im nove podatke i osvježite grafikon.

//… var map = eon.map ({poruka: funkcija (poruka, vremenski oznaka, kanal) {//… chartLabels.push (obj2string (poruka [0].latlng)); chartData.push (poruka [0].data); var ctx = document.getElementById ("grafikon"). getContext ('2d'); var grafikon = novi grafikon (ctx, {tip: 'linija', podaci: {labels: chartLabels, skupovi podataka: [{label: " Otkucaji srca ", podaci: chartData}]}}); //…}});

Sve završeno. Sljedeći put pokušajte to uzeti sa sobom.

Korak 6: Kako raditi s drugim senzorskim gajevima?

U programu Wio LTE možete uzeti jedan ili više prilagođenih podataka za prikaz u grafikonu ili učiniti više. Sljedeći članak pokazuje kako izmijeniti program da bi se to postiglo.

Prvo što trebate znati je da json koji želite objaviti u PubNub-u treba biti kodiran url-om. Kodirani json je teško kodiran u klasi BikeTracker, izgleda ovako:

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

Tako je lako uzeti jedan prilagođeni podatak ili možete upotrijebiti url-encode alate da napravite vlastiti kodirani json za uzimanje više podataka.

Ovaj put pokušavamo koristiti I2C High Accracy Temp & Humi Grove za zamjenu Heart Rate Grove -a. Budući da LCD Grove također koristi I2C, koristimo I2C Hub za povezivanje Temp & Humi Grove i LCD Grove na Wio LTE.

Zatim uključite datoteku glave u BickTracker.h i dodajte varijablu i metodu u klasu BikeTracker za pohranu i mjerenje temperature.

/// BikeTracker.h

//… #uključuje aplikaciju klase "Seeed_SHT35.h":: BikeTracker: application:: sučelje:: IApplication {//… zaštićeno: //… SHT35 _sht35; float _temperature; //… void MeasureTemperature (void); } /// BikeTracker.cpp //… // BikeTracker:: BikeTracker (void) //: _ethernet (Ethernet ()), _gnss (GNSS ()) {} // 21 je SCL pin broj BikeTracker:: BikeTracker (void): _ethernet (Ethernet ()), _gnss (GNSS ()), _sht35 (SHT35 (21)) {} //… void BikeTracker:: mjeraTemperatura (void) {temperatura plovka, vlažnost; if (_sht35.read_meas_data_single_shot (HIGH_REP_WITH_STRCH, & temperatura i vlažnost) == NO_ERROR) {_temperature = temperature; }} //…

Ako želite, možete promijeniti LCD ekran metodom Loop ():

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

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

Ali kako to objaviti u PubNub -u? Morate promijeniti kodirane parametre funkcije json i sprintf () u metodi PublishToPubNub (), neka izgleda ovako:

// sprintf (cmd, "GET/objavi/%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/objavi/%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);

Tada možete vidjeti temperaturu u PubNub konzoli za otklanjanje grešaka.

Preporučuje se: