It works GREAT on the UNO with the TinyGPS library but I cannot get it to work with the Mini. I've tried everything but when I run the test_with_gps_device demo that comes with the TinyGPS library I never get any real values, just the *****'s. I get a lock and I know the unit work because the simple test works on both Arduinos and the TinyGPS test works on the Uno. I've even done as folks suggested in the bottom of the thread where they change the SS_MAX_RX_BUFF value in SoftSerial.h to 256 as suggested in one of the thread responses but still no dice.
I don't have that combo but the link to the gps in your post indicates that the baud rate is 57600. If that is correct then it may be too fast for the pro mini, particularly if its the 8MHz version.
How do I know what speed my mini is?
From the IDE, click on Tools>Boards, your are running at 16MHz if your selected board is "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328"
The Pro Mini uses a ceramic resonator which is not as precise as the quartz crystal in the Uno and that may be a reason that SoftwareSerial can't cope with the baud rate. Can you use the hardware serial (on pins 0 and 1) for the GPS?
mem:
Can you use the hardware serial (on pins 0 and 1) for the GPS?
How does one do this? I have this same GPS unit. If I connect it to the hardware serial and then just upload a blank sketch and start the serial monitor then I see the GPS messages being spit out. I tried a sketch which opens the hardware serial, reads the GPS and writes it to an SD (without starting the serial monitor) and it doesn't seem to write any data.
There must be a way to read the GPS through the hardware serial (and then do something with this data) but I haven't figured it out yet. Seems like if I open the serial port [ I.E. Serial.begin(57600); ] then it connects to the host computer. And of course if I don't open the serial port then I don't see how I can get GPS data.
void setup() {
Serial.begin(57600); // gps TX,RX on 0,1
}
void loop() {
if (Serial.available()) {
Serial.print(Serial.read());
}
}
except that it doesn't. If I hold in the reset button -- so that presumably the microcontroller isn't doing anything -- then I see the NMEA messages come out. As soon as I release the reset button then nothing is printed anymore, except sometimes I see one more sentence.
However, the following code does work,
#include <SoftwareSerial.h>
SoftwareSerial gps(3, 2); // gps TX,RX on 2,3
void setup() {
Serial.begin(57600); // serial monitor
gps.begin(57600); // serial to GPS
}
void loop() {
gps.listen(); // doesn't seem to matter if this is here or not
if (gps.available()) Serial.print((char)gps.read());
if (Serial.available()) gps.print((char)Serial.read());
}