
#ARDUINO PRO MINI SOFTWARE SERIAL SERIAL#
On receipt of this line feed character a carriage return is sent to the Serial Monitor so that the NMEA sentences, in HEX, should all appear on separate lines. The program also tests for a line feed character (0x0A) which the GPS sends at the end of the its output of each NMEA sentence. This results in two characters being printed to serial monitor, for every one received from the GPS. The program reads a character from the GPS then prints it to the Serial monitor as HEX. I eventually came up with a simple program that demonstrates the issue.

Again there was no problem at all with NeoSWSerial, no timeouts, no problems. The Arduino program was however managing to miss these replies.

I started monitoring the output from the GPS (during configuration) and after a lot of checking, I could see that the GPS was getting the configuration commands and was actually sending out the correct replies and acknowledgements. no apparent replies from the GPS to the configuration commands. I changed the GPS configuration routines to make them more robust, but I was still getting timeouts, i.e. The first step however was to get FSK RTTY working on the new SX127X part of the library, so one again I faced the problem of using SoftWareSerial and confuring the GPS relaibly. Over that temperature range the HAB tracker transmitter might drift 2000hz or more in frequency whilst the SX126X drifts around 200hz, making decoding FSK RTTY very much easier. That a high altitude balloon tracker would be expected to work from maybe +25C to -25C (or lower) did make the drift problem of the RTTY worse and more of a challenge to receive.
#ARDUINO PRO MINI SOFTWARE SERIAL MANUAL#
This means that decoding the RTTY on a receiver required a lot of manual intervention as there was a need to constantly re-tune the receiver. Mostly the SX127X devices manage OK without a TCXO but when sending FSK RTTY for instance there can be significant frequency drift in the output signal. The use of the TCXO makes the LoRa® device much more frequency stable than the older SX127X devices.

The SX12XX library supports the SX1262 and SX1268 LoRa® devices which use temperature compensated crystal oscillators (TCXO). I recently started converting the original HAB tracking application to run on my recent SX12XX Library which you can see here “this library is more reliable at GPS init than software serial” The SX12XX Library I even added a comment about NeoSWSerial to the HAB tracker Arduino sketch These timeouts occurred with the standard SoftwareSerial.h library but not with the NeoSWSerial.h library that you can get from here I noticed then that occasionally the reply from the GPS (containing its stored configuration settings) was being missed, there was a timeout. I amended the program to show (on the Serial Monitor) the configuration commands being sent to the GPS and then polled the GPS to report its what should be new configuration settings. I noticed that occasionally the configuration of the GPS was failing.

Some years back I wrote a high altitude balloon (HAB) tracking application and the tracker transmitter need to configure the GPS for high altitude use, the UBLOX GPSs stop working above 9,000M otherwise. To use a serial device such as a GPS on a Pro Mini then requires the use of the SoftwareSerial library. The Arduino Pro Minis for instance use the ATmega328p processor which has only one hardware serial port but that is normally reserved for downloading programs and for the Serial Monitor output. In some circumstances you can loose characters, which is a problem when reading a GPS. Software serial is an Arduino library that you can use for serial devices such as GPSs with just 2 plain digital pins, no hardware serial port is needed.
