Serielle Verbindung.Checksummenberechnung unklar.

OP #6720517
Lesenswert?

Hallo zusammen,

ich habe mal wieder ein kleines Anliegen und komme hier seit 2 Tagen 
auch mit recherchieren nicht weiter. Ich habe hier eine China 
Funkfernbedienung für RC Drohnen und das entsprechende Empfängermodul 
rumliegen und wollte hier etwas daraus bauen. Leider ist der Hersteller 
unklar und zu den Modulen gibt es keinerlei Beschreibung. 
Modulbezeichnung (RF297RX-1)
In mühseliger Testarbeit konnte ich folgendes Herausfinden:

DI - Pin Unklar
TX - Daten an Fernbedienung senden (115200 Baud)
RX - Daten von Fernbedienung empfangen (115200 Baud. Hier erhalte ich 
immer 42,54,3C,01,04,01,04,)
IN2 - Pin Unklar
IN1 - PPM Signal der Steuerungen und Taster
+   - +3,3V
-   - GND


Mittlerweile habe ich es jedoch hinbekommen das PPM Signal über einen 
Arduino auszuwerten und so 2 Motoren anzusteuern. Falle es jemand 
weiterhilft .. das PPM Signal liegt an IN1 an.

Das Modul bietet  zudem die Möglichkeit an über eine serielle Verbindung 
Daten zurück zur Fernbedienung zu senden (Spannung/Daten vom GPS 
Modul/Geschwindigkeit und Höhe). Diese Daten konnte ich bereits mal 
mitsniffen und auch mitgesniffte Daten wieder an die Fernbedienung 
zurück senden.

Was mir nun fehlt ist, wie sich die Checksumme zusammensetzt, damit ich 
eigene Werte übertragen kann. Hier habe ich schon sämtliche CRC 
Kalkulatoren getestet, sämtliche Berechnungen angestellt aber bin 
hierbei nie zu einem Ergebnis gekommen. Ich hoffe einer von euch hat 
hierzu die passende Idee wie sich die Checksumme bilden lässt.

Bei der letzten Stelle handelt es sich vermutlich um die Checksumme, die 
vorletzte Stelle steht vermutlich für die Spannung, da 79 in HEX die 121 
-> 12,1V widerspiegeln die angelegt waren.



Das Sniffing hat folgende Ergebnisse geliefert:

15:53:30.184 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FD,FF,00,00,00,79,66,
15:53:30.685 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,4B,
15:53:31.185 -> 
42,54,3E,0F,04,CB,06,40,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,34,
15:53:31.687 -> 
42,54,3E,0F,04,CB,06,40,00,CC,0B,00,F6,FF,FF,FF,00,00,00,79,30,
15:53:32.436 -> 
42,54,3E,0F,04,CB,06,40,00,CC,0B,00,F6,FF,FE,FF,00,00,00,79,30,
15:53:32.937 -> 
42,54,3E,0F,04,CB,06,40,00,CB,0B,00,F6,FF,FE,FF,00,00,00,F9,37,
15:53:33.439 -> 
42,54,3E,0F,04,CB,06,40,00,C3,0B,00,F6,FF,FE,FF,00,00,00,79,3F,
15:53:33.940 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FE,FF,00,00,00,79,48,
15:53:34.441 -> 
42,54,3E,0F,04,CB,06,40,00,C6,0B,00,F6,FF,FE,FF,00,00,00,79,3A,
15:53:34.742 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FE,FF,00,00,00,79,48,
15:53:35.698 -> 
42,A4,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,79,4F,
15:53:36.198 -> 
42,54,3E,0F,04,CB,06,40,00,C4,0B,00,F6,FF,FE,FF,00,00,00,79,38,
15:53:36.698 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FE,FF,00,00,00,79,48,
15:53:37.200 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,5E,FA,
15:53:37.701 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,79,4F,
15:53:37.748 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,79,4F,
15:53:38.952 -> 
42,54,3E,0F,04,CB,06,7F,00,C5,0B,00,F7,FF,FE,FF,00,00,00,F9,47,
15:53:39.453 -> 
42,54,3E,0F,04,CB,06,3F,00,C1,0B,00,F7,FF,FE,FF,00,00,00,79,43,
15:53:39.955 -> 
42,54,3E,0F,04,CB,06,80,00,C2,0B,00,F7,FF,FE,FF,00,00,00,79,3F,
15:53:40.455 -> 
42,54,3E,0F,04,CB,06,80,00,C1,0B,00,F7,FF,FE,FF,00,00,00,79,3C,
15:53:40.810 -> 
42,54,3E,0F,04,CB,06,40,00,C2,0B,00,F7,FF,FE,FF,00,00,00,79,3F,
15:53:41.659 -> 
42,54,3E,0F,04,CB,06,40,00,CB,0B,00,F7,FF,FE,FF,00,00,00,79,36,
15:53:42.160 -> 
42,54,3E,0F,04,CB,06,40,00,CA,0B,00,F7,FF,FE,FF,00,00,00,79,37,
15:53:43.663 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FF,FF,00,00,00,79,46,
15:53:44.917 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:45.418 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FF,FF,00,00,00,79,D0,
15:53:45.920 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FE,FF,00,00,00,79,41,
15:53:46.422 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FE,FF,00,00,00,79,D0,
15:53:46.871 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:47.673 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:48.174 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FE,FF,00,00,00,79,41,
15:53:48.676 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:49.176 -> 
42,54,3E,0F,04,CB,06,3F,00,C3,0B,00,F8,FF,FE,FF,00,00,00,79,4E,
15:53:49.678 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,5E,F4,
15:53:49.878 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FF,FF,00,00,00,79,43,
15:53:50.932 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:51.433 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FE,FF,00,00,00,79,41,
15:53:51.935 -> 
42,54,3E,0F,04,CB,06,3F,00,C7,0B,00,F8,FF,FE,FF,00,00,00,79,4A,
15:53:52.467 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:52.915 -> 
42,54,3E,0F,04,CB,06,3F,00,C3,0B,00,F8,FF,FE,FF,00,00,00,79,4E,
15:53:53.670 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:54.171 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:54.673 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FF,FF,00,00,00,79,D0,
15:53:55.175 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FE,FF,00,00,00,79,D0,
15:53:55.676 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FF,FF,00,00,00,79,43,
15:53:55.977 -> 
42,54,3E,0F,04,9B,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:56.926 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F8,FF,FE,FF,00,00,00,79,46,
15:53:58.930 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F8,FF,FD,FF,00,00,00,79,41,
15:53:59.030 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F7,FF,FD,FF,00,00,00,79,4A,
15:54:00.186 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F7,FF,FD,FF,00,00,00,5E,D3,
15:54:00.687 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,4B,
15:54:01.189 -> 
42,54,3E,1F,04,CB,06,3F,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,4B,
15:54:01.690 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,4B,
15:54:02.038 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FD,FF,00,00,00,79,4B,
15:54:02.940 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,5E,FA,
15:54:03.441 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FE,FF,00,00,00,79,48,
15:54:03.943 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F6,FF,FE,FF,00,00,00,79,48,
15:54:04.444 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F6,FF,FE,FF,00,00,00,79,4F,
15:54:04.946 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F7,FF,FE,FF,00,00,00,F9,4E,
15:54:05.099 -> 
42,54,3E,0F,04,CB,06,3F,00,CB,0B,00,F7,FF,FE,FF,00,00,00,79,49,
15:54:06.201 -> 
42,54,3E,0F,04,CB,06,3F,00,CC,0B,00,F7,FF,FE,FF,00,00,00,5E,FA,
Gast #6721723
Lesenswert?

Hallo,

deine CHK hat irgendwas mit der einfachen XOR-Summe zu tun. Lässt man 
die ersten 3 Zeichen einer Meldung weg dann ist die XOR Summe über die 
restlichen Zeichen (inclusive der vermuteten CHK) in 90% der Fälle 
gleich 0x00.
In den wenigen Fällen in denen es nicht stimmt liegt vielleicht ein 
"sniffing"-Fehler vor ???
1
/*
2
4. 5. 6. .........................................CHK, XOR-Summe
3
0f,04,9b,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=50
4
0f,04,cb,06,3f,00,c1,0b,00,f7,ff,fe,ff,00,00,00,79,43,=00
5
0f,04,cb,06,3f,00,c3,0b,00,f8,ff,fe,ff,00,00,00,79,4e,=00
6
0f,04,cb,06,3f,00,c3,0b,00,f8,ff,fe,ff,00,00,00,79,4e,=00
7
0f,04,cb,06,3f,00,c7,0b,00,f8,ff,fe,ff,00,00,00,79,4a,=00
8
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,4b,=00
9
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,4b,=00
10
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,4b,=00
11
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,4b,=00
12
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fe,ff,00,00,00,79,48,=00
13
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fe,ff,00,00,00,79,48,=00
14
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fe,ff,00,00,00,79,48,=00
15
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fe,ff,00,00,00,79,48,=00
16
0f,04,cb,06,3f,00,cb,0b,00,f6,ff,fe,ff,00,00,00,79,48,=00
17
0f,04,cb,06,3f,00,cb,0b,00,f7,ff,fd,ff,00,00,00,79,4a,=00
18
0f,04,cb,06,3f,00,cb,0b,00,f7,ff,fe,ff,00,00,00,79,49,=00
19
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,5e,f4,=95
20
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
21
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
22
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
23
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
24
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
25
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
26
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
27
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
28
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,fe,ff,00,00,00,79,46,=00
29
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,ff,ff,00,00,00,79,43,=04
30
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,ff,ff,00,00,00,79,43,=04
31
0f,04,cb,06,3f,00,cb,0b,00,f8,ff,ff,ff,00,00,00,79,46,=01
32
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fd,ff,00,00,00,79,66,=2a
33
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fe,ff,00,00,00,5e,fa,=92
34
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fe,ff,00,00,00,5e,fa,=92
35
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fe,ff,00,00,00,79,4f,=00
36
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fe,ff,00,00,00,79,4f,=00
37
0f,04,cb,06,3f,00,cc,0b,00,f6,ff,fe,ff,00,00,00,79,4f,=00
38
0f,04,cb,06,3f,00,cc,0b,00,f7,ff,fd,ff,00,00,00,5e,d3,=b9
39
0f,04,cb,06,3f,00,cc,0b,00,f7,ff,fe,ff,00,00,00,5e,fa,=93
40
0f,04,cb,06,3f,00,cc,0b,00,f7,ff,fe,ff,00,00,00,f9,4e,=80
41
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fd,ff,00,00,00,79,41,=03
42
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fe,ff,00,00,00,79,41,=00
43
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fe,ff,00,00,00,79,41,=00
44
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fe,ff,00,00,00,79,41,=00
45
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fe,ff,00,00,00,79,d0,=91
46
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,fe,ff,00,00,00,79,d0,=91
47
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,ff,ff,00,00,00,79,d0,=90
48
0f,04,cb,06,3f,00,cc,0b,00,f8,ff,ff,ff,00,00,00,79,d0,=90
49
0f,04,cb,06,40,00,c2,0b,00,f7,ff,fe,ff,00,00,00,79,3f,=00
50
0f,04,cb,06,40,00,c3,0b,00,f6,ff,fe,ff,00,00,00,79,3f,=00
51
0f,04,cb,06,40,00,c4,0b,00,f6,ff,fe,ff,00,00,00,79,38,=00
52
0f,04,cb,06,40,00,c6,0b,00,f6,ff,fe,ff,00,00,00,79,3a,=00
53
0f,04,cb,06,40,00,ca,0b,00,f7,ff,fe,ff,00,00,00,79,37,=00
54
0f,04,cb,06,40,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,34,=00
55
0f,04,cb,06,40,00,cb,0b,00,f6,ff,fe,ff,00,00,00,f9,37,=80
56
0f,04,cb,06,40,00,cb,0b,00,f7,ff,fe,ff,00,00,00,79,36,=00
57
0f,04,cb,06,40,00,cc,0b,00,f6,ff,fe,ff,00,00,00,79,30,=00
58
0f,04,cb,06,40,00,cc,0b,00,f6,ff,ff,ff,00,00,00,79,30,=01
59
0f,04,cb,06,7f,00,c5,0b,00,f7,ff,fe,ff,00,00,00,f9,47,=c0
60
0f,04,cb,06,80,00,c1,0b,00,f7,ff,fe,ff,00,00,00,79,3c,=c0
61
0f,04,cb,06,80,00,c2,0b,00,f7,ff,fe,ff,00,00,00,79,3f,=c0
62
1f,04,cb,06,3f,00,cb,0b,00,f6,ff,fd,ff,00,00,00,79,4b,=10 */
Deine Meldungen sind hier sortiert und ohne die ersten 3 Zeichen

Gruss
OP #6722791
Lesenswert?

Tatsache da hast du recht. Die Fernbedienung lässt sich nun korrekt 
steuern. Vielen Dank dafür. Ich frage mich immer wie Ihr auf solche 
Ideen kommt :-)

Hier noch ein paar Daten die ich herausgefunden habe.
Ich gehe davon aus, dass stelle 4-10 die Seriennummer oder so 
widerspiegelt.


  // Stelle 1:   unbekannt, immer 42
  // Stelle 2:   unbekannt, immer 54
  // Stelle 3:   unbekannt, immer 3E
  // Stelle 4:   unbekannt
  // Stelle 5:   unbekannt
  // Stelle 6:   unbekannt
  // Stelle 7:   unbekannt
  // Stelle 8:   unbekannt
  // Stelle 9:   unbekannt
  // Stelle 10:  unbekannt
  // Stelle 11:   Richtung 01 - 0F
  // Stelle 12:   Anzahl Sateliten
  // Stelle 13:   unbekannt
  // Stelle 14:   Höhe (grob)
  // Stelle 15:   unbekannt
  // Stelle 16:   unbekannt
  // Stelle 17:   Distance unten Rechts (fein)
  // Stelle 18:   Distance unten Rechts (grob)
  // Stelle 19:   Geschwindigkeit m/s unten links
  // Stelle 20:   Spannung
  // Stelle 21:   Checksumme



  byte message[21] = {0x42, 0x54, 0x3E, 0x0F, 0x04, 0xcb, 0x06, 0x40, 
0x00, 0x00, 0x07, 0x08, 0x00, 0x05, 0xFE, 0xFF, 0xFF, 0x10, 0x50, 0x79, 
0x00};

  message[20] = message[3] ^ message[4] ^ message[5] ^ message[6] ^ 
message[7] ^ message[8] ^ message[9] ^ message[10] ^ message[11] ^ 
message[12] ^ message[13] ^ message[14] ^ message[15] ^ message[16] ^ 
message[17] ^ message[18] ^ message[19];

  for (int i = 0; i < sizeof(message); i++)
  {
    Serial.print(message[i], HEX);
    Serial.print(" ");
  }

  mySerial.write(message, sizeof(message));

  Serial.println(" ");
Angehängte Dateien:
Gast #6722929
Lesenswert?

1
  const int SIZE = 21;
2

3
  ...
4
  byte message[SIZE] = {0x42, 0x54, 0x3E, 0x0F, 0x04, 0xcb, 0x06, 0x40, 
5
0x00, 0x00, 0x07, 0x08, 0x00, 0x05, 0xFE, 0xFF, 0xFF, 0x10, 0x50, 0x79, 
6
0x00};
7

8
  ...
9

10
  message[SIZE-1] = 0x00;
11
  for (int i = 0; i < SIZE; i++)
12
  {
13
    if (i >= 3) message[SIZE-1] ^= message[i]; 
14

15
    Serial.print(message[i], HEX);
16
    Serial.print(" ");
17
  }
18

19
  mySerial.write(message, SIZE);
20
  Serial.println(" ");

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren