I’m trying to connect a Arduino Pro 3.3v with a Venus GPS . I’ve got the GPS module configure correctly, and when I hook it up directly to the serial port (via an FTDI converter) it works great. So I hooked it up to the Arduino and wrote a simple test program, but its not reading correctly.
The first program I wrote was with SoftwareSerial, but the char read is always garbage. I would almost guess that it was the wrong baud rate, except I verified it was 38400 with the FTDI to the serial port.
SoftwareSerial only works effectively at baud rates 9600bps and below according to that page. Try using the venus software to drop the baud rate to 9600 and see if that works better for you.
So I tried something else tonight. I wired the UART interface from the Venus GPS to the hardware serial interface on Arduino, and then wired the Rx/Tx lines on the FTDI to pins 2 & 3. This works, but I’d much rather do it the other way.
#include <NewSoftSerial.h>
int rxPin = 2;
int txPin = 3;
NewSoftSerial logSerial = NewSoftSerial(rxPin, txPin);
void setup()
{
Serial.begin(38400);
logSerial.begin(9600);
}
void loop()
{
char c = Serial.read();
logSerial.print(c);
}
Oh, you didn’t drop the baud rate yet on the venus. For 8Mhz arduinos (like your 3.3v arduino pro), try at a MAX a baud rate of 28800 with newsoftserial.
So a bit of an update. When I originally configured the Venus with the Skytraq GPS Viewer software, I set the update rate to 10Hz and the baud rate was automatically moved to 38400. Which agrees with what the white papers say. However if you configure the NMEA messages to only send GPRMC messages, you can then drop the baud rate to 9600, but still keep the 10Hz update rate.
So that part of my project is working great now. However, now I’m having problems logging the data to a micro SD card. Check out my other thread for details on that: