Сделал свой трекер по мотивам
Отличие - код написал сам, немного сырой, требуется доработка, но рабочий в целом.
Хорошо бы добавить дополнительную обработку ошибок и учесть регистрацию в сети в роуминге (отличается
ответ на AT+CREG?)
Для работы с GPS модулем используется библиотека TinyGPS++, она позволяет
из последовательности NMEA "вырезать" нужные для отправки на апрс сервер элементы (координаты,
количество спутников, время и так далее).
По последовательностям NMEA дополнительная информация
http://aprs.gids.nl/nmea/Модули бывают с разными заводскими настройками скорости обмена, проверяйте отделным скетчем или родным
софтом, я столнулся с тем, что в некоторых модулях uBlox neo6m не сохраняется скорость, выставляемая при помощи родного софта
uBlox
Отправляемый на APRS-IS сервер пакет представляет из себя строку определенного формата, смотрите в тексте
скетча. Окончание передачи текста обязательно завершается ascii кодом 0x1A (26) (Ctrl-z). Насколько я понимаю, при отправке окончания
текста, по идее, не нужно указывать количество отправляемых байт.
Базовые настройки для подключения смотрим тут
http://aprs.cqham.ru:14501/ Все команды по подключению GSM модуля и отправки данных на сервер APRS-IS при отладке (или для самообразования) можно выполнить
через putty или другой терминал (учтите, что не все они поддерживают передачу специальных символов типа 0x1A (26))
Монитор порта в среде arduino IDE не поддерживает, я пользовался программой CoolTerm.
В скетче используется 2 виртуальных сериал порта и один реальный (подключив к компу можно посмотреть лог при отладке)
Столкнулся с неприятной особенность библиотеки SoftwareSerial, что при 2х и более софтовых сериал портах
при работе с ними надо явно переключаться на тот, с которого получаем данные (например: neo6m.listen()
GPRS модуль использовал SIM800L, работает неплохо, есть особенности по питанию (я запитываю от отдельного
преобразователя DC-DC напряжением 4В)
Данные о позиции отправляются при изменении местоположения раз в 2 минуты.
Скетч присоединил: