Занимаясь поддержкой онлайнового NTRIP кастера, я столкнулся с тем, что у пользователей возникают сложности с передачей поправок от базы к роверу. В основном они связаны с тем, что у них нет полной картины взаимодействия приемников на транспортном уровне . Как же технически это происходит? Кастер это сервер, который подключен к интернету, он расположен по определенному IP адресу и слушает определенный порт, ожидая входящего соединения. Например это может быть 111.111.111.111 порт 2101. Сервер отправляет на кастер запрос на соединение: Код: POST /ExampleMountpoint HTTP/1.1 Host: ntrip.example.com Ntrip-Version: Ntrip/2.0 Authorization: Basic bnRyaXA6c2VjcmV0 User-Agent: NTRIP ExampleServer/2.0 Connection: close Из данного запроса видно, что сервер хочет передавать данные для точки доступа под названием ExampleMountpoint. Версия NTRIP протокола 2. Сервер использует простую авторизацию и передает имя пользователя и пароль в кодировке BASE64 Получив такой запрос, кастер проверяет, есть ли у него в базе данных точка доступа с именем ExampleMountpoint и подходят ли к ней имя пользователя и пароль. В случае успеха, кастер отвечает серверу: Код: HTTP/1.1 200 OK Ntrip-Version: Ntrip/2.0 Server: NTRIP ExampleCaster/2.0 Date: Tue, 01 Jan 2008 14:08:15 GMT Connection: close Сервер, получив ответ что все ОК, начинает передавать уже непосредственно спутниковые данные. Таким образом серверное соединение установлено. Теперь уже клиенту нужно подключиться к кастеру, чтобы получить данные передаваемые сервером. Клиент посылает на тот же адрес и тот же порт следующий запрос: Код: GET /ExampleMountpoint HTTP/1.1 Host: ntrip.example.com Ntrip-Version: Ntrip/2.0 User-Agent: NTRIP ExampleClient/2.0 Authorization: Basic bnRyaXA6c2VjcmV0 Connection: close Кастер проверяет, что точка доступа ExampleMountpoint существует и активна. Проверяет логин и пароль пользователя. И отвечает что все нормально: Код: HTTP/1.1 200 OK Ntrip-Version: Ntrip/2.0 Server: NTRIP ExampleCaster/2.0 Date: Tue, 01 Jan 2008 14:08:15 GMT Connection: close Content-Type: gnss/data Сразу за этим ответом, кастер начинает передачу спутниковых данных полученных от сервера. Таким нехитрым образом удается установить соединение базы с ровером.
Добавлю, что NTRIP Сервер, это компьютер доступный в любом виде:телефон, стационарный ПК,Rasppbery Pi, контроллер GNSS, GPS, роутер, микроконтроллер, и.д.,при условии, что на нем есть возможность подключиться к базовой станции через последовательный COM порт(так называемый rs232 интерфейс или его версия с TTL уровнями сигнала), или через блютус или блютуз адаптер используя профиль SPP.Например в случае с приемником Trimble 5700 подключаем компьютер к 3-му порту.Следует иметь ввиду, что для Вашей версии операционной системы компьютера должна быть доступна программа NTRIP сервер, в случае с микроконтроллером соответствующая прошивка.Подключение к сети Интернет обязательно. NTRIP Клиент-это как правило контроллер ровера, с выходом интернет.Управление NTRIP клиентом, содержит в себе ПО контроллера, которое используется для приемника. NTRIP Кастер-это удаленный компьютер-сервер( скорее всего и не один, что дает преимущество при сбое одного из них) с соответствующим ПО,управляет которым организации занимающиеся управлением сети интернет, организатор данного сервиса, который арендовал виртуальный сервер и установил туда программное обеспечение NTRIP Кастер.
Интересно а можно подключиться к ntrip с помощью GSM/GPRS модуля+arduino? Почитал несколько статей про GSM модемы, настраиваю модуль с помощью АТ команд, соединяюсь с сервером командой at+cipstart="TCP","95.85.53.176","2101". А дальше не понятно что делать, как отправить точку доступа и пароль? И как потом начать отправлять поправки на мою точку доступа? Поправки будут считываться с ком порта ардуино и передаваться в GSM модуль (по этой части вопроса нет).
Думаю да,если есть такая прошивка на микроконтроллер AVR.Если же нет, то придется писать самому, нужно освоить программирование микроконтроллеров, управление модемом с помощью АТ-команд, изучить некоторые сетевые технологии для передачи текстового потока данных на сервер по IP_адресу: и номерeу порта.Самое интересное, что многие GSM модули уже обладают встроенной поддержкой протоколов и всякой нужной лабуды для решения подобной задачи, то есть ардуино можно исключить из этой связки. Единственный минус такого подхода, что среда разработки может быть платной и по ней нет такого количества книг как по ардуино, то есть осваивать намного сложней будет.
Код: POST /ExampleMountpoint HTTP/1.1 Host: ntrip.example.com Ntrip-Version: Ntrip/2.0 Authorization: Basic bnRyaXA6c2VjcmV0 User-Agent: NTRIP ExampleServer/2.0 Connection: close ExampleMountpoint - ваша точка доступа bnRyaXA6c2VjcmV0 - логин и прароль зашифрованный по алгоритму base64 в формате login:password и не забудьте переносы строки "\r\n", в конце должна быть пустая строка
Походу если нет поддержки base64, тогда ручками шифровать нужно. --- Сообщения объединены, 15 авг 2017, Оригинальное время сообщения: 15 авг 2017 --- Принимать строки из ком порта и отправлять их на ip_адрес:номер_порта кастера по TCP/IP или по UDP протоколу в зависимости от того, что использует сервер.
В ардуино есть библиотеки для работы с base64, думаю вопрос решится. Спасибо, буду пробовать. А такой запрос подходит для всех NTRIP или только для вашего?
Это запрос по стандарту NTRIP 2 По стандарту NTRIP 1, запрос будет немного другим: Код: SOURCE letmein /Mountpoint Source-Agent: NTRIP NtripServerCMD/1.0 где letmein пароль, а Mountpoint название точки доступа.
Сделал 2 модема на основе STM32f042 и модуля SIM800C. После отладки все заработало. Спасибо. Отправка и прием работают хорошо, по крайней мере за небольшой период наблюдений. Тяжело найти было информацию по организации подключения к NTRIP серверу. На официальном сайте rtcm документ по ntrip 2.0 стоит 200+ долларов. Уже отчаялся что придется покупать, но тут наткнулся на этот пост 3х летней давности)
Я тут недавно обновил YCServer, он по прежнему глючный и страшный но вроде иногда работает. Теперь он позволяет делать такой трюк: base -> bluetooth -> android -> internet -> android -> bluetooth - rover роверов может быть много https://play.google.com/store/apps/details?id=com.youcors.ycserver
А нету ли у Вас такой программулины на WM ? А то контролеров полно с GSM а решения для передачи на NTRIP кастер со стареньких приемников нет. Конечно устройства на Андроиде доступны, но в морозы долго не работают , колхозить с проводами приходится. (достаточно функции NTRIP server )
Уровень знаний, который дал мне университет, не позволяет понять почти ничего из того о чем вы общаетесь... Закончил называется с красным дипломом...