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...
Replies
Kirill, I am also no programming guru - I just picked up this project when the development effort started going a little stale, and its been quite a big learning curve - especially trying to decipher someone else's design decisions.
I checked your pixhawk and there should be a serial4 port you could use for Teensy - the spec for your board says it has 5 serial ports, although I think Ardupilot only supports 4 (and only the first 3 have configurable SRn_ parameters). Usually Telem/serial1 is for 3DR radio, Telem/serial2 is for OSD or some other device, Telem/serial3 is for GPS, and telem/serial4 is spare.
Just for an example - if you connected the teensy to serial4 with both tx/rx lines, then teensy would configure the SR values itself (using the default code configuration). Also, if you removed // from the start of line 148 of Mavlink.ino before writing the teensy sketch, then teensy will send its own dedicated Mavlink heartbeat and should get the messages OK.
Kirill said:
Thanks Paul, that's why I said previously that I'm not a guru for programming :)
It seems that one of my gadgets (OSD or Teensy) need to send heartbeat to make MSG work ? Hmm... I have Serial with modem, Serial with Storm32 on 115200. So there's no place to connect TX from OSD or Teensy :(
But ! I have non usual Pixhawk and have inverted Serial on it for FrSky telemetry. May be I can use it in some way ? I can't understand how it could be because it inverted. But may be you know ? ;)
Regards, Kirill
Paul Atherton said:
Kirill,
I have been checking back through the history of the code and also doing some googling which led me to a very similar issue with a different (OSD) project. In that case the messages would only start when a device on the telemetry port sent a heartbeat - this kind of sounds familiar in your case, where the messages only start when Mission Planner is connected (I.e. when MP sends a heartbeat). In the history of the code it seems that the teensy code at one time would send its own heartbeat message, but this was later written out of the code (by developer @Fnoop) as it caused other mavlink issues. It appears that this could however be the key to getting the status messages to start.
In my own copter config, I have an OSD and Teensy sharing the same telemetry port and have the OSD with both Tx and Rx connected, and Teensy with just its Rx connected, and so its likely that my OSD is sending the heartbeat command which starts the message stream on that telem port. I really need to do some testing on this to double check if that is indeed correct. I am on vacation just now but will be able to check this later next week, and will get back to you.
In the mean time, you could try connecting the Teensy (Tx and Rx) on a dedicated telem port but I suspect that even then the message stream may not start. If you check line 148 of Mavlink.ino, you will see this line commented out. I suspect this line would need to be un-commented (to start the heartbeat, and therefore) in order to get the messages through, so you could possibly try this. As I mentioned though this line was disabled by previous developers on this project because of other Mavlink issues it created, so maybe worth testing, but with the understanding that it could have side-effects.
Cheers, Paul
Kirill said:
Its specifically written for the sensor data produced by the teensy app. You could of course adapt it to work with the standard FrSky sensors provided by Ardupilot directly (with the inverter you mentioned), but not all the sensor data used in the LUA script is made available this way, so you would get a fairly limited solution.
Mirko said:
This LUA script is only for Teensy board or can be used also with a custom cable made with a RS232 TTL + DIODE like this https://goo.gl/y9XCq8 ?
Pity, I have Baud 115200 for Storm32 serial connection. But tomorrow I will try to connect Teensy with RX and TX and see will it solve my problem
Thanks for you help !
Connecting to Telem2 is too easy solution for me :) I have Storm32 on it so I also can't use TX from Teensy...
I suspect that there could be some tricks with Pixhawk parameters, something about Mavlink broadcasting or something about it.
Anyway, thank you again. If I'll found solution for that issue will post it here.
Regards, Kirill
Kirill,
Your wiring looks perfect. Your English perfect too :-)
I'm not sure why you are seeing this issue. Can I perhaps suggest that you try to keep the 3DR modem on Telem1 and move OSD and Teensy over to Telem2 port to see if that helps? (assuming its available).
When I get home from vacation, I will maybe try to reproduce your issue by copying your wiring and component layout to see if I can figure the cause.
Best wishes, Paul
Thanks for your replay, Paul.
I checked everything once more time - wiring, MSG sensor name, MP rates...
Still have the same issue. I understand that it isn't problem of Teensy converter and code. Something wrong on my side but I can't realize what is it :(
To make story short, after powering Pixhawk, in 5-10 sec I got full set of telemetry data displayed on my Taranis (first screen). But second screen still empty. Only after connecting MP it receive data and I can hear audio messages like "Need 3D fix, Check fence". Without MP connection there's no audio for status messages. My OSD also don't show status messages until MP get connected. I noticed, when progress bar of MP connection riches to "SR1" parameters loading, right after that audio and status appear.
Sorry for my english :) Hope you could understand it.
Have you any idea what to try else ?
Regards, Kirill
My wiring: