Тест навигации в модуле nRF9160
Для одного из проектов надо было подобрать модуль с поддержкой LTE-NB, но т.к. проект планировался не только на Россию, то нужна была поддержка как можно бОльшего количества бэндов для свободного перемещения в пространстве и упрощения ВОМа. Пока решил потестить nRF9160 от Nordic-а.
В продолжение предыдущей статьи про NB-IoT модем nRF9160 от Nrordic Semiconductor.
На модуль nRF9160 я наткнулся еще в конце 2018 года, но тогда он только-только появился и кроме анонсов и каких-то рекламных обещаний ничего не было известно. Тут недавно подвернулся один проектик, где по ТЗ надо поставить модем с поддержкой LTE-NB (+ желательно, Cat.M, GSM, LTE 450 МГц, и много чего еще там было, но сейчас не об этом 🙂 ) и GNSS приемник для синхронизации времени.
Попалась мне в руки отладка nRF9160 (причем обновленная версия nRF9160-DK 1.0.0). Решил проверить как работает GPS на этом модуле в условиях средней городской застройки.

Для работы с «нордиками» скачиваем nRF Connect.
Устанавливаем приложения LTE Link Monitor для первого подключения к модему и проверке АТ команд.

Подключаем отладку nRF9160-DK и выбираем отладку в списке подключенных устройств.
Внимание! В комплекте нет кабеля microUSB! Будьте готовы его где-то откопать в загашниках…

Однако, как выяснилось стоит не последняя версия прошивки на модуле (1.2.3), поэтому обновляемся до версии 1.3.0. В ней улучшили чувствительность GPS приемника и оптимизировали энергопотребление при работе с навигацией и в каких-то еще режимах типа eDRX и PSM.

Версию прошивки 1.3.0 можно скачать тут прямо с сайта www.nordicsemi.com
В nRF Connect открываем приложение Programmer и справа внизу кликаем Update modem. В выпавшем окне выбираем файл с zip-архивом с прошивкой и жмем Write. Вуа-ля!

Теперь зашьем пример с GPS.
Переходим в Segger Embedded Studio (Nordic Edition) — устанавливается пошагово из nRF Connect.
И для проверки навигации загрузим пример проекта «gps» из SDK. Кликаем «Open nRF Connect SDK Project…»

В появившемся окне выбираем проект «gps». Имя платы «nrf9160dk_nrf9160ns», а не «nrf9160dk_nrf9160» (иначе не прошьется ничего). И устанавливаем галку «Clean Build Directory». Далее Build -> Build and Run.

Отладку на торпеду под лобовое стекло. Ноутбук на пассажирское кресло. И поехали снимать логи.


Сохраненный лог конвертируем в gpx чтобы наложить на гугл карты:

Итак, первое, на что обращаешь внимание, это краткосрочные потери трека (местами 3-5 секунд, иногда и до 40 секунд). С чем это связано, пока непонятно… Но может быть, что и с неоптимизированным софтом по части обработки навигационных сигналов, выпадением в какие-то режимы энергосбережения или из-за использования керамической антенны (в данном конкретном случае внешнюю активную антенну не подключал). Ну и второе — отклонения трека на остановках на светофорах и при движении на скорости ниже 10км/ч. Второе замечание это скорее придирка, поскольку большинство навигационных приемников так работают без дополнительных настроек.
В статике nRF9160 показал заброс около 15 метров (опрос 1 раз в 30 минут в течении 6 часов).
В целом, в качестве автомобильной «закладки» (или других устройств с похожим сценарием использования) сгодится (не отличный результат, но достаточный для многих приложений). С учетом того, что nRF9160 поддерживает только LTE-M и LTE-NB, у которых абонентские устройства редко выходят на связь, его можно использовать для различных миниатюрных устройств с батарейным питанием. К тому же, nRF9160 поддерживает все популярные мировые частоты (бэнды 1, 2, 3, 4, 5, 8, 12, 13, 17, 18, 19, 20, 25, 26, 28, и 66), так что можно использовать 1 девайс для использованию по всему миру.