I have a Pixhawk system with all the standard 3DR peripherals (telemetry radio, GPS). I need to replace the 3DR GPS with another GPS unit so that I can conduct some tests with higher accuracy. I have a Trimble RTK unit and others at work that I want to try. I have no problem setting these up for the desired output so that is not a concern. I really just need to understand the Pixhawk/APM:Rover side better.
I've tried to find information about the configuration of the GPS port, but it is very sparse. Everything seems to try to push the 3DR modules (which I already have so I'm not cutting into their profits). The most information I have found has been on the Pixhawk webpage (https://pixhawk.org/modules/pixhawk) which let me know that the port is 3.3 V. But, there is no other information. I know it is possible to use other GPS systems. I can see discussion on the developer board about support for NMEA strings and custom RTK GPS modules.
Specifically, I'd like to know:
1. What protocol is used for the GPS TX/RX lines?
2. If it is UART, what baud rate is expected? If baud is configurable, where is it configured?
3. Do I need to change an APM:Rover parameter? I have found GPStype in the list, but NMEA is the only one I readily know how to setup. Are the others special for certain parts or are any generic protocols that I just didn't recognize?
4. What NMEA strings can it interpret and how fast can it handle them?
Thanks for any help anyone can provide.
Replies
Hi,
I am also trying to connect a trimble GPS to the pixhawk and not getting any response. My version of the trimble, BD982 has a 3.3V TTL output that outputs a 3.3V signal. Thus, I figured that level shifting should not be necessary. I have connected the ground, TX and RX to the pixhawk, but no GPS signal can be seen in the console. From reading the comments above, it seems that the software will be able to handle the signal automatically since I am outputting a NMEA GGA signal at 115200 baud rate. I also have connected all of the grounds together.
Although it says that the code will find the gps type automatically, is it possible that the ardupilot code cannot find the GPS type??
Thanks,
Hiroshi Fujii
It worked great for me on auto. I don't have it set up now, but it seemed like I did have to tell it to expect GPS input on the port I used (if it wasn't the standard GPS one).
I wish I could help more, but I didn't have that problem.
Thanks for both of your replies.
I feel that the problem could lie in the fact that I am not level shifting the signals. My reasoning behind not level shifting the signal is that the documentation mentions that the output is TTL level with flow control and the signal is between 0-3.3v. So the questions I would like to ask is:
1. Is there any reason that I should have a device such as the pololu board between the GPS and the pixhawk even when the voltage is already where it is desired?
2. Could the presence of flow control be a cause for error?
3. COM2, the com port i am connecting the pixhawk to, also has other pins for serial communication such as "clear to send" and "request to send". Since i am only using the RX/TX from the COM port, could that potentially create a problem?
sorry for the many questions
2. I don't know what flow control means but it's possible it has to do with the rts, cts??
3. Have you tried swapping the rx tx wires? That's solved my issues a couple times.
I just tested all the voltages and the signal was indeed 3.3V. And yes, after some googling I figured out that RTS and CTS was part of flow control. However I did disable flow control on the GPS side so it should not matter rather I have those pin plugged. I also tried switching the RX and TX but no luck.
Also, is the CAN2 TX/RX something we have to hook up??
Don't try CAN. That is completely different.
I pulled the specification sheet for the BD982 (http://www.trimble.com/OEM_ReceiverHelp/v4.91/en/default.html#Elec_...). COM 2 is at 3.3V TTL.
There are a couple of possibilities I can think of:
1. Make sure the signal is not inverted. Many years ago, it was common for embedded electronics to fake an RS-232 signal with TTL signals because everyone was using the same techniques to make the systems cheaper. GND-> -12 and 5V to 12V. This was called inverted mode. It doesn't work with systems expecting correct levels.
2. Make sure COM2 is activated for the GGA message. My Trimble unit allowed different messages on each COM port and each one had to be configured separately.
It seems that the signal was not inverted!! Messing with the baud fixed the problem! Although for me when I did auto the GPS setting did not work very well. I changed the GPS setting to NMEA and that was better.
Great! Glad to hear that it worked.
Do you know which NMEA sentence types your gps outputs and at what rate? If you can try changing your baud rate to 57600, and output gga,vtg,and rmc all at 5hz. If that doesn't work try switching the wires again after you change those settings and then if it still doesn't work you will need help from someone who knows more than me.
Thank you for your help, it ended up working when i changed the baud rate and made it 5hz.