Innehållsförteckning:

Path Mapper: 6 steg
Path Mapper: 6 steg

Video: Path Mapper: 6 steg

Video: Path Mapper: 6 steg
Video: [3.23] Super Fast Pathfinder Chaos Build 2024, November
Anonim
The Path Mapper
The Path Mapper
The Path Mapper
The Path Mapper
The Path Mapper
The Path Mapper

I detta IoT-projekt kopplar vi upp en NEO-6M (GPS-modul) för att leverera lokaliseringsdata via Arduino till ett Excel-ark som sparas på datorn. Efteråt, med Tableau Public, skapar vi en datavisualisering av dessa data för att kartlägga den väg vi tog. Även om detta är ett sätt att samla in och presentera realtidsdata i en högkorrelerad data, nämligen kan denna process också tillämpas på andra datadrivna projekt.

Steg 1: Skaffa material

Skaffa material
Skaffa material

För detta projekt behöver du följande:

  • NEO-6M GPS-modul
  • Arduino Uno
  • Manliga/manliga bygelkablar (du behöver 4 ledningar)
  • USB 2.0 -kabel typ A till B
  • Dator med dessa program: Tableau Public, Arduino IDE (med TinyGPS ++) och Processing

Steg 2: Konfigurera enheterna

Konfigurera enheterna
Konfigurera enheterna
Konfigurera enheterna
Konfigurera enheterna

Vi måste först konfigurera GPS -modulen med Arduino UNO för att Arduino ska kunna ge oss ett gränssnitt för att visa data. Var och en av de fyra ledningar som är anslutna till NEO-6M motsvarar specifika portar. Om din NEO-6M inte följer med kablarna måste du koppla den direkt med bygelkablar. I diagrammet ovan motsvarar rött effekt (VCC), svart till jord (GND), gult för att överföra data (TxD) och vitt för att ta emot data (RxD). Vi ansluter dessa ledningar till han-/hantrådar så att vi kan ansluta dem till Arduino. Efter diagrammet ovan ansluter vi jordkabeln till den digitala GND -stiftet på Arduino, TxD -kabeln till 4, RxD -kabeln till ~ 3 och VCC -kabeln till 5V för spänning. I ett framtida steg måste vi definiera TxD och RxD med rätt nummer i SoftwareSerial.

När de två enheterna är anslutna till varandra måste vi tillhandahålla en strömkälla. Anslut USB 2.0-kabeln till din bärbara dator och lampan på NEO-6M ska tändas.

Steg 3: Kodning av Arduino för att extrahera data

Kodning av Arduino för att extrahera data
Kodning av Arduino för att extrahera data

Nu när vi har enheterna inställda för att samla in GPS -data från satelliterna kommer vi att skriva kod för att analysera den GPS -data vi vill ha. Om du antar att du har tagit emot en signal (min GPS-modul skulle blinka blått) skriver NEO-6M som standard ut rådata på den seriella bildskärmen i form av NMEA-meddelanden, som ser ut som $ GP följt av fler bokstäver och en serie av siffror. Bilden ovan ger en allmän uppfattning om vad som ska visas på din seriella bildskärm när den grundläggande Arduino -koden har satts in.

För att förklara koden jag har bifogat (eller om du vill försöka koda den själv) måste du först inkludera både SoftwareSerial- och TinyGPS ++ -biblioteken (för de senare Sketch> Include> Add. ZIP library). SoftwareSerial låter oss ha en seriell anslutning; TinyGPS ++ ger oss ett enkelt verktyg för att skriva ut den riktade informationen i en läsbar form. Se till att du initierar SoftwareSerial -objektet till motsvarande stift på Arduino. I installationsfunktionen använder vi 9600 som överföringshastighet.

För denna instruktion kommer vi bara att skriva ut sju typer av data i loopfunktionen: latitud (grader), longitud (grader), hastighet (km), kurs (grader), höjd (km), antal satelliter i använda och hdop. Du kan söka upp syntaxen för att skriva ut denna information i Arduiniana -biblioteket. Den allmänna formen är Serial.print (). Till exempel för att skriva ut longitud skulle vi skriva ut Serial.print (gps.location.lng (), 6). 6 representerar hur många siffror vi vill ha till höger om decimalpunkten.

Min kod har extra tecken skrivna ut för en lätt formaterad regex i nästa steg. Om du skulle vilja stanna vid det här steget kan du dock formatera data annorlunda för enkel syn på seriemonitorn.

