Racing Datalogger met een Arduino (7 / 10 stap)

Stap 7: De Code uit te leggen

Het Wetboek rechtsvordering is vrij eenvoudig. Initialiseren van de pinnen, initialiseren van de seriële poort voor GPS, de SD-kaart initialiseren en vervolgens een bestand maken. Zodra dat is voltooid als GPS heeft een slot die het zal treden lus cyclus en gegevens lezen van de TPS sensor, remlicht en GPS waarden en vervolgens die op de SD-kaart schrijven en lus starten. Vrij simpel toch? Er is een paar gotchas langs de weg, met name met de GPS en de compiler. Ik zal beschrijven hieronder.

 // Can comment out this statement if it compiles. Bug on certain Arduino IDE versions. // Read here for more info: <a href="http://subethasoftware.com/2013/04/09/arduino-compiler-problem-with-ifdefs-solved/" rel="nofollow"> http://subethasoftware.com/2013/04/09/arduino-com...</a> #if 1 __asm volatile("nop"); #endif 

Dit is een beetje een raar. Als u dit kunt commentaar en gecompileerd dan is dat goed. U hoeft niet zorgen over te maken. De kansen zijn dat u kunt commentaar dit uit omdat het vast door nieuwere versies van de Arduino, denk ik. Kun je naar de link in het commentaar als u wilt lezen over het probleem.

 // Debug Condition #define DUEMILANOVE true // Set to true if using Duemilanove #define DEBUG false // Set to true if want to debug 

Dit is voor het bepalen van wat voor soort Arduino u gebruikt en als u van plan over het gebruik van de seriële poort voor debug. De reden waarom is als gevolg van de seriële poort wordt bezet door de GPS tijdens normale werking voor de Duemilanove (oude Arduino ik weet het, zoals ik al zei heb ik dit project een tijdje terug :)). Hetzelfde doet zich voor de Uno, aangezien er slechts één seriële poort die is waarom wij liet het zoals die het was hier. Als u van plan over het gebruik van de seriële poort te debuggen, DEBUG ingesteld op true en de GPS RX en TX pinnen naar digitale pennen 3, 2 respectievelijk. Als u van de Mega heeft 4 seriële poorten DUEMILANOVE ingesteld op false en de GPS RX en TX pinnen respectievelijk ingesteld op digitale Pins 19 en 20 gebruikmaakt.

 #define SERIAL_DEBUG if(DEBUG)Serial // If DEBUG is set to true then all SERIAL_DEBUG statements will work #if DUEMILANOVE #if DEBUG //If debugging on Duemilanove set GPS to 3,2 and use SoftwareSerial #include <SoftwareSerial.h> #define RX_GPS_PIN 3 #define TX_GPS_PIN 2 SoftwareSerial SERIAL_GPS(3,2); #else //If not debugging on Duemilanove put GPS pins on 0,1 #define RX_GPS_PIN 0 #define TX_GPS_PIN 1 #define SERIAL_GPS Serial #endif #else // If using Mega 2560 set GPS pins to Serial1 #define RX_GPS_PIN 19 #define TX_GPS_PIN 20 #define SERIAL_GPS Serial1 #endif 

