Inhoudsopgave:

The Path Mapper: 6 stappen
The Path Mapper: 6 stappen

Video: The Path Mapper: 6 stappen

Video: The Path Mapper: 6 stappen
Video: The Israel-Gaza conflict in one picture… #Israel #gaza #idf 2024, November
Anonim
De Pad Mapper
De Pad Mapper
De Pad Mapper
De Pad Mapper
De Pad Mapper
De Pad Mapper

In dit IoT-project verbinden we een NEO-6M (GPS-module) om locatiegegevens via de Arduino te leveren aan een Excel-blad dat op de computer wordt opgeslagen. Daarna maken we met Tableau Public een datavisualisatie van deze data om de ingeslagen weg in kaart te brengen. Hoewel dit een manier is om realtime gegevens te verzamelen en te presenteren in sterk gecorreleerde gegevens, kan dit proces ook worden toegepast op andere gegevensgestuurde projecten.

Stap 1: Materialen aanschaffen

Materialen verwerven
Materialen verwerven

Voor dit project heb je het volgende nodig:

  • NEO-6M GPS-module
  • Arduino Uno
  • Mannelijke/mannelijke jumperdraden (u hebt 4 draden nodig)
  • USB 2.0-kabel type A naar B
  • Computer met deze programma's: Tableau Public, Arduino IDE (met TinyGPS++) en Processing

Stap 2: De apparaten instellen

De apparaten instellen
De apparaten instellen
De apparaten instellen
De apparaten instellen

We moeten eerst de GPS-module instellen met de Arduino UNO zodat de Arduino ons een interface kan geven om de gegevens te tonen. Elk van de vier draden die op de NEO-6M zijn aangesloten, komt overeen met specifieke poorten. Als uw NEO-6M niet met de draden wordt geleverd, moet u deze rechtstreeks aansluiten met jumperdraden. In het bovenstaande diagram komt rood overeen met voeding (VCC), zwart met aarde (GND), geel om gegevens te verzenden (TxD) en wit om gegevens te ontvangen (RxD). We verbinden deze draden met mannelijke / mannelijke jumperdraden, zodat we ze kunnen verbinden met de Arduino. Volgens het bovenstaande diagram verbinden we de aardingsdraad met de GND digitale pin op de Arduino, de TxD-draad op 4, de RxD-draad op ~ 3 en de VCC-draad op 5V voor spanning. In een toekomstige stap moeten we TxD en RxD definiëren met de juiste nummers in de SoftwareSerial.

Zodra de twee apparaten met elkaar zijn verbonden, moeten we een stroombron leveren. Sluit de USB 2.0-kabel aan op uw laptop en het lampje op de NEO-6M moet gaan branden.

Stap 3: De Arduino coderen om gegevens te extraheren

De Arduino coderen om gegevens te extraheren
De Arduino coderen om gegevens te extraheren

Nu we de apparaten hebben ingesteld om GPS-gegevens van de satellieten te verzamelen, zullen we code schrijven om de gewenste GPS-gegevens te ontleden. Ervan uitgaande dat je een signaal hebt opgevangen (mijn GPS-module zou blauw knipperen), drukt de NEO-6M standaard onbewerkte gegevens af op de seriële monitor in de vorm van NMEA-berichten, die er ongeveer uitzien als $ GP gevolgd door meer letters en een reeks van cijfers. De afbeelding hierboven geeft een algemeen idee van wat er op uw seriële monitor moet worden weergegeven zodra de basis Arduino-code is ingevoerd.

Om de code die ik heb bijgevoegd uit te leggen (of als je het zelf wilt proberen te coderen), moet je eerst zowel de SoftwareSerial- als TinyGPS++-bibliotheken opnemen (voor de laatste, Sketch > Include > Add. ZIP-bibliotheek). SoftwareSerial stelt ons in staat om een seriële verbinding te hebben; TinyGPS++ geeft ons een eenvoudig hulpmiddel om de gerichte informatie in een leesbare vorm uit te printen. Zorg ervoor dat u het SoftwareSerial-object initialiseert naar de overeenkomstige pinnen op de Arduino. In de setup-functie gebruiken we 9600 als baudrate.

Voor dit instructable zullen we alleen zeven soorten gegevens in de loop-functie afdrukken: breedtegraad (graden), lengtegraad (graden), snelheid (km), koers (graden), hoogte (km), aantal satellieten in gebruik en hdop. U kunt de syntaxis voor het afdrukken van deze informatie opzoeken in de Arduiniana-bibliotheek. De algemene vorm is Serial.print(). Om bijvoorbeeld de lengtegraad af te drukken, typen we Serial.print(gps.location.lng(), 6). De 6 geeft aan hoeveel cijfers we rechts van de komma willen hebben.

Mijn code heeft extra tekens afgedrukt omwille van een gemakkelijk opgemaakte regex in de volgende stap. Als u echter bij deze stap wilt stoppen, kunt u de gegevens op een andere manier formatteren zodat u ze beter kunt bekijken op de seriële monitor.

Stap 4: Verwerking gebruiken om te luisteren

Verwerking gebruiken om te luisteren
Verwerking gebruiken om te luisteren