Steg 4: Använda bearbetning för att lyssna

Använda bearbetning för att lyssna
Använda bearbetning för att lyssna

Medan vi har kod för Arduino IDE konfigurerat, har vi ett problem med att spara dessa data. Från och med nu kan vi bara se data på den seriella bildskärmen när vi samlar in dem. Det finns många sätt att logga dessa data men jag valde Processing främst för att dess gränssnitt efterliknar Arduino IDE och det använder Java, ett språk jag är bekant med (observera att du också kan styra Arduino -kortet med Processing om du laddar ner Firmata). Bearbetningen lyssnar på porten som är ansluten till Arduino och har förmågan att manipulera data som läses in på den seriella bildskärmen. För att hitta namnet på den här porten, återgå till din Arduino IDE -fil och kolla i Verktyg> Port.

Jag har angett behandlingskoden, men här är en snabb översikt över hur koden fungerar.

Innan installationsfunktionen, se till att du har variabler för porten, den resulterande tabellen, raden vi ska arbeta med och namnet på filen. I installationsfunktionen finns det parametrar för att ställa in storleken på ditt körfönster, men dessa siffror påverkar inte vår funktionalitet (ställ dem till exempel på (500, 500)). När du initierar porten använder du portens namn i strängform och en överföringshastighet på 9600. Slutligen skapar du de nio kolumnerna (för de sju GPS -kategorierna, tid och datum) för att initiera tabellen.

I dragfunktionen använder vi de inbyggda datum- och tidsfunktionerna för att hålla reda på när varje uppsättning GPS -data extraheras. För att läsa dataströmmen från Arduino och lägga den under lämpliga rubriker med rätt tid och datum använder vi vanliga uttryck.

Jag använder regex för att analysera de exakta uppgifterna med matchAll -funktionen som letar efter något uttryck mellan likhetstecknet och semikolon (avgränsarna som jag sätter i min Arduino -kod). Detta placerar därefter alla matchade taggar, numeriska data, i en tvådimensionell array. Vi kan sedan uppmana dessa arrayindex att placera dem under rubrikerna i Excel -bladet.

För att spara den nya CSV -filen använder vi en knapptryckning för att stänga fönstret Kör. Ju längre du väntar med att trycka på en knapp, desto mer data samlar du in. På samma sätt som en annan guide bestämde jag mig också för att spara filen i datamappen med datum och tid som filnamn.

Steg 5: Visa data på Tableau Public

Visar data på Tableau Public
Visar data på Tableau Public
Visar data på Tableau Public
Visar data på Tableau Public
Visar data på Tableau Public
Visar data på Tableau Public

Det sista steget innebär viss datavisualisering. Det finns många program för att skapa och visa datavisualiseringar, dvs Plotly, men för detta projekt kommer vi att använda Tableau. Öppna Tableau Public och öppna den sparade Excel -filen som en textfil. För att skapa ett kalkylblad, klicka på Ark 1 längst ned till vänster.

Eftersom vi arbetar med GPS -data använder vi en karta för att skildra vår information. I den vänstra kolumnen där det står Mätningar drar vi longitud till kolumner och latitud till rader högst upp. Tableau standardiserar båda måtten till AVG, så klicka på rullgardinsmenyn bredvid termerna och ändra båda till Dimension. Nu ska kartan ha en sökväg som visas med hjälp av de samlade latitud- och longitudvärdena.

För att rensa upp dina data för fel (vilket också kan göras innan du öppnar Tableau) kan du välja att utesluta vissa platscirklar genom att klicka på dem och välja alternativet. Min GPS -modul är inte 100% korrekt, eftersom vissa delar av min väg inte har hittats, men den allmänna vägen har registrerats.

Steg 6: Förfina Viz

Förfina Viz
Förfina Viz

Den sista delen är att göra dessa data mer läsbara. Om du vill ha gatukontext kan du gå till Karta> Kartlager> Gator och motorvägar. Experimentera gärna med andra märken. Jag drog hastigheten över färg för att visa hur färgens intensitet ökar när hastigheten ökar. Jag använde också Detalj istället för Etikett för kurs eftersom Etiketten skulle visa siffrorna på kartan medan jag bara ville att information skulle dyka upp när du svävar över platspunkten.

Nu när du har upplevt hela processen med att samla in data och visa vad du har på en datavisualisering kan du tillämpa detta på andra projekt!

av Pingdi Huang, sommaren 2018

Rekommenderad: