Geo Data Logger: Arduino + GPS + SD + Accelerometer att logga, tidsstämpel och geo-tag sensordata (5 / 10 steg)

Steg 5: ARDUINO programmet som drar det alla tillsammans



Detta program läser LS20031 GPS-mottagaren och sparar de NMEA meningar genereras av mottagaren som-är att SD-kortet. Programmet läser också X, Y, Z stift ADXL335 accelerometer och sparar dem med varje NMEA linje sparas.

Arduino används jag utvecklat för denna prototyp SD bibliotek. Jag använder inte TinyGPS för att interagera med GPS-mottagare eller SoftwareSerial. Jag behövde inte TinyGPS för det här projektet eftersom jag sparar rå NMEA meddelanden till SD-kortet. Som för SoftwareSerial biblioteket, efter jag sprang in på några frågor som var tidskrävande att lösa bestämde jag mig att hålla sig till Arduino seriell standardbiblioteket.

Nackdelen med att inte använda SoftwareSerial i detta projekt är att GPS-mottagaren kommer att använda den Arduino RX/TX stift att läsa kommandon och skicka GPS-data till Arduino. Detta innebär att vi inte har den Arduino Serial Monitor tillgänglig för felsökning.

Viktigare, måste vi koppla Arduino Uno's PIN0 (RX) från GPS-mottagaren TX pin innan du lägger upp en Arduino program. Om vi inte koppla Arduino's PIN0 (RX) från GPS-mottagaren, inte det mest troligt ladda upp det Arduino programmet från datorn till Arduino på grund av seriell konflikten. Jag fann detta vara ett litet pris för vinsten i kodning kompakthet och förkorta utvecklingscykeln.

Data sparas genom detta program att SD kommer att se ut i listan nedan. Teoretiskt, fem rader med GPS och sensor data genereras per sekund. Den här loggen kan importeras som en kommaavgränsad fil till en mängd applikationer som kalkylblad eller databaser för att skura, analys och kartläggning:

  • 446,425,542, GPRMC, 093116.200, A, 3158.0155, N, 03551.5032, E, 18,78, 291.56, 111112,,, A * 54
  • 443,442,542, GPRMC, 093116.400, A, 3158.0159, N, 03551.5020, E, 18,78, 291.79, 111112,,, A * 50
  • 444,435,523, GPRMC, 093116.600, A, 3158.0163, N, 03551.5009, E, 18.77, 292.32, 111112,,, A * 53
  • 444,432,525, PRMC, 093116.800, A, 3158.0167, N, 03551.4998, E, 18,75, 292.88, 111112,,, A * 5A

// ====================== START PROGRAM ==========================
/*

PROJEKT: Bump-O-Meter (Geo Data Logger för sensorer)

FÖRFATTARE: Hazim Bitar (techbitar på gmail punkt com)

Beskrivning: Detta program läser ADXL335 accelerometer sensordata (X, Y, Z) eller någon
sensordata sparar sedan dessa data till ett SD-kort tillsammans med geografiska och ett datum/tidsstämpel
genereras av LS20031 GPS-mottagaren

LICENS: Jag är att placera denna kod i det offentliga rummet

DATUM: 16 NOV 2012

*/

#include
#define LED 8 / / status LED för SD
#define BUFF_MAX 100 / / storleken på GPS & SD buffertar

Filen GPSlog;

void setup()
{
Serial.BEGIN(4800); LS20031 GPS-mottagaren måste anges till 4800 för program för att arbeta

Uttalanden nedan kan du skicka kommandon till LS20031 GPS.
Men om detta ska fungera, baudhastighet måste anges på LS20031 GPS-mottagaren till 4800.
Verktyget MiniGPS 1.4 kan du konfigurera eller fråga LS20031 GPS-mottagaren.
//
LS20031 KOMMANDON:
Serial.Print("$PMTK251,4800*27\r\n"); Ställ in GPS baud-hastighet
Serial.Print("$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2C\r\n"); Inställd på RMC 5 fixar/sekund.
Serial.Print("$PMTK220,200*2C\r\n"); GPS uppdateringshastighet på 5Hz

pinMode (10, OUTPUT); Per SD bibliotek anteckningar, måste stift 10 anges till utgång
pinMode (LED, OUTPUT);

IF (!. SD.begin(4)) {/ / SD-kort har upptäckts?
digitalWrite(LED,LOW); stänga av status-LED om SD upptäckt misslyckas
hemkomst.
}
annat digitalWrite (LED, hög); Aktivera LED om SD upptäckt är OK

GPSlog = SD.open ("GPS.log", O_CREAT | O_WRITE); Öppna/Lägg till en fil GPS.log
IF (!. GPSlog) {/ / test om filen kan öppnas
digitalWrite(LED,LOW); stänga av status LED om öppna filen misslyckas
hemkomst.
}
annat digitalWrite (LED, hög); slå på status-LED om öppna filen är OK
}

void loop()
{
char inBuffer [BUFF_MAX]; buffert används för att läsa NMEA linjer från GPS
byte outBuffer [BUFF_MAX]; buffert används för att skriva NMEA linjer till SD-kort
int sizeBuffer = 0; räknaren för hur många tecken per rad

HÄR FÖRKLARAR VI MER ELLER MINDRE ANALOG SENSOR VARIABLER
char an0 [4], an1 [4], an2 [4]; char variabler för att lagra analoga pin värden. Totalt 6 pins från 0-5

medan (Serial.available() > 0) / / om seriella data från GPS
{
sizeBuffer = Serial.readBytesUntil ("\n", inBuffer, BUFF_MAX); läsa en NMEA linje från GPS fram till slutet av raden

DET ÄR DÄR VI LÄSER SENSOR VÄRDEN
itoa (analogRead(A0), an0, 10); X läsa och konvertera numeriska analoga pin till röding
itoa (analogRead(A1), an1, 10); // Y ..
itoa (analogRead(A2), an2, 10); // Z ..
för (int jag = 0; jag < BUFF_MAX; i ++) outBuffer [i] = inBuffer [i]; skapa CSV-fil på SD
int j = 0;

DET ÄR HÄR VI SKRIVER SENSORDATA TILL SD-FILEN
om (GPSlog) {
GPSlog.print(an0); Skriv ANALOG0 (X) till SD
GPSlog.print (",");
GPSlog.print(an1); Skriv ANALOG1 (Y) till SD
GPSlog.print (",");
GPSlog.print(an2); Skriv ANALOG2 (Z) till SD
GPSlog.print (",");
Om du bara vill NMEA utdata inloggad, kommentera ut alla ovan GPSlog.print uttalanden
GPSlog.write (outBuffer, sizeBuffer); skriva GPS NMEA utdata till SD
GPSlog.print("\r\n");
GPSlog.flush();
digitalWrite (LED, hög); Hålla LED på så länge SD loggning fungerar.
}
annat {
om filen inte öppnas, Stäng LED av
digitalWrite (LED, låg); Inaktivera LED om skrivning till filen misslyckas
}
}
}
// ================ END PROGRAM =====================

HUR TILL TILLÄGGA/FLYTTA SENSORER TILL GEO DATALOGGER

Detta program kommer att läsa upp till 6 analoga sensorer och spara deras värden till SD-kortet. Det finns två platser i programmet där du behöver göra ändringar som passar dina behov:

1. DEKLARERA SENSOR VARIABLER

I avsnittet förklaring skapa vi textvariabler som kommer att hålla de konverterade numeriska värdena av sensorerna innan vi skriver dem till SD-kortet. Vi är här, att förklara för högst 6 analoga sensorer. Minska efter behov.

char an0 [4], an1 [4], an2 [4]; an3 [4]; an4 [4]; AN5 [4];

2. BEHANDLINGEN SENSORER

I denna del av programmet konvertera vi numeriska sensorns avläsningar till text innan vi skriver dem till SD-kortet. Ändra nästa kod segment i programmet med Lägg till/ta bort sensorer som behövs. Du kan ha upp till 6 analoga sensorer läsa i detta program:

itoa (analogRead(A0), an0, 10);
itoa (analogRead(A1), an1, 10);
itoa (analogRead(A2), an2, 10);
itoa (analogRead(A3), an0, 10);
itoa (analogRead(A4), an1, 10);
itoa (analogRead(A5), an2, 10);

3. SKRIVA SENSORER VÄRDEN TILL SD-KORTET

Efter att vi läst givare ovan, vi skriver deras textvärden till SD-kortet. Inom segmentet koden nedan, vi lägger till ett kommatecken mellan varje sensor värde skrivs till SD-kortet så att vi kan skilja dem. Detta gör det lättare att importera dem till ett kalkylprogram som semikolonavgränsad text:

GPSlog.print(an0); skriva ANALOG0 till SD-kort
GPSlog.print (",");
GPSlog.print(an1); Skriv ANALOG1 till SD-kort
GPSlog.print (",");
GPSlog.print(an2); Skriv ANALOG2 till SD-kort
GPSlog.print (",");
GPSlog.print(an0); skriva ANALOG3 till SD-kort
GPSlog.print (",");
GPSlog.print(an1); skriva ANALOG4 till SD-kort
GPSlog.print (",");
GPSlog.print(an2); skriva ANALOG5 till SD-kort
GPSlog.print (",");

Se Steg
Relaterade Ämnen

InPace - en Arduino baserad GPS-data logga fitness armband med bluetooth och en iOS app

InPace är en Arduino baserat fitness armband, med åtföljande iOS ansökan, som kan ge levande feedback på hur användaren pacing sig under en springa, gå eller cykla rutten. Det spår GPS lokaliseringarna och aktuella tider att jämföra användare nuvaran...

En fristående Data logga vindmätaren

jag älskar samla in och analysera uppgifter. Jag älskar också bygga elektroniska prylar. Ett år sedan när jag upptäckte de Arduino produkterna, jag omedelbart tänkte, "Jag vill samla in miljödata." Det var en blåsig dag i Portland, OR, så jag be...

Arduino GPS Datalogger

vill du logga några GPS-data till ett SD-kort med din Arduino? Äger du redan en Sparkfun microSD sköld och GPS-modulen? Auktoriserat inte du försök den Adafruit Sheild (även om det är awesome och billigt) men den stal alla dina Pins? Ha det till utgå...

Data logga temperatur sond (200 ° C till +1300 ° C)

Jag behövde ta temperaturen vs tidmått för forskning utrustning för att avgöra hur mycket tid i förväg någon bör börja prepping innan de faktiskt avser att använda utrustningen. I det här fallet innebär prepping att kyla ner en metall termisk massa m...

Arduino GPS/GSM Tracker (WatchDog aktiverat)

Vad är GPS och GLONASS?En GPS tracking enhet är en enhet, som normalt bärs av ett rörligt fordon eller person, som använder Global Positioning System för att fastställa och följa upp dess exakta läge, och därmed av dess bärare, med mellanrum. Den ins...

Raspberry webbserver skickar GET data till Arduino Nano kör 6 servon

http://www.youtube.com/watch?v=f7oSqLO9iJoDetta är ett litet projekt jag gjorde för en kollega som bygger en 1/48 skala RC modell av en Fletcher-klass jagare (Japp... det gör "modellen" ca 8 fot lång!) Han frågade om jag kunde animera 5 x MKIII...

Arduino GPS/GSM Tracker

Vårt samhälle kan golfbilar på allmänna vägar att minska föroreningar och trängsel och min mamma använder hennes utförligt. Golfbilar har inte mycket i vägen för säkerhet, så för sinnesfrid, jag tänkte jag skulle rulla mina egna fordon plats system....

Diskreta Data Logger

det finns inget bättre sätt att dölja en dold enhet än för att hålla det inne en större iögonfallande enhet.Som sagt... Detta är huvudsakligen en guide för att göra ett system för loggning för användning med alkoholmätare mikrofonen.För att åstadkomm...

Enkla Arduino GPS med OLED

Detta lilla projekt visar hur man bygger en enkel GPS-mottagare från en Arduino-styrelsen (eller liknande), en OLED-display och en GPS-modul med antenn.Steg 1: Samla delarna GPS Bee med antennXBee breakout styrelsen med huvudenArduino ombord0.96″ OLE...

Arduino GPS hastighetsmätare med en ks0108 - 128 x 64 GLCD (Visa)

Jag ville bygga en digital hastighetsmätare för min bil. Det var inget fel med ett redan installerat i min bil, jag ville bara ha en stor LCD-display som är placerade i en mer bekväm position - rakt framför mig. Och eftersom jag inte ville bråka med...

Kompakt Arduino GPS Speedo + fler

så jag bestämde mig att bygga en apparat som jag kunde använda i min bil,en GPS speedo såg ut som en bra idé.De delar som jag använde i detta bygga:-(Fake) Arduino Nano v3 ($10,99).-MT3339 GPS-modulen.-Grafisk LCD + Connector ($5.00).-Plast hölje ($4...

MPU6050: Arduino 6 axlig Accelerometer + Gyro - GY 521 Test & 3D-simulering

Är du ute efter för att göra din egen quadcopter drone eller RC plan med Arduino men vet inte hur man få gyro fungerar? Kanske har du redan köpt några 6 axel MPU6050 moduler (på GY-521 breakout styrelser) bara för att finna de var inte så enkelt att...

Lägga upp skisser till Arduino Pro Mini använder Arduino UNO styrelsen (utan att ta bort Atmel Chip)

Detta beskriver en procedur för att använda Arduino UNOS inbyggda USB till Serial(TTL) converter ladda upp skisser till Arduino Pro Mini styrelsen utan att behöva ta bort UNO'S Atmel mikro-controller chip. Detta är användbart för dem har börjat med A...

Temperatur mätning Display på 16 x 2 LCD med att justera temperaturen övre och undre gräns för varning använder Arduino

Hej alla, här är mitt första projekt med Arduino. I detta projekt kommer jag visa dig hur du mäter temperatur och visar det på en 16 x 2 LCD med Arduino, och vi kan använda 2-knappen för att välja vad vi vill se på LCD: grader Celsius eller Fahrenhei...

Stripboard Arduino shield för att programmera ATtiny45 och ATtiny85

detta instructable (angett i Arduino Challenge contest - du kan rösta på det ovan) visar hur man gör en stripboard Arduino shield för programmering antingen ATtiny45 eller ATtiny85 mikrokontroller med en Arduino, enligt dessa tutorials från High-Low...

Arduino kontrollerade lås låda med magnetventil och RFID-

Rutan RFID lås kombinerar Arduino, RFID och en magnetventil för att göra din alldeles egna personliga säkert! Kryssrutan Lås öppnas endast till nyckelkort som du har programmerat in i systemet, låsa alla andra ut!Denna guide visar du hur setup elektr...

Arduino MIDI-controller med en ZX avstånd och gest Sensor

Välkommen till detta instructable om hur man bygger en mycket grundläggande MIDI-Controller med SparkFun ZX avståndet och gest Sensor. Detta instructable är del av en skoluppgift.Obs: Detta är ingen kodning handledning. Den final koden kommer att ing...

Raspberry PI och DHT22 temperatur och luftfuktighet-logger med lampa och e-varningar

Detta är en Raspberry Pi grundval av temperatur och luftfuktighet logger som använder 2 (fungerar även med 1) Adafruit DHT22 sensorer för mätningar. Du kanske har sett liknande typ av instruktioner innan, men här har en twist. Det bara läsa inte temp...

Klocka med termometer med Arduino, i2c 16 x 2 lcd, DS1307 RTC och DHT11 sensor.

Hello! Det var ett tag jag har inte postat något på Instructables, men nu gjorde jag ett enkelt projekt som jag sett på internet i olika former. Jag lyckades bygga en kod med hjälp av andra koder som jag har hittat på internet och jag måste säga det...