Как сделан LoRa-GPS-трекер на Arduino

У меня в почте, на Youtube и форумах было несколько пожеланий о публикации сведений о LoRa-GPS трекере, который летает в любительских ракетах (моих и коллег). Обычные решения используют GSM канал для передачи местоположения в СМС. Здесь опишу решение имеющее большую автономность — свой радиоканал.

Описан LoRa-GPS трекер, выполненный на платформе Arduino и LoRa модулях E19 от E-byte. На приемной стороне в качестве оконечного устройства используется смартфон/планшет на Android. Конструкция совместима по протоколам радиоканала с конструкцией Дианко Чернева (pinko): настройка модуля LoRa, длина и формат передаваемого пакета.

Общая схема работы GPS-трекера типовая: модуль GPS принимает сигналы навигационных спутников и определяет свои текущие координаты. Полученные данные передаются радиопередатчиком (диапазон 433МГц). Приемник получает пакет данных, извлекает координаты и по последовательному каналу отправляет информацию на оконечное устройство.

Оконечное устройство (смартфон/планшет/компьютер и т.п.) отображает/обрабатывает полученные координаты, сообщая/рисуя на карте местоположение передатчика.

Описание GPS-трекера опубликовано на ucheba33.ru. И занимает аж четыре страницы (части):

Задача передатчика заключается в приеме сигналов со спутников и определении текущих координат (этим занимается специальный модуль GPS), упаковке полученных данных в удобный формат и передаче подготовленного пакета по радиоканалу (этим занимается радиопередатчик модуля LoRa E19-433M20S2). Приемник обязан принять пакет от передатчика по радиоканалу, «вынуть» из пакета данные и удобным способом (у нас это UART-USB, текстовые посылки) передать их на оконечное устройство (планшет, смартфон, компьютер и т.п). В качестве «оконечного устройства» может выступать любой гаджет, способный принять данные по последовательному интерфейсу.

Данные с приемника выводятся через UART-USB, встроенный в плату Arduino NANO. Поэтому наиболее простым/понятным решением для чтения этих данных является «родное» для Arduino приложение для ПК — Arduino IDE. Открываем монитор, выбираем «типовую» скорость 9600 бит/сек и смотрим на экране на поступающую с передатчика LoRa-GPS-трекера информацию о координатах. Аналогичные терминальные программы есть и для других устройств, в т.ч. под Android.

Пример выводимой по UART строки одного принятого пакета:

# 21:12:40; 56; 40.4567; 44; 12.1234; 136; 3.96; 201; -98; 6.3;

где: # — начало строки, время (часы:минуты:секунды), широта (градусы, минуты с долями), долгота (градусы, минуты с долями), высота (метры), напряжение питания передатчика (вольты), номер переданного пакета, уровень сигнала и SNR.

Однако более удобно иметь специализированное приложение, которое примет данные, обработает их и покажет в удобном виде. В четвертой части описан пример такого приложения.