Zum Inhalt wechseln


Foto

Naza + Arduino + LCD: GPS-Kompass-Daten anzeigen

dji naza naza-m multicopter

  • Bitte melde dich an um zu Antworten
8 Antworten in diesem Thema

#1 equal

equal
  • 931 Beiträge
  • OrtBW
  • verwirrter Phantom V1.1,
    zu viele KK2.1-Kopter (F330,F450,F550)

Geschrieben 22. April 2015 - 10:45

Hallo,

 

bevor ich meinen F550 umbaue, will ich noch schnell mein "Vor-Flug-Tester" vorstellen. Ist im momtem noch im Prototypstatus.

Damit kann ich ohne PC prüfen, wie viele Sats die Naza hat, ob die Kompassdaten korrekt sind, wie die GPS-daten sind etc.

Basis ist die DJI Naza (v1, v1 Lite, V2) data decoder library von Pawelsky. Ich habe sie etwas modifiziert und LCD-tauglich gemacht. Ist im momtem noch im Prototypstatus.

 

Bilder sprechen mehr als 1000 Worte:

 

NazaLED 1
NazaLED 2
NazaLED 3
NazaLED 4
 
 
Grüße

und noch ein Anschlussschema:

NazaLCD wire

Bearbeitet von equal, 21. April 2015 - 18:16.

  • Canopus gefällt das

#2 Canopus

Canopus
  • 3.204 Beiträge

Geschrieben 22. April 2015 - 12:24

Das ist sehr cool!

Werden die Minuten und Sekunden von den Koordinaten sowie der Homepoint auch angezeigt?



#3 equal

equal
  • 931 Beiträge
  • OrtBW
  • verwirrter Phantom V1.1,
    zu viele KK2.1-Kopter (F330,F450,F550)

Geschrieben 22. April 2015 - 12:32

Der Datenstrom liefert Rohdaten, die ich noch verifizieren und umrechnen muss. Er liefert die Daten, die der GPS-Pilz zur Naza sendet.

Der Homepoint wird aber in der Naza gespeichert, nicht im GPS. WELCHE Daten der Pilz bei der Speicherung geliefert hat, ist nicht prüfbar.

 

Was man machen könnte, man kann die GPS-Daten nach dem Einschalten im Arduino speichern - im ROM oder auf SD (mit Erweiterung).

Normalerweise sollten dies die Daten sein, die die Naza auch als Homepoint hat.

 

 

weitergedacht:

Ich wollte mit der Lösung mal experimentieren, dass man mit dem Arduino der Naza evtl. einen GPS-Pilz vorgaukelt um

a) Daten evtl. zu korrigieren (GPS-Sprünge)

b) Naza-Verhaltensweise bei Kompass- oder GPS-Fehlern zu verstehen

c) andere GPS und Kompass peripherie an die Naza anzuschließen

 

Ich bin nun aber von der Naza abgekommen. Vielleicht gehe ich der Sache mal an kalten Herbst- oder Wintertagen nach

 

vielleicht finden sich hier im Forum auch ein paar Interessierte, die mitbasteln ... aber das Feedback ist zu den Arduinobastelein sehr begrenzt. :P


  • Canopus und Screaner74 gefällt das

#4 Canopus

Canopus
  • 3.204 Beiträge

Geschrieben 22. April 2015 - 12:36

Ich bin nun aber von der Naza abgekommen.

 

Das wäre dann mein nächster Gedanke gewesen.

Denn wenn man sich für die Elektronik interessiert, ist die Naza wohl das falsche Spielpferd. Da gibt es freiere Flight Controls.



#5 equal

equal
  • 931 Beiträge
  • OrtBW
  • verwirrter Phantom V1.1,
    zu viele KK2.1-Kopter (F330,F450,F550)

Geschrieben 22. April 2015 - 12:40

hmm .. nicht die Elektronik war primär der Grund, sondern das Fliegen an sich ;D



#6 equal

equal
  • 931 Beiträge
  • OrtBW
  • verwirrter Phantom V1.1,
    zu viele KK2.1-Kopter (F330,F450,F550)

Geschrieben 26. Juni 2016 - 11:05

So ... da ich jetzt per PN nach dem Code gefragt wurde, nutze ich den Thread hier, um es allen zugänglich zu machen.

 

bitte beachtet, dass auf dem Foto die GPS-Daten natürlich verändert wurden .. geht ja keinen an, wo ich bastle :-D

#include "NazaDecoderLib.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_CS 10
#define OLED_RESET 12
#define OLED_DC 9
#define OLED_CLK 13
#define OLED_MOSI 11


Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);
uint32_t currTime, attiTime;
float h,m,s;
unsigned long over;
unsigned long current_millis_value = 0;

void setup()
{
  Serial.begin(115200);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
}

char * TimeToString(unsigned long t)
{
  static char str[12];
  long h = t / 3600;
  t = t % 3600;
  int m = t / 60;
  int s = t % 60;
  sprintf(str, "%02d:%02d", m, s);
  return str;
}

void loop()
{
  current_millis_value = millis();
  char mytime[10];
  display.clearDisplay();
  display.setCursor(0,0);
  display.print("NAZAView: ");
  display.println(TimeToString(current_millis_value/1000));
  Serial.println(TimeToString(current_millis_value/1000));

  
  if(Serial.available())
  {
    uint8_t decodedMessage = NazaDecoder.decode(Serial.read());
    switch (decodedMessage)
    {
        
      case NAZA_MESSAGE_GPS:
        display.print("Lat: "); display.println(NazaDecoder.getLat());
        display.print("Sat: "); display.println(NazaDecoder.getNumSat());
        Serial.print("Lat: "); Serial.print(NazaDecoder.getLat(), 7);
        Serial.print(", Lon: "); Serial.print(NazaDecoder.getLon(), 7);
        Serial.print(", Alt: "); Serial.print(NazaDecoder.getGpsAlt(), 7);
        Serial.print(", Fix: "); Serial.print(NazaDecoder.getFixType());
        Serial.print(", Sat: "); Serial.println(NazaDecoder.getNumSat());
        break;
      case NAZA_MESSAGE_COMPASS:
        Serial.print("Heading: "); Serial.println(NazaDecoder.getHeadingNc(), 2);
        display.print("Heading: "); display.println(NazaDecoder.getHeadingNc());
        break;
    }
  }
  else
  {
    display.print("Read: ");display.println(Serial.read());
    Serial.print("input: "); Serial.println(Serial.read());
  }

  currTime = micros();
  if(attiTime < currTime)
  {
    attiTime = currTime + 200000;
    Serial.print("Pitch: "); Serial.print(NazaDecoder.getPitch());
        display.print("Pitch: "); display.print(NazaDecoder.getPitch());
    Serial.print(", Roll: "); Serial.println(NazaDecoder.getRoll());
        display.print(", Roll: "); display.println(NazaDecoder.getRoll());
  }
  display.display();
}

Ich hoffe, es klappt. Ich kann es nicht mehr testen, da ich NAZA verbannt habe.

 

Viel Spaß und grüße


Bearbeitet von equal, 26. Juni 2016 - 11:07.


#7 JoergSH

JoergSH
  • 1 Beiträge

Geschrieben 07. Februar 2019 - 20:27

Hallo, würde das GPS Modul gern ohne den Naza Controller nutzen. Hat das evtl. jemand realisiert?
Grüße
Jörg

#8 waldlatscher

waldlatscher
  • 29 Beiträge
  • OrtSpreewald
  • Multiplex Cockpit SX9
    Eigenbau-Quadro mit NAZA V2 (wird wiederbelebt mit einer PX4)
    Eigenbau-Hexa mit Tarot ZYX-M
    DJI Mavic Air 2

Geschrieben 18. März 2019 - 17:11

Moin, prima Idee mit dem Arduino. Ich habe das mit einem Raspberrypi 3+ realisiert, da ich der Meinung war, daß das GPS einen Treffer hat.

So brauchte ich keinen extra Bildschirm zu kaufen. Der Raspi ist im WLAN, genau wie mein Tablet. Auf dem läuft ein ssh-client.

Schon kann man das Ganze draußen platzieren und prüfen. Es hat sich übrigens herausgestellt, daß das GPS ganz ist.

Leider will mein OmninxtF7 aber davon nichts wissen.

Grüße aus dem Spreewald an alle Bastler :)

Torsten



#9 waldlatscher

waldlatscher
  • 29 Beiträge
  • OrtSpreewald
  • Multiplex Cockpit SX9
    Eigenbau-Quadro mit NAZA V2 (wird wiederbelebt mit einer PX4)
    Eigenbau-Hexa mit Tarot ZYX-M
    DJI Mavic Air 2

Geschrieben 19. März 2019 - 17:57

Moin, so hab ich ja ganz vergessen auf Jörgs Frage zu antworten. Die Lösung mit dem Raspi läuft natürlich ohne die NAZA. Man klemmt das GPS einfach an die GPIO :-)

Programmieraufwand geht gegen Null, es sind nur ein paar Packages zu installieren, kleine Konfigänderungen zu machen  und das richtige device auszuwählen.

Das klappt mit so ziemlich allen GPS-Modulen.

Grüße

Torsten







Auch mit einem oder mehreren dieser Stichwörter versehen: dji, naza, naza-m, multicopter

Besucher die dieses Thema lesen: 0

Mitglieder: 0, Gäste: 0, unsichtbare Mitglieder: 0