Hoewel we code voor de Arduino IDE hebben ingesteld, hebben we een probleem met het opslaan van deze gegevens. Vanaf nu kunnen we de gegevens op de seriële monitor alleen bekijken terwijl we deze verzamelen. Er zijn veel manieren om deze gegevens te loggen, maar ik heb voornamelijk voor Processing gekozen omdat de interface de Arduino IDE nabootst en Java gebruikt, een taal die ik ken (merk op dat je het Arduino-bord ook met Processing kunt bedienen als je Firmata downloadt). Processing luistert mee op de poort die is aangesloten op de Arduino en heeft de mogelijkheid om de gegevens te manipuleren die op de seriële monitor worden gelezen. Om de naam van deze poort te vinden, ga je terug naar je Arduino IDE-bestand en kijk je in Tools > Port.

Ik heb de verwerkingscode verstrekt, maar hier is een kort overzicht van hoe de code werkt.

Zorg ervoor dat u vóór de setup-functie variabelen hebt voor de poort, de resulterende tabel, de rij waarmee we zullen werken en de naam van het bestand. Dan zijn er in de setup-functie parameters om de grootte van uw Run-venster in te stellen, maar die cijfers hebben geen invloed op onze functionaliteit (stel ze bijvoorbeeld in op (500, 500)). Wanneer u de poort initialiseert, gebruikt u de naam van de poort in String-vorm en een baudrate van 9600. Maak ten slotte de negen kolommen (voor de zeven GPS-categorieën, tijd en datum) om de tabel te initialiseren.

In de tekenfunctie gebruiken we de ingebouwde datum- en tijdfuncties om bij te houden wanneer elke set GPS-gegevens wordt geëxtraheerd. Om nu de gegevensstroom van de Arduino te lezen en onder de juiste koppen met de juiste tijd en datum te plaatsen, gebruiken we reguliere expressies.

Ik gebruik regex om de exacte gegevens te ontleden met de matchAll-functie die zoekt naar een uitdrukking tussen het gelijkteken en de puntkomma (de scheidingstekens die ik in mijn Arduino-code heb gezet). Dit plaatst vervolgens alle overeenkomende tags, de numerieke gegevens, in een tweedimensionale array. We kunnen dan een beroep doen op deze array-indexen om ze onder de koppen van het Excel-blad te plaatsen.

Om het nieuwe.csv-bestand op te slaan, gebruiken we een toetsdruk om het venster Uitvoeren te sluiten. Hoe langer u wacht met het indrukken van een toets, hoe meer gegevens u verzamelt. Op de manier van een andere handleiding besloot ik ook om het bestand op te slaan in de gegevensmap met de datum en tijd als bestandsnaam.

Stap 5: Gegevens weergeven op Tableau Public

Gegevens weergeven op Tableau Public
Gegevens weergeven op Tableau Public
Gegevens weergeven op Tableau Public
Gegevens weergeven op Tableau Public
Gegevens weergeven op Tableau Public
Gegevens weergeven op Tableau Public

De laatste stap omvat enige datavisualisatie. Er zijn veel programma's om datavisualisaties te maken en weer te geven, bijvoorbeeld Plotly, maar voor dit project zullen we Tableau gebruiken. Open Tableau Public en open het opgeslagen Excel-bestand als tekstbestand. Om een werkblad te maken, klikt u op Blad 1 linksonder.

Omdat we met GPS-gegevens werken, gebruiken we een kaart om onze informatie weer te geven. In de linkerkolom waar Maten staat, slepen we de lengtegraad naar kolommen en de breedtegraad naar rijen bovenaan. Tableau stelt beide maten standaard in op AVG, dus klik op de vervolgkeuzelijst naast de voorwaarden en wijzig beide in Dimensie. Nu zou de kaart een pad moeten hebben dat wordt weergegeven met behulp van de verzamelde breedte- en lengtegraadwaarden.

Om je gegevens op te schonen voor fouten (wat ook kan worden gedaan voordat Tableau wordt geopend), kun je ervoor kiezen enkele locatiecirkels uit te sluiten door erop te klikken en de optie te selecteren. Mijn GPS-module is niet 100% nauwkeurig, omdat sommige delen van mijn pad niet zijn gevonden, maar het algemene pad is vastgelegd.

Stap 6: De Viz. verfijnen

De Viz. verfijnen
De Viz. verfijnen

Het laatste deel is om deze gegevens leesbaarder te maken. Als u straatcontext wilt, kunt u naar Kaart > Kaartlaag > Straten en snelwegen gaan. Experimenteer gerust met andere merken. Ik sleepte Snelheid over Kleur om te laten zien hoe de intensiteit van de kleur toeneemt als de snelheid toeneemt. Ik gebruikte ook Detail in plaats van Label voor Cursus omdat Label de nummers op de kaart zou weergeven, terwijl ik alleen wilde dat informatie zou verschijnen als je de muisaanwijzer over de locatiepunten beweegt.

Nu je het hele proces van het verzamelen van data en het weergeven van wat je hebt op een datavisualisatie hebt ervaren, kun je dit toepassen op andere projecten!

door Pingdi Huang, zomer 2018

Aanbevolen: