Naza Telemetrie für FrSky D4R-II und D8R

Status
Nicht offen für weitere Antworten.

aargau

Erfahrener Benutzer
#81
Kannst du mal "T1" ansehen? Das müsste eigentlich auch ohne 3D Fix übertragen werden, wie die Koordinaten sind weis ich nicht mehr genau, meinte aber, die werden auch dann übertragen wenn kein Fix da ist und nur "müll" ankommt. Ev. ist das aber auch auf 2D/3D Fix begrenzt, da die Taranis mit den Daten danach ja Distanz und co. berechnet.

Bezüglich Serial1: Das ist sicher ein Fehler und wurde nur vergessen, der Code auf dem pro micro ist 1:1 gleich, nur dass halt da Serial1 verwendet wird und nicht Serial.

Nachwievor wäre ein Bild interessant. Hast du ev. eine V2 Naza mit PMU? Falls ja musst du die Daten unbedingt "hinter" der PMU, also am GPS Anschluss abzapfen und nicht vorne, da da mit CAN-Bus gearbeitet wird.

@der-Frickler: Danke für dein Input, dass es scheinbar soweit laufen müsste.
 
#82
Ja ich meine es musste nur die serial1 Zeile raus. Bei mir hängt der pro mini parallel zum minazaosd. Beides tut.
Glaube der GPS sendet erst Pakete wenn er neun minimum fix hat. Aber wenns osd geht muss der mini auch gehen. Blinkt die led denn?

Kann leider nicht nach schauen im code, bin im Urlaub und hab nur den kopter aber nicht den Rechner dabei.
 

aargau

Erfahrener Benutzer
#85
Hmm hast du ev. RX/TX vertauscht?
GGf. wäre es ev. mal noch eine Idee wert, den input vom RX einfach auf TX wieder auszugeben un am PC über den Serialmonitor zu prüfen ob was ankommt.
Das hilft öfters mal wenn man nicht ganz sicher ist wo es liegt.
 

bruchpilot05

Erfahrener Benutzer
#86
Ich habe mal einen anderen Arduino beschrieben, funktioniert aber leider auch nicht. Die Taranis zeigt trotzdem nichts an.
Ich habe jetzt auch mal ein Update der Taranis durchgeführt, immer noch ohne Erfolg.

Ich habe mal den SerialMonitor mal probiert. Irgendwelche Daten kommen beim Arduino an und auch beim PIN5 raus.
Sind aber nur wilde Zeichen.
Die Daten gehen auch an den D8R-XP, aber werden irgendwie nicht übermittelt.
Habe mal den FrSky Hub mit Stromsensor am Dateneingang des Empfängers angeschlossen, Daten kommen ohne Probleme an die Taranis.

Woran kann es noch liegen?
 

aargau

Erfahrener Benutzer
#87
Ich glaube ich habe den Fehler gesehen:

Im Setup wird im Code das Serial mit 57600Baud initialisiert, korrekt müsste aber 115200 sein.
Versuch also mal die Zeile durch :
Serial.begin(115200);
zu ersetzen.
Ansonsten wenn das auch nichts bringt, setz mal #define DEBUG true
und klemm nun ein FTDI Kabel nur an den TX Port des Arduinos. Du solltest nun eigentlich die GPS Infos sehen.
 
#89
Mittlerweile gibt es übrigens auch ne Klasse Arduino Lib für die S.Port Empfänger/Sensoren.
http://www.rcgroups.com/forums/showthread.php?t=2245978

Habe mir mit nem Arduino Pro Mini so noch nen Telemetrie Adapter für Naza-> X4/X8 Empfänger gebaut. Gleichzeitig kam noch ein Spannungsteiler und Stromsensor an den Arduino so das er gleichzeitig auch noch den FCS Strom/Spannungssensor emuliert. Einzelzellensensor über weitere Spannungsteiler ist auch in Planung.

Hier mal das bisschen Code das nötig ist:
Code:
/*
  FrSky S-Port Telemetry library example
  (c) Pawelsky 20150921
  Not for commercial use
  
  Note that you need 328P based (e.g. Pro Mini, Nano, Uno) board and FrSkySportTelemetry library for this example to work

  Modified for Naza Telemetry by der-Frickler.
*/

#include "NazaDecoderLib.h"
#include "FrSkySportSensor.h"
#include "FrSkySportSensorFcs.h"
#include "FrSkySportSensorFlvss.h"
#include "FrSkySportSensorGps.h"
#include "FrSkySportSensorRpm.h"
#include "FrSkySportSensorVario.h"
#include "FrSkySportSingleWireSerial.h"
#include "FrSkySportTelemetry.h"
#include "SoftwareSerial.h"

FrSkySportSensorFcs fcs;                               // Create FCS sensor with default ID
FrSkySportSensorFlvss flvss;                           // Create FLVSS sensor with default ID
FrSkySportSensorGps gps;                               // Create GPS sensor with default ID
FrSkySportSensorRpm rpm;                               // Create RPM sensor with default ID
FrSkySportSensorVario vario;                           // Create Variometer sensor with default ID
FrSkySportTelemetry telemetry;                         // Create Variometer telemetry object

#define P_VOLTAGE A0
#define P_CURRENT A1
#define P_CELL1   A2
#define P_CELL2   A3
#define P_CELL3   A4
#define P_CELL4   A5

long voltage = 0;
long voltageAVG = 0;
long current = 0;
long currentAVG = 0;
int satFIX = 0;

void setup()
{
  Serial.begin(115200);
  // Configure the telemetry serial port and sensors (remember to use & to specify a pointer to sensor)
  telemetry.begin(FrSkySportSingleWireSerial::SOFT_SERIAL_PIN_12, &fcs, &flvss, &gps, &rpm, &vario);
}

void loop()
{
  // read voltage and make average
  voltage = analogRead(P_VOLTAGE);
  voltage = map(voltage, 0, 1024, 0, 2000); // map 5V A/D range to 0-20V 1/4 Divider with 10k,30k resistors
  voltageAVG = (0.1*voltage + 0.9*voltageAVG);

// read current and make average 
  current = analogRead(P_CURRENT);
  current = map(current, 0, 1024, 3778, -3778); // map 5V A/D range to ACS715 30A Current Sensor 
  currentAVG = (0.1*current + 0.9*currentAVG);
  
  // Set current/voltage sensor (FCS) data
  fcs.setData(
      ((float)currentAVG/100.0), 
      ((float)voltageAVG/100.0)
     );

  // Set LiPo voltage sensor (FLVSS) data 
  //flvss.setData(4.01, 4.02, 4.03, 4.04, 4.05, 4.06);  // Cell voltages in volts (cells 1-6)


  // parse naza gps data
  if(Serial.available()) {
    if(NazaDecoder.decode(Serial.read()) == NAZA_MESSAGE_GPS) {
      
      satFIX = NazaDecoder.getFixType() + (NazaDecoder.getNumSat()*10);
      rpm.setData(0.0, NazaDecoder.getNumSat(), satFIX);

      // if satfix -> update telemetry
      if (NazaDecoder.getFixType() >= 3 {
        gps.setData(NazaDecoder.getLat(), NazaDecoder.getLon(),
                  NazaDecoder.getGpsAlt(), NazaDecoder.getSpeed(), NazaDecoder.getCog(),
                  NazaDecoder.getYear(), NazaDecoder.getMonth(), NazaDecoder.getDay(),
                  NazaDecoder.getHour(), NazaDecoder.getMinute(), NazaDecoder.getSecond());
        vario.setData(NazaDecoder.getGpsAlt(), NazaDecoder.getGpsVsi()); 
      }
    }
  }
  
  // Send the telemetry data, note that the data will only be sent for sensors
  // that are being polled at given moment
  telemetry.send();
}
Sehr schön gekapselt die lib!
 
Zuletzt bearbeitet:
#91
Sollte gehen, der Code aus diesem Thread sendet die Daten im D Protokoll sowieso mit.
Du musst nur in der Naza2FrSkyHub.ino die Strom und Spannung messen und entsprechend die beiden Variablen iob_vbat_A und iob_ampbatt_A setzten.

Alle Angaben ohne gewähr, da nicht getestet. Aus Mangel an Bedarf werde ich das aktuell auch nicht tun ;_)
 

just_different

Erfahrener Benutzer
#93
Sehr intereasanter Thread ist das hier, hat mir im Grund nur noch gefehlt.

Frickler, darf ich mal fragen, ob das auch mit ner Graupner laufen würde?

Ich kenne die Unterschiede mit den ganzen System wie Taranis, Futaba, turnigy und halt Graupner nicht aus.
Ich habe ne MX-20 und GR16.

Wie sieht eigentlich die Beschaltung aus?
Das habe ich entweder übersehen, oder nicht gefunden.
 
#94
Graupner hat wieder ein eigenes Telemetrie Protokoll, keine Ahnung obs da eine Bastellösung zu gibt.

Beschaltung ist einfach, TX vom Naza GPS an den RX am Arduino und eben den im Arduino Code als Softserial TX definierten Code an den FrSky Empfänger.
 

just_different

Erfahrener Benutzer
#95
Danke für die schnelle Antwort.

Dann muss ich also mal schauen, ob es etwas gibt das vom FrSky2Graupner-Bus macht.
 

seeers

Erfahrener Benutzer
Ich habe Probleme bei den GPS Koordinaten und der Sat Anzahl, bin mir allerdings nicht sicher obs am Update auf 2.1 liegt. Welchen Code verwendest du? Ich fliege bis jetzt nur mit den D4R-II Empfängern, daher auch D-Protokoll
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten