Zlecę napisanie programu, który będzie odczytywał prędkość i czas co 0,2s z modułu GPRS i zapisywał na kartę pamięci mikroSD.
Ogólnie projekt wykonałem na Arduino Mini + GPS GY-NEO6MV2, lecz zapis mam tylko co 1s i nie wiem, jak z tego mam wybrnąć. Na Arduino nie musi być, bo i tak po zaprogramowaniu muszę wylutować mikroprocesor i przenieść na mniejszą płytkę.
A to program na Arduino.
#include
#include
#include
#include
/*
* WIRING DIAGRAM:
* NANO PIN 3.3V -> SD PIN 3V3
* NANO PIN GND -> SD PIN GND
* NANO PIN D10 -> SD PIN CS
* NANO PIN D11 -> SD PIN MOSI
* NANO PIN D12 -> SD PIN MISO
* NANO PIN D13 -> SD PIN CLK
* NANO PIN 5V -> GPS PIN VCC
* NANO PIN GND -> GPS PIN GND
* NANO PIN D3 -> GPS PIN RX
* NANO PIN D4 -> GPS PIN TX
*/
/*
* DATA FORMAT:
* HHMMSS;DDMMYYYY;LATITUDE;LONGITUDE;SPEED;NUMBEROFSATELLITES;
* HHMMSS is UTC time!
*/
// SD Variables
File myFile;
String dataString = "";
const int chipSelect = 10;
// GPS Variables
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
void readGPSData()
{
while (ss.available() > 0)
gps.encode(ss.read());
}
void sdInitialization()
{
if (!SD.begin(chipSelect))
{
while (1);
}
}
void sdWriteData()
{
myFile = SD.open("GPS_data.txt", FILE_WRITE);
if (myFile)
{
myFile.println(dataString);
myFile.close();
}
}
void setup()
{
sdInitialization();
ss.begin(GPSBaud);
// Serial.begin(9600);
}
void loop()
{
readGPSData();
if (gps.time.isValid() && gps.time.isUpdated() && gps.date.isValid() && gps.speed.isValid() && gps.satellites.isValid()) // && gps.location.isValid()0
{
dataString = "";
if (gps.time.hour() < 10) { dataString += "0"; }
dataString += String(gps.time.hour());
if (gps.time.minute() < 10) { dataString += "0"; }
dataString += String(gps.time.minute());
if (gps.time.second() < 10) { dataString += "0"; }
dataString += String(gps.time.second());
dataString += ";";
if (gps.date.day() < 10) { dataString += "0"; }
dataString += String(gps.date.day());
if (gps.date.month() < 10) { dataString += "0"; }
dataString += String(gps.date.month());
dataString += String(gps.date.year());
dataString += ";";
// dataString += String(gps.location.lat(), 6);
// dataString += ";";
// dataString += String(gps.location.lng(), 6);
// dataString += ";";
dataString += gps.speed.kmph();
dataString += ";";
dataString += gps.satellites.value();
dataString += ";";
sdWriteData();
}
}