MavLink & Frsky Telemetrie (für APM & MPNG)

oefchen

Erfahrener Benutzer
Toll Reddi ! da postet der auch noch nen Pic ! :D ;) ...geiles Platinchen !
Und die Codeschnipsel hast einfach gemischt ?

:D Stellen sich mir doch direkt zwei Fragen...kann der tennsy des nicht auch und kommt man denn iwie an deine Mischerei ? ;)

Grüsse vom Frank
 
Naja, ist handgelötet - sieht man. Meine Versuche mit Lötpaste waren mangels Lochlmaske und richtigem Ofen nicht so berauschend. ;-)

Als Basis habe ich diesen Sketch genommen https://github.com/rotcehdnih/Mavlink2Frsky - er liest die Mavlink-Daten aus und gibt sie an den sPort weiter. Allerdings habe ich ihn angepasst, damit er statt auf dem Teensy auch auf dem Arduino läuft. Ob die Daten alle korrekt sind, weiß ich nicht. Zwischendurch war meine Pixhawk kaputt gegangen und mit der Taranis bin ich auch noch nicht sooo firm. Also Software Alpha, aber es gibt ja etliche Sketche, die Mavlink zu sPort konvertieren für den Arduino.

Die LED Geschichte ist ja nur noch ein analogWrite()-Befehl. An den 6 PWM-Ausgängen (Arduino PIN 3, 5, 6, 9, 10, 11) hängt jeweils ein IRLML2502 N-Mosfet (Bauteil: http://www.reichelt.de/IRLML-2502/3/index.html?&ACTION=3&LA=446&ARTICLE=108737 - 20V?? / 4,2A??). Über ein 5V Stepdown gehe ich damit auf die Platine (Mosfet-Leitungen), wo Star-LEDs (3V / 0,7A / 3W) angesteuert werden.

Letztlich ist es fast wie ein jd-io-board. Kernunterschied ist eben, dass ich kein ULN mit 8 Ausgängen a 500mA habe (wobei man max eh nur 2,5A nutzen kann - mit dem ULN hatte ich den Versuch davor gemacht), sondern nur 6, aber dafür einzelne N-Mosfets. Achja, neben dem sPort-Ausgang, habe ich noch ein zweiten "Servokabel-Anschluss" (mit RCIN bezeichnet). Falls man doch noch eine Idee für Addons hat, wofür man ein Aus-/Eingang benötigt. Natürlich kann man den Digital-PIN auch als Ausgang nutzen.

Mangels Zeit komme ich nicht wirklich weiter mit der Software... :-/

Final zu sagen: Die Platine kann via Arduino als Arduino mini pro 16Mhz/5V (Atmega328P-AU) geflasht werden. Arduino-Bootloader ist natürlich drauf. Wer eine haben will, darf mir gerne PN schreiben. Die Stückzahl ist begrenzt - ich vertreibe diese ja nicht gewerblich, will kein ärger hier im Forum haben und fertige sie von Hand... ;-) Die Maße sind 2,5 * 5,5cm bei ca. 10g (geschätzt).

Noch 3 Videos (YouTube-Ccdes: obLeJn0mcUE, DUK9sqgL5fM und fhHa4Gf1tjA - warum auch immer wird nur das Eine eingebunden): https://www.youtube.com/watch?v=obLeJn0mcUE und https://www.youtube.com/watch?v=DUK9sqgL5fM und https://www.youtube.com/watch?v=fhHa4Gf1tjA
VG
 
Zuletzt bearbeitet:

oefchen

Erfahrener Benutzer
Hmm...verdammt...ich muss mich unbedingt da reinlesen ...
Ich hätt ja gern die RGB´s damit angesteuert....Strömlinge würden ja extra bereit gestellt werden. Und Lösungen die Daten in die Stripes zu schicken gibts ja. Vlt probier ich mal rum....iwann ;)

Aber keine Frage...coole Lösung !!
 
Naja, Du könntest theoretisch 2 RGB-Stripes nutzen, wenn Sie eine gemeinsame Anode (+) haben, oder eben Stripes mit dem W2812-Chip. Deshalb hatte ich ja auch den Versuch mit zwei ULN2803 (16 Ausgänge), aber auf Grund einige Probleme habe ich dann zu den Mosfets umgeschwenkt. Allerdings beim w2812-Chip würde ich keinen Aufwand mit Mosfets machen, sondern nur einen Standard-China-Arduino...
 
Hallo,
ich habe nun auch das Teensy 3.1 soweit laufen, dass die Telmetrie-Werte der APM auf meiner Taranis angezeigt werden.
Allerdings habe ich den Seiteneffekt dass nun die Werte des FCS40A Stromsensors (Smart Port) auf dem Telemetriedisplay der Taranis zwischen Null und dem korrekten Wert wechseln und das im Sekundentakt.

Stecke ich das Teensy aus, ist der Effekt weg und alles ist gut.
Weiss vielleicht jemand woran das liegt?

Gruß, Alex
 
Die Taranis zeigt nacheinander den Wert vom FCS40 und dem Stromsensor des APM an.
Wenn kein APM-Stromsensor vorhanden ist, muss dieser in der Teensy-Softw. ausgeschaltet werden.
 

wolke

Neuer Benutzer
jep, der FCS40 sendet FAS was auch der teensy sendet. du kannst das in der teensy software abschalten. allerdings würde dann auch die spannung nicht mehr angezeigt werden. deswegen kannst du als workaround diese zeile,
FrSkySPort_SendPackage(FR_ID_CURRENT, sendValueFASCurrent / 10);
bei mir zeile 216, in der FrSkySPort.ino kommentieren. dann sollte es gehen.

lg
wolke
 
Jo, klappt nun.
Ich habe die send-Zeile für VFAS auskommentiert.
Vielen Dank für eure Hilfe.
Feine Sache das Ganze, bin restlos begeistert.:D

Kann man das Teensy eigentlich parallel mit dem MiniOSD betreiben?
Wenn ja wie, einfache parallel an die APM Telemetrie hängen?
Wäre ja geil, wenn man beim FPV dennoch die Telemetrie auf der Tarannis hätte.

Gruß,ALex
 

DripleX

Erfahrener Benutzer
Ich nehme mal an, dass dies möglich ist.
Ich übertrage gleichzeitig die Telemetrie über ein 3DR Telemetry Modul clone.

Siehe Anschlussbelegung:
Ich habe zwar ein Teensy 3.1 und ein 3DR-Telemetrie Clone, aber ich habe es so wie du beschrieben angeschlossen und beides funktioniert gleichzeitig.

Bei mir ist es folgendermaßen angeschlossen:
APM -> Teensy:
GND -> GND
TX -> RX

APM -> Telemetrie:
GND -> GND
5V -> 5V
TX -> RX
RX -> TX
 
Hallo,
brauche Hilfe von jemandem der in Arduino fit ist.
Ich habe einen APM 2.6 via Mavlink to FrSky D-Series Sketch erweitert um eine RPM Messung via Hall Sensor.
Jetzt habe ich den RPM-Wert und kann ihn nicht anzeigen, weil ich nicht weiß, wo ich ihn gegen den "throttle" Wert austauschen kann. Aus dem APM kommt der throttle Wert als engineSpeed. Mein erfasster Wert heißt rpma, weil der Wert über 5 Messungen gemittelt wird.
Der "RPM" wird ja via telemetrie übertragen und kann z.B. in der Taranis angezeigt werden.
Ich arbeite mit Arduino 1.0.3, weil der Sketch mit der aktuellen Version Fehler macht.

Anbei mein Sketch: Anhang anzeigen 123316

Der Sketch darf natürlich von Interessierten weiterverwendet werden.

Viele Grüße

Armin
 
Zuletzt bearbeitet:
Hallo

Ich kann das Projekt nicht kompelieren.

Diese Schritte habe ich unternommen:
Software von hier http://code.google.com/p/arducodes/downloads/list
runtergeladen.
Die Libs müssen ins Arduino Libraries-Verzeichnis kopiert werden.
Dann das jD_IOBoard_FrSkyMAVLink compiliert und auf den Arduino geladen.

Das ist meine Arduino Fehlermeldung. Gibt es ein getestetes funktionierendes Projekt?

Arduino: 1.6.0 (Windows Vista), Platine: "Arduino Nano, ATmega328"

In file included from C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/BetterStream.h:16:0,
from C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/FastSerial.h:56,
from jD_IOBoard_FrSkyMAVLink.ino:86:
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'int strcasecmp_P(const char*, const prog_char_t*)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:108:38: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
return strcasecmp_P(str1, (const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:108:38: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:108:32: error: expected primary-expression before 'const'
return strcasecmp_P(str1, (const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:108:32: error: expected ')' before 'const'
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'int strcmp_P(const char*, const prog_char_t*)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:113:34: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
return strcmp_P(str1, (const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:113:34: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:113:28: error: expected primary-expression before 'const'
return strcmp_P(str1, (const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:113:28: error: expected ')' before 'const'
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'size_t strlen_P(const prog_char_t*)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:118:28: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
return strlen_P((const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:118:28: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:118:22: error: expected primary-expression before 'const'
return strlen_P((const prog_char *)pstr);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:118:22: error: expected ')' before 'const'
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'void* memcpy_P(void*, const prog_char_t*, size_t)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:123:34: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
return memcpy_P(dest, (const prog_char *)src, n);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:123:34: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:123:28: error: expected primary-expression before 'const'
return memcpy_P(dest, (const prog_char *)src, n);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:123:28: error: expected ')' before 'const'
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'char* strncpy_P(char*, const prog_char_t*, size_t)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:148:37: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
return strncpy_P(buffer, (const prog_char *)pstr, buffer_size);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:148:37: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:148:31: error: expected primary-expression before 'const'
return strncpy_P(buffer, (const prog_char *)pstr, buffer_size);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:148:31: error: expected ')' before 'const'
In file included from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/WString.h:29:0,
from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Print.h:26,
from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26,
from C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/BetterStream.h:14,
from C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/FastSerial.h:56,
from jD_IOBoard_FrSkyMAVLink.ino:86:
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h: In function 'uintptr_t pgm_read_pointer(const void*)':
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:47: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
u.a = pgm_read_byte(i + (const prog_char *)s);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:47: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:41: error: expected primary-expression before 'const'
u.a = pgm_read_byte(i + (const prog_char *)s);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:41: error: expected ')' before 'const'
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:22: error: expected ')' before ';' token
u.a = pgm_read_byte(i + (const prog_char *)s);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/../AP_Common/AP_Common.h:165:22: error: expected ')' before ';' token
In file included from C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/FastSerial.h:56:0,
from jD_IOBoard_FrSkyMAVLink.ino:86:
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/BetterStream.h: At global scope:
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/BetterStream.h:28:41: error: 'prog_char' does not name a type
void _printf_P(const prog_char *, ...);

^
C:\Users\Alex.Sworn\Documents\Arduino\libraries\FastSerial/BetterStream.h:28:51: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
void _printf_P(const prog_char *, ...);

^
Fehler beim Kompilieren.

Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen
 
Zuletzt bearbeitet:
@Alex die jd board Sachen funktionieren bei mir auch nicht richtig. Aber lad dir mal Arduino 1.0.3 oder 1.0.4 runter. Dann hast du garantiert weniger Fehler. Bei mir in meinem Sketch siehe #495 kann ich auch nicht mit der aktuellen 1.0.6 kompilieren.

Edit: Ich habe gerade festgestellt, wenn man eine für das Projekt falsche Libraries im Arduinoverzeichnis hat, dann kann man ein Projekt plötzlich nicht mehr kompilieren.

Gruß
Armin
 
Zuletzt bearbeitet:
Erst mal Danke für die Antwort.

Ich habe heute alle Arduino Versionen getestet. Alle neu Installiert. Ohne andere libraries. ich habe alle Möglichen Projekte getestet. von Mavlink to fryky / Hott projekte / OSD Projekte. Alles ohne Erfolg.

Ich kann auch nicht einfache Sachen einbinden wie:
http://www.qgroundcontrol.org/dev/mavlink_arduino_integration_tutorial
Keine Funktion.

Preparation Steps
1) Unpack this to your sketchbook: http://aeroquad.com/attachment.php?attachmentid=2246&d=1294443856
OK erledigt. Ich habe hier die Ordner FastSerial und mavlink

2) Then update it with this: http://github.com/mavlink/mavlink
Was wird hier gemeint??? Ich habe da keine gleiche Ordnerstrucktue etc. Was soll hier gemacht werden?

3) Check that you have mavlink.h in /mavlink/include/ instead in / mavlink/include/ardupilotmega/, you can delete ardupliotmega directory, we should not depend on that implementation any more.
Ich habe die Datei in:
Documents\Arduino\libraries\mavlink\include\mavlink.h

4) Check that your sketcbook is where you unpacked everything (File- Preferences→Sketchbook location)
Ist auf dem Order: \Documents\Arduino

5) Compile the /example/ArduinoMAVLink/ArduinoMAVLink.pde and connect to QGroundControl
Fehler!
 
Zuletzt bearbeitet:
Hi,
dein Projekt unter 1) kann ich mit meiner Version 1.0.3 compilieren.
Unter 2) das scheint mir ein C Programm zu sein, wozu man einen C-Compiler benötigt. Siehe README.md im Ordner \mavlink-master:
### Requirements ###
* Python 2.7+
* Tkinter (if GUI functionality is desired)
Sorry, da kenne ich mich gar nicht aus.

Gruß

Armin
 

Terry

Erfahrener Benutzer
So, nun Funktioniert es endlich :) Einfach die Libraries vom FrSky/Mavlink.zip in den Libraries Ordner von Arduino kopieren, richtgen COM-Port / Teensy 3.1 wählen, kompilen und Uploaden. Habe voher zu kompliziert gedacht und dadurch fehler eingebaut.

0. Die Verbindung cutten zwischen VUSB und Vin am Teensy (Achtung, bei Trennen der Verbindung wird das Teensy nicht über den USB bestromt, sondern über den Empfänger.)
1. Arduino Installieren http://arduino.googlecode.com/files/arduino-1.0.5-r2-windows.exe
2. Teensyduino Instalieren nach der Anleitung http://www.pjrc.com/teensy/td_download.html
3. MavLink_FrSkySPort_1.2.zip laden und Entpacken
4. Libraries Ordner (AP_HAL und GCS_Mavlink) in den Libraries Ordner von Arduino kopieren
5. MavLink_FrSkySPort in Arduino öffnen, Kompilen, und auf Teensy 3.1 Uploaden
6. Ganz Wichtig: Taranis im Telemetrie Menü einstellen, und Freuen das alles Funktioniert :)

Grüße

Carsten
Hallo Jungs
Ich hab mich genau nach obiger Anleitung gehalten. Ich kriege das Teenys leider nicht kompiliert :( Sieht einer von Euch Spezies anhand unten stehender Fehlermeldung, wo ich den Fehler mache?
Vielen Dank.

Arduino: 1.6.3 (Windows 8.1), TD: 1.22, Board: "Teensy 3.1, Serial, 96 MHz optimized (overclock), German Swiss"

C:\Program Files\Arduino/hardware/tools/arm/bin/arm-none-eabi-g++ -c -O -g -Wall -ffunction-sections -fdata-sections -MMD -nostdlib -fno-exceptions -felide-constructors -std=gnu++0x -fno-rtti -mthumb -mcpu=cortex-m4 -D__MK20DX256__ -DTEENSYDUINO=122 -DARDUINO=10603 -DF_CPU=96000000 -DARDUINO_ARCH_AVR -DUSB_SERIAL -DLAYOUT_GERMAN_SWISS -IC:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3 C:\Users\Mario\AppData\Local\Temp\build2236985991247407231.tmp\MavLink_FrSkySPort.cpp -o C:\Users\Mario\AppData\Local\Temp\build2236985991247407231.tmp\MavLink_FrSkySPort.cpp.o

MavLink_FrSkySPort.ino:47:25: fatal error: GCS_MAVLink.h: No such file or directory
compilation terminated.
Error compiling.
 
FPV1

Banggood

Oben Unten