SBUS-Frame Monitoring über SPort

Status
Nicht offen für weitere Antworten.
#62
Ich hab mal 1 min mitgelogt, der LinkQuality Sensor macht genau, was er soll. Wird er gepollt mit 0x7E und 0xF2 (Sensor ID 19), kommt als Antwort:
Code:
    frame[0] = SPORT_HEADER_DATA;    
    frame[1] = lowByte(SENSOR_APPL_ID);
    frame[2] = highByte(SENSOR_APPL_ID);
    frame[3] = lh.byteValue[0];[COLOR="#0000FF"] // ==> 0x64 = 100%[/COLOR]
    frame[4] = lh.byteValue[1];
    frame[5] = lh.byteValue[2];
    frame[6] = lh.byteValue[3];
    [COLOR="#0000FF"]und die Checksumme[/COLOR]
Zeit in Sekunden, Datum,
0.018069000000000,0x7E,,
0.018243000000000,0xF2,,
0.019473000000000,0x10,,
0.019657000000000,0x00,,
0.019842000000000,0x51,,
0.020026000000000,0x64,,
0.020216000000000,0x00,,
0.020400000000000,0x00,,
0.020585000000000,0x00,,
0.020769000000000,0x3A,,

oder, wenn keine Daten vorliegen:
Code:
    frame[0] = SPORT_HEADER_DISCARD;    
    frame[1] = 0;
    frame[2] = 0;
    frame[3] = 0;
    frame[4] = 0;
    frame[5] = 0;
    frame[6] = 0;
    [COLOR="#0000FF"]und die Checksumme[/COLOR]
0.042084000000000,0x7E,,
0.042257000000000,0xF2,,
0.043527000000000,0x00,,
0.043711000000000,0x00,,
0.043902000000000,0x00,,
0.044086000000000,0x00,,
0.044271000000000,0x00,,
0.044455000000000,0x00,,
0.044639000000000,0x00,,
0.044830000000000,0xFF,,
Variablen:
Code:
#define SPORT_START 0x7E
#define SPORT_HEADER_DATA 0x10
#define SPORT_HEADER_DISCARD 0x00

#define SENSOR_PHYSICAL_ID 0x12 [COLOR="#0000FF"]//==> ergibt mit CRC 0xF2[/COLOR]
#define SENSOR_APPL_ID 0x5100
Anhang anzeigen Linkquality_LogHEX.zip

Der Sensor verhält sich perfekt und wird auch mit anderen SPort Sensoren problemlos zusammenarbeiten.
 
#63
Der Sensor verhält sich perfekt und wird auch mit anderen SPort Sensoren problemlos zusammenarbeiten.
Ob der Sensor "perfekt" arbeitet kann ich nicht beurteilen.
FLVSS, RB10, GPS und Linkquality Sensoren laufen auf jeden Fall gleichzeitig und nach Logfile ohne gegenseitige Beeinflussung.
Lost Frames Meldungen von der RB10 hab ich bei meinen Tests bisher immer nur gleichzeitig mit der Failsafemeldung provozieren können. Ich denke ich werde die Schreibtischtests jetzt erstmal einstellen und die Logfiles vom richtigen Modellbetrieb abwarten.
Ralf
 

Sigimann

Erfahrener Benutzer
#64
Ich begreife nicht, weshalb ihr euch mit veralteter Hardware, die nicht mal ein TXRX-INV kann und Müll-Software die den SPORT zuknallt beschäftigt. Die wird kaum gute Arbeit leisten - ich habs kurz angeschaut und auf die Schnelle nichts gesehen, das auf eine Auswertung eines RX-pollings hinweisen würde. Mit anderen SPORT-Sensoren wird sie mE nicht zusammenarbeiten. Ich seh da nix, was in irgendeiner Weise mit SPORT-Protokoll zu tun hätte.
Hallo headwind, für den Veralteten Arduino hab ich sofort ein Einsteigerset (89 eu) mit Einführung gefunden. Dazu den Link um den passenden Editor zu laden, hat sich auch alles problemlos bei mir Integriert. Ich mag es, wenn etwas funktioniert.
Und den Inverter hat man mir hier Carbo prommt erklärt. Hab mir heute gleich mal drei InverterKabel gelötet.

Sag doch einfach mal wie man dein Programm in den Teensy bekommt, dann schau ich mir mal den Code an.

Sigi

Sigi
 
#65
...... Müll-Software die den SPORT zuknallt beschäftigt. Die wird kaum gute Arbeit leisten - ich habs kurz angeschaut und auf die Schnelle nichts gesehen, das auf eine Auswertung eines RX-pollings hinweisen würde. Mit anderen SPORT-Sensoren wird sie mE nicht zusammenarbeiten. Ich seh da nix, was in irgendeiner Weise mit SPORT-Protokoll zu tun hätte.
Code:
 //Get physical id without CRC bits
  byte physicalID = val & 0x1F;

  //If the second byte is the sensor id it is a request for my sensor
  if(sport_index == 1 && physicalID == SENSOR_PHYSICAL_ID)
  {
      //Stop capturing
      sport_valid = false;
      
      //Needs my data so send it
      sendFrame();
Ich denke, du kapierst einfach nicht, dass das Script aus LQ.ino und SPort.ino besteht.

Wenn ihr was braucht - vergesst die sinnlose Schnäppchenjagd und kauft brauchbare Hardware für die ich programmiere und sagt vor allem mit etwas Gehalt und Präzision was ihr braucht.
Du wolltest dein Script überarbeiten...........

@ Sigimann: Wenn du nach teensy googelst, findest du leicht die entsprechenden Hinweise. Es wird einfach die Arduino IDE erweitert und du kannst dann teensy als board auswählen. Lohnt sich aber für den Modellflug (noch) nicht, es gibt nix, was nicht auch der bewährte und preiswerte Arduino kann.
 
#66
Vielleicht liest Ralf mit und kann mal mit seinem 16 Kanal Decoder prüfen, wie ein Servo an diesen Kanälen angesteuert wird.
Habe meinen 18! Kanal-Dekoder mal von einem L9R Empfänger gespeist.
An diesem werden die nicht benutzten Kanäle ( 13..18 beim L9R bzw. 17/18 bei X4/6/8R ) mit Servomitte ausgegeben.
( scheint aber vom Dekoder abhängig zu sein...)

Die Empfängerauswertung kannst du aber leicht selber testen:
nimm einen X8R-Empfänger, lass deinen Sender nur Kanal 1..6 übertragen und schau was Kanal 7/8 ausgeben...

Oder Binde den Rx auf CH9..16 und schau was die Ausgänge machen wenn nur CH1..8 gesendet werden.

Ralf ( Der diese Tests auch noch nicht gemacht hat...)
 
#67
Ich hätte getestet, aber ich hab nur X4R und XSR rumliegen, alles Größere ist verbaut. Und es ging ja um den SBus, nicht um die PWM-Ausgänge am RX, wobei natürlich die Wahrscheinlichkeit groß ist, dass diese sich genauso verhalten.

Du hast getestet und somit kann man das doch abhaken, danke!
 
#68
Fun to see my code here :) I can read German but cannot write it....

About the S.Port protocol, it is fully compliant and the code is written using the S.Port documentation from FrSsky.
 
#69
Welcome to the show!

Your script works fine, nice work, thank you - i can read it, but cannot write it :D
 

Sigimann

Erfahrener Benutzer
#70
Habe mich jetzt mit dem Arduino System angefreundet und auch das SBusFraming am laufen. im wesentlichen finde ich auch, was bereits in LogKurven gezeigt wurde. Ich werde mich weiter mit Ardu beschäftigen.

Frage: Kann der Nano noch eine weitere Serielle Schnittstell zum PC, damit man hier einen Monitor während des Programmlaufs einrichten kann. Mit SoftwareSerial ?

Ne Frage an Tadango. Zeile 88 bool framelost = buffer[23] & 0x04;

Hier wird mit Hex 04 Bit 2 abgefragt, ich finde jedoch immer die Angabe, dasss Bit 5 = Hex 20 das LostFlag ist.


Sigi
 
#71
Hi Sigi,

I use bit 2 and not bit 5 for frameloss because the data stream is MSB but the serial port is LSB. So bit 0 = 7, 1 = 6 ect. No need to convert from LSB to MSB for only checking one bit :)

You could add another SoftwareSerial for debug and use it to only send data but you have to make the Sport Serial listen (only 1 can listen at the same time).
 
#73
Yes all data (24 bytes) are reversed.

I don't know any debug tools for Arduino that can halt the code and view the variables. I just output what i want to know over a debug serial but that is not very efficient.
 

Sigimann

Erfahrener Benutzer
#74
Hallo Tadango

Hab mir den Arduino MEGA bestellt, der hat ja 3 serielle Schnittstellen, da kann man zum Testen sicher eine Echo Funktion einbauen.

Ansonsten bin ich an einem Log im Flieger auf SD interessiert, kennst du da was mit Arduino?

Sigi

PS; Englisch lesen geht bei mir ganz gut.
 

Norbert

Erfahrener Benutzer
#76
Hallo Tadango,

I like your SBus Monitoring.

One question: Is it possible to invert inside the arduinio ( by software ) the SBus Signal. Then I need no hardware Inverter.

Thanks

Norbert
 
#79
Ein Log der "guten" SBUS-Packets. Die Auswertung erfolgt ähnlich wie bei @Tadango und wird etwa alle 200ms aufgezeichnet. Entfernung war schätzungsweise 300-400 Meter maximal.

hw
 

Anhänge

D

Deleted member 51580

Gast
#80
Hi,

Im Moment mache ich versuche mit der Redundancy Bus, als RX 1 habe ich den S8R, RX 2 ist der XM+ und möchte gerne mal die Lost Frames mit Logen und sichtbar machen, da ich hier etwas Probleme mit meiner Konfiguration habe.

Soweit klappt das auch der Arduino mit dem Sketch von Tadango läuft und übermittelt auch das Datenfeld 5100 und die Empfangsqualität wird schön sichtbar.

Das funktioniert aber nur solange ein RX an der RB angeschlossen ist, sobald ich den XM+ an die RB anschließe steht das Datenfeld 5100 auf 100 und es kommen keine Daten mehr an.

Im ersten Moment sah das so aus als würde Irgendwo eine ID Überschneidung / Doppelbelegung statt finden, also habe ich die SENSOR PHYSICAL ID 0x12 ID19 auf 0x04 und erhalte jetzt ID5 in der Telemetrie.

Das hat leider auch nicht funktioniert, sobald der zweite RX angeschlossen wird ist das Datenfeld 5100 eingefroren.

Hat von euch noch jemand eine Idee, was ich machen könnte damit die Daten auch bei zwei angeschlossenen Empfängern übertragen werden?

Edit:

Bild vom Aufbau:

IMG_1767.jpg
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten