Hi all,

I just bought an FrSky Taranis for my quad copter and needed to get the Mavlink data up on the Taranis LCD telemetry display. So here is my solution using a Teensy3.1 as a converter between MavLink and the S.Port on FrSky X8R.

See attached file below...

Views: 308674

Attachments:

Reply to This

Replies to This Discussion

You need:

GCS_MAVLink in libraries:

http://svn.mbr89.de/listing.php?repname=arduino&path=%2Flibrari...

MavLink_FrSkySPort:

http://svn.mbr89.de/listing.php?repname=arduino&path=%2Fexample...

I'm using Arduino IDE 1.0.5-r2

@Chris Song Did you tried my port?

I tried your code. But it's the same result that the degrees and minutes are zero. As you know just replace Serial1 from Teensy code and comments the C1,C2,C3 UARTs. I got the correct sensor values except GPS's latitude and longitude values that the degrees and minutes are zero. Do you have correct value of GPS?

OK : with this IDE no problem. So take care of the beta version of arduino IDE !

Thanks a lot, I will test as soon as I receive my goods from China !

FrSkySPort.ino: In function 'void FrSkySPort_Process()':
FrSkySPort.ino:33: warning: unused variable 'temp'
FrSkySPort.ino:34: warning: unused variable 'offset'
FrSkySPort.ino: In function 'void FrSkySPort_ProcessSensorRequest(uint8_t)':
FrSkySPort.ino:66: warning: deprecated conversion from string constant to 'char*'
FrSkySPort.ino:115: warning: deprecated conversion from string constant to 'char*'
FrSkySPort.ino:133: warning: deprecated conversion from string constant to 'char*'
FrSkySPort.ino:162: warning: deprecated conversion from string constant to 'char*'
FrSkySPort.ino:209: warning: deprecated conversion from string constant to 'char*'

C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:59: warning: only initialized variables can be placed into program memory area

C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:98: warning: comparison between signed and unsigned integer expressions
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void __vector_18()':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:127: warning: unused variable 'c'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:368: warning: unused variable 'current_config'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:467: warning: comparison between signed and unsigned integer expressions

C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Print.cpp:44: warning: '__progmem__' attribute ignored

C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Tone.cpp:119: warning: only initialized variables can be placed into program memory area

I don't understand that you said. It's compiling warning and it's not related to GPS values. There is no GPS data in your captured image also.

It's compiling warning and it's not related to GPS values

So you think the same about it.^^

I thought this was just what I needed!

I followed the instructions on this post and the description listed on http://copter.ardupilot.com .

And initially thought great! it works fantastic.

But after checking the data, the GPS is wrong, at first I assumed I was getting bad data from gps/compass module, however checking the logs from ardupilot, the GPS is spot on in that, but the data I'm getting for taranis is 3-4 degrees out.

So I took the advice I've read about, updated the firmware etc, re-downloaded the teensy software making sure to check its all the right versions etc. used the latests FrSkySPort 1.3 software.

Still the same...

I don't get it, if the data on the ArduPilot is correct, why is teensy/taranis changing something?

The coordinates I'm getting aren't far out on a global scale, but too far out to be usable..

Anyone else from the Midlands, England got this working?

Any more advice on what to try?

That's strange. I'm in the N/E quadrant, but the numbers I get is exactly the same in my Taranis as it's reported by Mission Planner (after a manual conversion from degrees in Mission planner to degrees and minutes in Taranis).

oh, well maybe thats my problem, maybe I don't understand the format.

I have tried researching a bit regards different coords but I wasn't able to get anything that matched up.

Can you tell me how to do the conversion , or point me in the right direction?

thanks very much.

I don't know the correct terminology but basically the coordinates are expressed in degrees. This is what you see in mission planner. The coordinates are expressed as degrees with decimal points.

You can also use minutes and seconds to express the fraction part of the coordinate. 

This is when the coordinates are written as 63º 10' 23'' N

60 minutes equals 1 degree, and 60 seconds equals 1 minute. 

To convert between mission planer (degrees) and Taranis (degrees and minutes) you take the fraction part of the degrees and multiply it by 60 to get minutes:

Mission planner: 63,189754

Taranis: 63º 11.38524'

Google wants (I think) seconds: 63º 11' 23.1144''

Reply to Discussion

RSS

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service