Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

FC oparte na Arduino

Moderatorzy: moderatorzy2014, moderatorzy

leeon
Posty: 4
Rejestracja: piątek 21 lis 2014, 08:13
Lokalizacja: Koszalin

Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: leeon »

Witam, ostanio bawiłem się Arduino mini i Multiwii.
Z połączenia wyszedł mi logger GPS na SD.

Gniazdo SD(microSD) kosztuje ok 3USD.

Może komuś się przyda, ja sobie zapisuje cały przepieg trasy z gazem i baterią.



Instrukcja w 40 min mogą być błędy:

1. Podłączyć do arduino SD socket, musi działać np z Cardinfo.(files/examples/sd/cardinfo)

piny:
MOSI - pin 11
MISO - pin 12
CLK - pin 13
CS - pin 4

2. Gdy Cardinfo dobrze działa to wgrać do arduino 3dWiiLogger.hex używająć XLoader.

3. Podłączyć arduino rx do multiwii tx i rx do tx.

4. Włóż kartę sd do gniazda.

5. Włącz Multiwii i poczekaj na sygnał GPS.

6. Uzbrój Mulitwii poczekaj 10 sek i disarm(poczekaj 2 sec i wyłącz multiwii). - Stworzy folder Log0 na karcie
Tworzy nowy Track gdy zostanie uzbrojony.


II. Konwersja plików do formatu KML - Goggle Earth

1. Skopiuj na kartę sd do głównego folderu folder data i plik MultiWiiKml.exe.
2. Odpal plik MultiWiiKml.exe - Utworzy w folderach LOG0- LOG25 Dwa pliki KML jeden to trasa ze szczegółowymi danymi lotu a drugi to trasa w 3d(z wysokością).
3. Na karcie musi być folder DATA.
4. Odpalić plik Kml -> musi być zainstlowany google Earth.


I wsio, jakby coś nie działało to pisać.
(Sprawdzone z Multiwii Crius 2.5 se) Powinno działać nawet z naze32

Zapomniałem o najważniejszym :)
Download
X525 quad
bolcio30
Posty: 262
Rejestracja: środa 08 maja 2013, 21:01
Lokalizacja: Rzeszów - Gorlice

Post autor: bolcio30 »

fajny projekt tylko szkoda że nie opublikował go ktoś z jakieś 1-2 lata temu - jak MultiWii było w modzie:)
TAROT Ironman FY650 - 3DR Pixhawk - ZTW Spider 30A - TAROT 4006/620KV - 1355 - Boscam 5.8GHz 400mW
TAROT 680PRO - DJI NAZA M v2 - Multistar 30A - TAROT 4006/620KV - 1355 - Boscam 5.8GHz 200mW
ZMR QAV250 - ZMR 1804 2400KV ESC 10A Simonk Naze32 10 DOF
leeon
Posty: 4
Rejestracja: piątek 21 lis 2014, 08:13
Lokalizacja: Koszalin

Post autor: leeon »

Swoją przygodę z lataniem zacząłem od MultiWii. Na co warto teraz przejść? Czyli co jest w modzie :)
X525 quad
Awatar użytkownika
JasQ
Posty: 921
Rejestracja: środa 19 paź 2011, 10:43
Lokalizacja: Strzelce Opolskie

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: JasQ »

w zeszłym roku bawiłem się czymś takim https://www.sparkfun.com/products/9530
ale stwierdziłem że za dużo z tym zachodu bo karta świrowała czasem śmieci się zapisywały , zrobiłem prosty loger na kości pamięci 24c512 ale w sumie raz go użyłem tylko i poszedł w kosz jako zbędny projekt bo kfc32 na których latam mają już to w sobie
DJI Mavic 2 Zoom
DJI Spark
KFC32FTB SkyHunter Mini
Ptyczak Matek F405 DJI Ocusync AirUnit
Żaglówka Phantom
KFC32FTB:SW1900,Chasser,Patyczak2,Pionieer2
KFC32+OSD:QX450,QX330,Legwan,Combat
KFC32F1:Race250,9' Carbon
KFC32mini:Dragon,QX300
FY30-A:QX550,Vega1600,Patyczak1
Naza_v2+iOsd:Shadow
Inne:Tello,Motorówka,T-Rex450Plus,QX90
Awatar użytkownika
Rurek
Posty: 16419
Rejestracja: środa 10 mar 2010, 15:21
Lokalizacja: AIP ENR 5.5 - AAA 153 :-)

Re:

Post autor: Rurek »

bolcio30 pisze:fajny projekt tylko szkoda że nie opublikował go ktoś z jakieś 1-2 lata temu - jak MultiWii było w modzie:)
A czemu tak piszesz? Base/Clean-flight które zapewne masz na myśli jako obecnie "modne" oprogramowanie do tanich kontrolerów- nadal opierają komunikację na protokole MSP więc jak najbardziej ten logger powinien działać.
infekcja FPV postępuje w zastraszającym tempie...
Awatar użytkownika
Burakko
Posty: 2231
Rejestracja: czwartek 14 cze 2012, 20:55
Lokalizacja: Dąbrowa Górnicza

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Burakko »

to co zapisuje na karcie to logi z czystego GPSa (NMEA) ? Czy konkretne już współrzędne ? Mam GPSa który wysyła dane ale trzeba by było je obrobić z postaci NMEA. Wie ktoś jak ?

19-02-2015

Nieważne już wykonałem swojego loggera używając GPSa z OSD. Adruino mini pro, karta SD - nic więcej do szczęścia :D
Mapka ŚL http://maps.google.com/maps/ms?ie=UTF&m ... bcc46646ee

Kontroler lotu: "Widoczność pionowa zero."
Pilot: "W stopach czy w metrach?"

Nie pisz "Dron" moje dzieci mogą to czytać...
beargrylls
Posty: 3
Rejestracja: poniedziałek 23 lut 2015, 22:27

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: beargrylls »

Witam, mam problem z podłączeniem Arduino UNO do MultiWii HK 328,
korzystam z kodu: https://github.com/renes/multiwiiDataLogger

Po wgraniu programu, Arduino nie wysyła zapytań do MultiWii, a dioda TX nie mruga. Natomiast gdy podłączę je do komputera, na monitorze portu widać że Arduino wysyła zapytania. Nie wiem jaka jest przyczyna. Masy były połączone.
Awatar użytkownika
Burakko
Posty: 2231
Rejestracja: czwartek 14 cze 2012, 20:55
Lokalizacja: Dąbrowa Górnicza

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Burakko »

Sciagnij terminal i posłuchaj co to ardu wysyła. I sprawdź bitrate.
Mapka ŚL http://maps.google.com/maps/ms?ie=UTF&m ... bcc46646ee

Kontroler lotu: "Widoczność pionowa zero."
Pilot: "W stopach czy w metrach?"

Nie pisz "Dron" moje dzieci mogą to czytać...
Awatar użytkownika
Adrián
Posty: 9286
Rejestracja: środa 03 wrz 2014, 11:11
Lokalizacja: 50°08′13″N ; 18°57′59″E

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Adrián »

leeon, dzięki :-) fajna sprawa, też to zastosuję :)
beargrylls
Posty: 3
Rejestracja: poniedziałek 23 lut 2015, 22:27

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: beargrylls »

Burakko pisze:Sciagnij terminal i posłuchaj co to ardu wysyła. I sprawdź bitrate.
Arduino wysyła dane zgodne z msp, typu "$M<ii" czy coś podobnego, ale jak jest podłączone do kompa, a jak jest podłączone do Multiwii to nic nie wysyła, chyba nie może nawiązać komunikacji. Baud ustawiony w Arduino jest 115200, tak samo jak w Multiwii.
Awatar użytkownika
Burakko
Posty: 2231
Rejestracja: czwartek 14 cze 2012, 20:55
Lokalizacja: Dąbrowa Górnicza

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Burakko »

nie wiem jaka jest ale różnica napięć 3.3V czy 5V w komunikacji zachowana ?
Mapka ŚL http://maps.google.com/maps/ms?ie=UTF&m ... bcc46646ee

Kontroler lotu: "Widoczność pionowa zero."
Pilot: "W stopach czy w metrach?"

Nie pisz "Dron" moje dzieci mogą to czytać...
beargrylls
Posty: 3
Rejestracja: poniedziałek 23 lut 2015, 22:27

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: beargrylls »

Napięcia powinny się zgadzać, i tu i tu jest 5V. Możliwe, że to kwestia zworki, która powinna być wyjęta ? Muszę to sprawdzić.
Awatar użytkownika
Burakko
Posty: 2231
Rejestracja: czwartek 14 cze 2012, 20:55
Lokalizacja: Dąbrowa Górnicza

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Burakko »

Założę się że to mega pierdoła. Tak zawsze jest. Ja dziś otrzymałem piękne gniazdo na karty SD więc miniaturyzacja :D

no i cisnę się z tym ardu i doop@ Mam Arduiono Pro mini + MicroSD card adapter ale nie tworzy żadnych plików.

Kod: Zaznacz cały

#include <Wire.h>
#include <SD.h>
#include <string.h>
#include <ctype.h>
int ledPin = 13;                  // LED test pin
int ledState = LOW;
long previousMillise = 0;
long interval = 1000;
long previousMillis = 0;
const int ledPin12 = 12;
int rxPin = 0;                    // RX PIN 
int txPin = 1;                    // TX TX
int byteGPS=-1;
char linea[300] = "";
char comandoGPR[7] = "$GPRMC";
int cont=0;
int bien=0;
int conta=0;
int indices[13];
const int chipSelect = 53;//changed from 8
const int LOCATION_FILE_NUMBER_LSB = 0x00;
const int LOCATION_FILE_NUMBER_MSB = 0x01;
File dataFile;
void setup() {
  pinMode(53, OUTPUT);
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin, OUTPUT);       // Initialize LED pin
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(4800);

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

  Serial.println("Time, Status, Latitude, Direction, Longitude, Direction, Velocity, Heading, Date, Magnetic degrees, E/W, Checksum");
  delay(1000);

  // start the wire and RTC libraries:
  Wire.begin();

  //newlog();
  dataFile = SD.open("NewGPS.txt", FILE_WRITE);
  //Serial.println("finishSetup");
  delay(20);

  for (int i=0;i<300;i++){       // Initialize a buffer for received data
    linea[i]=' ';
  }   
}
void loop() {
  digitalWrite(ledPin, HIGH);
  byteGPS=Serial.read();         // Read a byte of the serial port
  if (byteGPS == -1) {           // See if the port is empty yet
    delay(100); 
  } 
  else {
    linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
    conta++;                      
    // Serial.print(byteGPS, BYTE); 
    // dataFile.print(byteGPS, BYTE);
    if (byteGPS==13){            // If the received byte is = to 13, end of transmission
      digitalWrite(ledPin, LOW); 
      cont=0;
      bien=0;
      for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
        if (linea[i]==comandoGPR[i-1]){
          bien++;
        }
      }
      if(bien==6){               // If yes, continue and process the data
        for (int i=0;i<300;i++){
          if (linea[i]==','){    // check for the position of the  "," separator
            indices[cont]=i;
            cont++;
          }
          if (linea[i]=='*'){    // ... and the "*"
            indices[12]=i;
            cont++;
          }
        }
        Serial.println("");      // ... and write to the serial port

        for (int i=0;i<12;i++){
          switch(i){

          }
          for (int j=indices[i];j<(indices[i+1]-1);j++){
            Serial.print(linea[j+1]); 
          }
          Serial.print(",");

        }
        // Serial.println("---------------");
        Serial.println();

        if(dataFile)
        {
          //dataFile.println("");      // ... and write to the serial port
    digitalWrite(ledPin12, HIGH);
          dataFile.println();

          for (int i=0;i<12;i++){
            switch(i){
              //             case 0 :dataFile.print("Time in UTC (HhMmSs): ");break;
              //             case 1 :dataFile.print("Status (A=OK,V=KO): ");break;
              //             case 2 :dataFile.print("Latitude: ");break;
              //             case 3 :dataFile.print("Direction (N/S): ");break;
              //             case 4 :dataFile.print("Longitude: ");break;
              //             case 5 :dataFile.print("Direction (E/W): ");break;
              //             case 6 :dataFile.print("Velocity in knots: ");break;
              //             case 7 :dataFile.print("Heading in degrees: ");break;
              //             case 8 :dataFile.print("Date UTC (DdMmAa): ");break;
              //             case 9 :dataFile.print("Magnetic degrees: ");break;
              //             case 10 :dataFile.print("(E/W): ");break;
              //             case 11 :dataFile.print("Mode: ");break;
              //             case 12 :dataFile.print("Checksum: ");break;
            }
            for (int j=indices[i];j<(indices[i+1]-1);j++){
              dataFile.print(linea[j+1]); 
            }
            dataFile.print(",");
          }
          dataFile.println("");


        } 
        else{
          digitalWrite(ledPin12, LOW);
        }


        dataFile.flush();
        //Serial.flush();

      }
      conta=0;                    // Reset the buffer
      for (int i=0;i<300;i++){    //  
        linea[i]=' ';             
      }                 
    }
  }
}
Mapka ŚL http://maps.google.com/maps/ms?ie=UTF&m ... bcc46646ee

Kontroler lotu: "Widoczność pionowa zero."
Pilot: "W stopach czy w metrach?"

Nie pisz "Dron" moje dzieci mogą to czytać...
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: pawelsky »

Burakko pisze:Założę się że to mega pierdoła. Tak zawsze jest. Ja dziś otrzymałem piękne gniazdo na karty SD więc miniaturyzacja :D

no i cisnę się z tym ardu i doop@ Mam Arduiono Pro mini + MicroSD card adapter ale nie tworzy żadnych plików.

Kod: Zaznacz cały

const int chipSelect = 53;//changed from 8
[...]
  pinMode(53, OUTPUT);
W ProMini CS to zwykle Pin 10 (53 to dla Megi)
Awatar użytkownika
Burakko
Posty: 2231
Rejestracja: czwartek 14 cze 2012, 20:55
Lokalizacja: Dąbrowa Górnicza

Re: Logowanie GPS na karcie SD i wyświetlanie na GoogleEarth

Post autor: Burakko »

A zobaczysz czy dobrze podpiąłem ? Zazwyczaj pisze w bascomie na czystych AVR nie znam się zbytnio na Ardu i "C". I zmieniłem Serial.begin(4800); czy dobrze ?

Obrazek

A karta rozumiem formatowana na FAT ?
Ostatnio zmieniony środa 25 lut 2015, 19:30 przez Burakko, łącznie zmieniany 1 raz.
Mapka ŚL http://maps.google.com/maps/ms?ie=UTF&m ... bcc46646ee

Kontroler lotu: "Widoczność pionowa zero."
Pilot: "W stopach czy w metrach?"

Nie pisz "Dron" moje dzieci mogą to czytać...
ODPOWIEDZ