Dit is de logica voor de Debug-voorwaarde. Je meestal niet hoeft te raken van dit, maar zoals je zien kunt als we bent foutopsporing op de interne seriële Arduino moet u de SoftwareSerial bibliotheek gebruiken voor de GPS, die eigenlijk de resolutie van uw gegevens aanzienlijk vertraagt.

 // Initialize GPS and Debugging // iTeadStudio GPS Shield set at 38400 bps @ 1 Hz by default (on my unit) // GPS Shield uses NEO-6M GPS Module which can be configured by downloading uBlox uCenter on computer. // Go to uBlox uCenter > Edit > Messages > NMEA > PUBX to change Baud Rate and get Hex. // Go to uBlox uCenter > Edit > Messages > UBX > CFG > Rate to change Measurement Period and get Hex. // Best results at 38400 bps @ 5 Hz on Arduino Hardware Serial. // If using SoftwareSerial MUST set GPS Module to 4800 bps @ 1 Hz. void setSerial() { char baudRate[] = {0x24, 0x50, 0x55, 0x42, 0x58, 0x2C, 0x34, 0x31, 0x2C, 0x31, 0x2C, 0x30, 0x30, 0x30, 0x37, 0x2C, 0x30, 0x30, 0x30, 0x33, 0x2C, 0x34, 0x38, 0x30, 0x30, 0x2C, 0x30, 0x2A, 0x31, 0x33, 0x0D, 0x0A}; // Hex to change to 4800 bps char fiveHz[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xC8, 0x00, 0x01, 0x00, 0x01, 0x00, 0xDE, 0x6A}; //Hex to change to 5Hz char tenHz[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0x64, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7A, 0x12}; // Hex to change to 10Hz #if DUEMILANOVE #if DEBUG SERIAL_DEBUG.begin(115200); SERIAL_GPS.begin(38400); delay(1000); SERIAL_GPS.write(baudRate,sizeof(baudRate)); SERIAL_GPS.begin(4800); // Set SoftwareSerial to 4800 #else SERIAL_GPS.begin(38400); delay(5000); SERIAL_GPS.write(tenHz,sizeof(tenHz)); SERIAL_GPS.flush(); #endif #else SERIAL_DEBUG.begin(115200); SERIAL_GPS.begin(38400); delay(5000); SERIAL_GPS.write(tenHz,sizeof(tenHz)); SERIAL_GPS.flush(); #endif } 

Dit wordt de periode van de baudrate en waardering voor de GPS. Hoe sneller hoe beter voor ons. De NEO - 6M ondersteunt een meetperiode maximaal 5Hz, maar ik heb in geslaagd om 10Hz en het werkt, maar ik denk dat het zou worden interpoleren van de gegevens. Ik heb niet de data sheet grondig over dit al gelezen. Anyway, 10Hz vertaalt één monster om de 0,1 seconden. Dit is eigenlijk niet dat goed als het gaat om te racen, maar de snelste GPS-eenheden kunt u de plank ik denk dat zijn 20Hz. Dus hoe dan ook, zult u moeten doen sommige interpoleren aangezien de Arduino van een stuk sneller dan dat genieten kunt. Ik heb niet in deze code, maar het zal wel een goede toevoegen op voor u!

Als u van plan over het gebruik van debug-modus op één seriële poort Arduino (Duemilanove, Uno, Pro Mini, Nano, enz.), zult u merken dat u moet de baudrate instellen met 4800 bps en de periode van de meting tot 1 Hz. moraal van het verhaal? Een Mega gebruiken voor het ontwikkelen van.

Je kan de vraag, waar de hel heb je die Hex-codes? Goede vraag. Veel googlen leidde me naar de uBlox center programma, Documentatie, en leren hoe om te praten met het.

Alles, ik commentaar zo veel als ik kon dus hopelijk zijn zelf verklarend.

Gerelateerde Artikelen

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

ProjectoverzichtStudenten op New Lothrop High School in Michigan hebben samengewerkt om te bouwen van een lage hoogte remote sensing platform genaamd een "Aeropod" en het uitgerust met een "Arduino" gebaseerd weer instrument om sfeervo
Programmering Arduino met een Arduino

Programmering Arduino met een Arduino

Dit is mijn eerste Instructable. In dit Instructable ga ik u tonen hoe te programmeren van een Arduino met een Arduino. Er zijn geen stuurprogramma's nodig! Dit Instructable is ook handig voor het uploaden van schetsen aan de Chinese ArduinoStap 1: D
Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Tijdens zijn studie in de Universiteit werden we uitgedaagd als onderdeel van een cursus werken in het ontwerpen van een doos met zeer nauwkeurige temperatuurregeling. Mocht het project te doen slagen, moesten meerdere vakken worden gebouwd en gebrui
Beheersing van een stappenmotor met een Arduino

Beheersing van een stappenmotor met een Arduino

Dit leerprogramma zal u tonen hoe te bedienen van een stappenmotor die werd gered van een oude printer met een Arduino.Stap 1: Wat is een Stepper Motor? Een stappenmotor bestaat uit twee delen, een rotor en een stator. De rotor is het deel van de mot
ARD-e: de robot met een Arduino als een brein

ARD-e: de robot met een Arduino als een brein

het maken van een opensource gecontroleerd Arduino robot voor onder $100.Hopelijk na het lezen van dit instructable u zal zitten kundig Neem uw eerste stap in de robotica. ARD-e kost ongeveer 90 dollar tot $130 afhankelijk van hoeveel vrije elektroni
Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

In dit instructable zullen we gebruiken een potentiometer op een Arduino Uno om controle van een MIDI-CC in Ableton Live. Een MIDI CC staat voor continue Controller, dat wil zeggen een getal in het bereik van 0 tot 127 inclusieve te moduleren iets me
Controle van EL draad met een Arduino

Controle van EL draad met een Arduino

In dit instructable ik zal u tonen hoe u kunt besturen van EL draad met een Arduino.Wat u zult moeten:EL Wire en omvormer - adviseer ik http://ez-el.com/ez-el-wire/10ft-ez-el-wire-3v-inverter-kit/Arduino of een micro-controller die een relay kunt bep
Controle van een Camera met een Arduino en RS232 Shield

Controle van een Camera met een Arduino en RS232 Shield

Dit leerprogramma zal u tonen hoe u kunt controleren vele verschillende aspecten van de werking van een camera's met een Arduino. Deze bewerking kan worden de pan en tilt camera, zoom en focus van de lens, en RGB kenmerken. De Arduino zal gebruik mak
Uitvoeren van een stappenmotor met een Arduino

Uitvoeren van een stappenmotor met een Arduino

Hi Guys,Dit artikel over How to Run een Stepper Motor met een Arduino. Deze dagen stappenmotor in vele elektronikaapparaat zoals, Camera autofocus systeem gebruikt, CD-ROM voor lens beweging, 3D-printer en CNCs. de stappenmotor is beschikbaar in vele
Bijhouden van uw auto met een Arduino gebaseerde Lojack

Bijhouden van uw auto met een Arduino gebaseerde Lojack

De autodiefstal van de is een echte slepen! Verhoog uw kansen van het herstellen van uw auto door het installeren van deze eenvoudige Arduino gebaseerde tracker in uw auto.Dit project is vrij eenvoudig, en zou een goed project voor een nieuwe Arduino
Hoe u kunt besturen een RGB LED met een Arduino

Hoe u kunt besturen een RGB LED met een Arduino

In dit Instructable, zal ik tonen u hoe u kunt besturen een RGB LED met een Arduino.Ter voltooiing van dit project, hebt u het volgende nodig:1 x Arduino (ik ben met behulp van de Arduino Uno R3)1 x RGB LED3 x 150-220 ohm weerstanden4 x Jumper draden
Beheersing van een relais boord met een Arduino Uno

Beheersing van een relais boord met een Arduino Uno

In dit instructable zullen we een Velleman K6714 relais boord met een Arduino beheersen. De schoonheid van het gebruik van Relais is dat we een bescheiden kleine Arduino om over te schakelen van huishoudelijke apparaten of wat u wellicht kunt gebruik
Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, met behulp van ENC28J60 Ethercard

Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, met behulp van ENC28J60 Ethercard

Opmerking: Dit instructable is voor de oude ENC26J60 Ethershield en ethercard. Als u de moderne WIZ5100 op basis van Ethernetshield of een ESP8266 ga bezoek mijn andere instructable dat ik noemen hieronderOngeveer een jaar en een half geleden ik publ
Hoe verbind ik een seriële LCD met een Arduino Nano

Hoe verbind ik een seriële LCD met een Arduino Nano

In een eerdere instructable ik aangetoond hoe verbind de seriële LCD met een Arduino UNOGisteren, ik wilde twee Arduinos gebruiken voor een RF-project en realiseerde me dat ik niet weet hoe de seriële LCD met de Arduino Nano. Dus met een beetje van h