Archives mensuelles : mars 2017

image_pdfimage_print

Tracker GPS

20170217_232938

Composants

  • Une carte Arduino Nano
  • Un module GPS Ublox neo-6m
  • Un adaptateur microSD
  • Une plaque à insertion rapide
  • Des fils
  • Un ordinateur avec l’environnement de développement Arduino

Schéma de câblage

trackergps_bb

 

Code

#include « SoftwareSerial.h »
#include <SD.h>
#include <SPI.h>
#include <TinyGPS++.h>

int CS_PIN = 10;

File file;

char data;

double latitude;
double longitude;
double latitudedec;
double longitudedec;

TinyGPSPlus gps;

SoftwareSerial mySerial(4, 5); // RX, TX

void setup()
{
Serial.begin(9600);
Serial.println(« uBlox Neo 6M »);
mySerial.begin(9600);
initializeSD();
}
void loop() // run over and over
{
if (mySerial.available())
{

data = mySerial.read();
// Serial.print(data);
gps.encode(data);
if (gps.location.isUpdated())
{
latitudedec = gps.location.rawLat().billionths;
longitudedec = gps.location.rawLng().billionths;
latitude = gps.location.rawLat().deg;
longitude = gps.location.rawLng().deg;

Serial.println(« ——– FIX GPS ————« );
Serial.print(« LATITUDE= »); Serial.println(latitude);
Serial.print(« LONGITUDE= »); Serial.println(longitude);
File dataFile = SD.open(« datalog.txt », FILE_WRITE);
dataFile.println(String(gps.date.value())+ »; »+String(gps.time.value())+ »; »+String(latitude)+ »; »+String(latitudedec)+ »; »+String(longitude)+ »; »+String(longitudedec));

dataFile.close();
}
}
}

void initializeSD()
{
Serial.println(« Initializing SD card… »);
pinMode(CS_PIN, OUTPUT);

if (SD.begin())
{
Serial.println(« SD card is ready to use. »);
} else
{
Serial.println(« SD card initialization failed »);
return;
}
}

Ci dessous un code en Python pour générer un fichier pour Google-earth

 

#!/usr/bin/python

import math
import os,sys,glob
import os,commands,sys
import datetime,time

class KML_File:
« For creating KML files used for Google Earth »
def __init__(self, filepath):
self.filepath = filepath
« adds the kml header to a file (includes a default style) »
file = open(filepath, »w »)
file.write(
« <?xml version=\ »1.0\ » encoding=\ »UTF-8\ »?>\n »\
« <kml xmlns=\ »http://www.opengis.net/kml/2.2\ »>\n » \
« <Folder>\n »\
« <name></name>\n »)
file.close()

def close(self):
file = open(self.filepath, »a »)
file.write(« </Folder>\n »)
file.write(« </kml> »)
file.close()

def open_folder(self, name):
file = open(self.filepath, »a »)
file.write(
« <Folder>\n »\
 » <name> » + name + « </name>\n »)
file.close()

def close_folder(self):
file = open(self.filepath, »a »)
file.write(
« </Folder>\n »)
file.close()

def add_placemarker(self, allLonAndLat, altitude = 0.0, description =  » « , name =  » « , range = 6000, tilt = 45, heading = 0):
« adds the point to a kml file »
file = open(self.filepath, »a »)
file.write(
« <Placemark>\n »\
 » <description> » + description + « </description>\n »\
 » <name> » + name + « </name>\n »\
 » <Point>\n »\
 » <coordinates> »+allLonAndLat+ »</coordinates>\n »\
 » </Point>\n »\
 » </Placemark>\n »)
file.close()

def add_coord(self, allLonAndLat, altitude = 0.0, description =  » « , name =  » « , range = 6000, tilt = 45, heading = 0):
« adds the point to a kml file »
file = open(self.filepath, »a »)
file.write(
« <Placemark>\n »\
 » <visibility>1</visibility>\n »\
 » <LineString>\n »\
 » <extrude>1</extrude>\n »\
 » <tessellate>1</tessellate>\n »\
 » <altitudeMode>absolute</altitudeMode>\n »\
 » <coordinates> » + allLonAndLat + « </coordinates>\n »\
 » </LineString>\n »\
 » </Placemark>\n »)
file.close()
def convert(val):
eval = int(val/100.)
return eval + (float(val) – eval*100.0)/60.0
if __name__ == « __main__ »:
a=KML_File(« test.kml »)

f=open(‘DATALOG.TXT’,’r’)
lines=f.readlines()
f.close()

prevlat=0
prevlon=0
n=0
for l in lines:
print l

tmp=l.split(‘;’)
londeg=tmp[4].strip()
latdeg=tmp[2].strip()
londec=tmp[5].strip()
latdec=tmp[3].strip()

lat=float(latdeg)+float(latdec)/1000000000.0
lon=float(londeg)+float(londec)/1000000000.0

if float(lon) < 5 or float(lat)< 30:
continue

if lon == prevlon and lat == prevlat:
continue

prevlat=lat
prevlon=lon
desc=tmp[0]+’ ‘+tmp[1]
tname=tmp[0]+’ ‘+tmp[1]
t=str(lon)+ », »+str(lat)
a.add_placemarker(t, altitude = 0.0, description = desc, name=str(n), range = 6000, tilt = 45, heading = 0)
n=n+1
a.close()

 

Save

Save

Save