![]() |
GPS Эхолот Карта глубин
|
Предисловие
В последнее время в нашу жизнедеятельность стремительно вошли такие системы, как: GPS-навигация, картография, рыбопоисковая эхолокация. GPS-навигацией и картографией многие пользуются при путешествиях на автомобиле, пешем туризме, на охоте и рыбалке. Рыбопоисковыми эхолотами пользуются рыболовы. Активные датчики глубины (Active Transducer) используются на катерах и яхтах.
Многие карты дорог, городов, топо-карты, карты глубин больших водоемов доступны для использования в GPS-навигации, но иначе дело обстоит с картами глубин внутренних водоемов - озер и рек, которые в первую очередь могут быть полезны для рыболовов. Таких карт просто нет или их очень трудно достать или использовать.
Таким образом, возникла идея создать комплекс для накопления данных о местоположении и глубине для последующего изготовления собственных карт глубин часто посещаемых водоемов!
Проект "Создание программно-аппаратного комплекса для исследования глубин внутренних водоемов"
Основные задачи комплекса: сохранение синхронных данных о местоположении и глубине в распространенном формате на SD-карту, вывод в реальном времени мультиплексированных NMEA-данных * от GPS и Эхолота на внешнее устройство по различным интерфейсам связи.
* Здесь и далее подразумевается стандарт NMEA-0183!
NMEA 0183 Information Sheet Issue 3.pdf от Actisence (или еще ссылка, популярное изложение электрической спецификации стандарта, способы подключения устройств - Talkers, описание мариновских NMEA-сообщений, на английском).
Описание NMEA протокола. Реализация в приемниках Garmin и GlobalSat. (в поисковиках можно найти много дополнительных ссылок по NMEA-сообщениям GPS-приемников).
* Здесь и далее подразумевается стандарт NMEA-0183!
NMEA 0183 Information Sheet Issue 3.pdf от Actisence (или еще ссылка, популярное изложение электрической спецификации стандарта, способы подключения устройств - Talkers, описание мариновских NMEA-сообщений, на английском).
Описание NMEA протокола. Реализация в приемниках Garmin и GlobalSat. (в поисковиках можно найти много дополнительных ссылок по NMEA-сообщениям GPS-приемников).
Варианты реализации комплекса:
- С применением GPS-приемника, Эхолота и Ноутбука.
- С применением GPS-приемника, Эхолота и МК * блока типа Arduino.
* МК - микроконтроллер.
Для кого этот проект: проект заинтересует в первую очередь рыболовов (троллингисты привет!), но сам комплекс может использоваться и в профессиональной деятельности.
Уровень сложности проекта: любительский для повторения, но некоторые аспекты требуют углубленного изучения.
- Изыскания. Поиск информации о подобных решениях в Интернет. Поиск соответствующего оборудования и программного обеспечения. Поиск и изучение технической документации и стандартов. Посещение форумов по данной тематике.
- Приобретение или создание оборудования и программного обеспечения.
- Изготовление прототипа программно-аппаратного комплекса (ПАК). Настойка, отладка и тестирование в лабораторных условиях. Выбор оптимальной конфигурации оборудования и программного обеспечения.
- Изготовление рабочего комплекса для использования в полевых условиях. Тестирование комплекса на водоеме. Первичное накопление данных Latitude/Longitude/Depth.
- Обработка данных программным обеспечением (ПО), получение первичных результатов - карт глубин, 3D-моделей дна.
- Работа над ошибками.
- Накопление больших объемов данных.
- Обработка данных и получение окончательных результатов.
- Использование результатов при последующих посещениях водоемов.
Реализация комплекса
I. Первый вариант комплекса с использованием Ноутбука
Состав комплекса:
- Эхолот с NMEA-выходом с передачей данных в стандарте RS-232 (или активный датчик глубины с NMEA-выходом).
- GPS-приемник (в роли приемника выступает смартфон Nokia 6110 Navigator с передачей NMEA-данных по Bluetooth при помощи программы ExtGPS, есть вариант под Andriod!).
- Ноутбук, к нему подключен эхолот через USB-RS232 переходник и GPS-приемник по Bluetooth.
- ПО на Ноутбуке для: мультиплексирования NMEA-данных (GPSGate Client), записи треков c данными о глубине (OziExplorer), построения в реальном времени модели дна (DrDepth).
- Дополнительное ПО для апостериорной обработки накопленных данных и создания карт глубин и 3D-моделей дна (GlobalMapper, Surfer, DrDepth, ReefMaster).
Недостатки комплекса:
- Ноутбук - высокое энергопотребление, автомобильный аккумулятор - это слишком для использования в ПВХ лодке (хотя...).
- Ноутбук - проблемы с влагозащитой оного.
- Ноутбук - большие габариты, вес.
- Ноутбук - дополнительные кабели и преобразователи напряжения питания, в лодке получается целая паутина из проводов.
Таким образом, главное устройство в первом варианте становится главной проблемой!
Тем, кто заинтересовался реализацией такого варианта комплекса, могу посоветовать Military Notebooks. Проблемы с влагозащитой и тряской отпадут. На некоторых моделях встроен GPS-приемник.
Фото реализации первого варианта комплекса:
GPSGate Client мультиплексирует NMEA-данные COM-портов от GPS и Эхолота, может направить MUX NMEA-данные на n виртуальных COM-портов для параллельной работы нескольких навигационных программ на PC. |
DrDepth может создавать 3-D модель дна и линии глубины в реальном времени. Понимает формат файла трека OziExplorer. |
OziExplorer умеет записывать данные глубины в поле для данных альтитуды, полученные txt-треки можно обработать ПО для построения карт глубин или 3D-моделей дна. |
Немного поработав напильником и паяльником получаем эту красоту. (без изоленты тоже не обошлось :) |
Собственно сабж. Пора в поля! |
II. Второй вариант комплекса с использованием МК блоков типа Arduino
Осознав всю сложность тестирования и использования созданного комплекса в полевых условиях на ПВХ лодке, я решил устремить свой взор в сторону МК устройств... и случайно на одном форуме в теме про NMEA-мультиплексоры обнаружил упоминание о МК блоке Arduino Mega. После краткого ознакомления с характеристиками данного блока и сопутствующих шилдов (Shield) у меня появилось стойкое убеждение создать компактный комплекс с низким энергопотреблением и массой возможностей по расширению функционала на МК блоках серии Arduino или подобных.
Минимальный состав комплекса:
- МК блок Iteaduino Mega V1.0 (ATmega 2560) с четырьмя UART, один UART используется под USB на плате. МК выполняет функции NMEA-фильтра и NMEA-мультиплексора данных от GPS и Эхолота, осуществляет запись синхронных данных о местоположении и глубине в заданном формате на SD-карту, выводит MUX NMEA-данные на USB (и/или UART).
- Эхолот с NMEA-выходом с передачей данных в стандарте RS-232 (или активный датчик глубины с NMEA-выходом). Для подключения этих устройств к UART МК потребуется конвертер сигналов RS232-TTL (на микросхеме MAX232 / MAX3232).
- GPS Shield V1.0 (+Micro SD интерфейс) - очень удобный комбайн, рекомендую! Активная GPS антенна. (в данном GPS Shield используется модуль GlobalSat EB-365, который передает константные данные Lat, Lon, Speed при низких скоростях передвижения. ВНИМАНИЕ! Это можно исправить, отключив в модуле режим Static Navigation для GPS-модулей с чипом SiRF StarIII; в новом варианте комплекса используется GROVE модуль GPS на чипе u-blox NEO-6М).
- Дополнительное ПО для обработки накопленных данных, как и в первом варианте ПАК.
Достоинства комплекса:
- Доступность комплектующих для массового потребителя. Простота повторения.
- Возможность (пере)программирования МК на языке высокого уровня C++ под свою реализацию комплекса (Open Source). Заливка программного кода (скетчей) из среды разработки по USB. Не нужен программатор!
- Компактность, малый вес.
- Низкое энергопотребление. Широкий диапазон напряжений питания.
- On-board GPS - избавляемся от лишних проводов.
- On-board SD - независимое сохранение данных.
- Возможность вывода MUX NMEA-данных на внешнее устройство по USB (например: Ноутбук, как в первом варианте ПАК, КПК) или на другое NMEA-устройство по RS-232.
- Расширение/изменение возможностей комплекса под свои потребности (например: беспроводные решения, подключение на вход дополнительных датчиков, TFT/LCD-дисплеи, солнечные панели и т.п.). Типа радиоэлектронный конструктор на базе МК!
Требования к комплексу:
- Требования озвучены в достоинствах.
- Дополнительное требование - надежная герметичность корпуса устройства, кабельных вводов, коннекторов, слотов и т.п.
Блок-схема комплекса:
Функциональные возможности комплекса:
- GPS-модуль подключается к UART1. Эхолот подключается к UART2. Читаем NMEA-данные с обоих UART почти в синхронном режиме, т.е. не ждем NMEA-предложения от одного устройства целиком. Новая версия программы: GPS, Эхолот или MUX NMEA-данные от обоих устройств можно подключить к любому UART (UART1 или UART2).
- Комплекс может работать как обычный GPS-логгер (трекер), когда не используется эхолот. Тогда вместо данных глубины будет участвовать альтитуда (высота над уровнем моря).
- Вывод MUX NMEA-данных на UART0 (USB). К USB может быть подключен ПК (ноутбук) для тестирования комплекса в период настройки или для работы с навигационным ПО в период эксплуатации комплекса.
- UART3 остается свободным для последующего расширения функциональных возможностей комплекса. Например, можно выводить на него MUX NMEA-данные, а можно подключить Serial LСD или другие устройства.
- NMEA-данные, поступающие от GPS и эхолота, проходят проверку по контрольной сумме - фильтр по контрольной сумме, если таковая присутствует в NMEA-предложении. Если проверка не пройдена, то это NMEA-предложение отбрасывается и не участвует в дальнейшей обработке, оно не поступает на внешнее устройство по USB и не будет записано на SD-карту.
- На поступающие NMEA-данные могут быть наложены дополнительные NMEA-фильтры: свой фильтр на данные GPS, свой фильтр на данные эхолота, фильтр на вывод данных по USB, фильтр на обработку и запись на SD-карту. Это может пригодиться для уменьшения потока данных, проходящих через комплекс и, как следствие, уменьшения временных и вычислительных ресурсов комплекса. Например, программа DrDepth заранее настраивается на определенные NMEA-предложения от GPS и эхолота и остальные ей просто не нужны, следовательно, мы можем поставить соответствующий NMEA-фильтр на вывод данных по USB.
- Запись на SD-карту: запись происходит в трек-файл формата OziExplorer, после обязательных полей для OziExplorer можно записывать дополнительные поля с любыми приходящими от устройств данными. Например, для построения температурной карты водоема можно записывать в трек данные от термодатчика эхолота. Или параметр HDOP, для последующего анализа и удаления первых точек трека. Данные глубины записываются в поле для данных альтитуды. Трек легко просмотреть на карте, проанализировать и отредактировать в OziExplorer. Данный формат файла понимают многие программы: DrDepth, Global Mapper, Surfer.
- Формат имени директории и имени файла: YYYYMMDD\DDhhmmss.plt , где: дата и время - текущие дата и время начала работы комплекса (первых синхронных данных).
- В имени директории и файла можно использовать: либо UTC, либо локальное время региона. Аналогично и для полей даты и времени в файле трека.
- При записи данных на SD применяется еще один фильтр - GPS FixData, по качеству принимаемых данных от GPS. В трек записываются данные только с признаком GPS FixData.
- При записи данных на SD реализован механизм контроля синхронности поступающих данных от GPS и эхолота, на тот случай, когда одно из устройств перестает передавать данные, передает их с низкой точностью (GPS FixData) или с ошибками (контрольная сумма).
- Для прореживания точек при записи в трек могут использоваться два алгоритма: с указанием минимальной дистанции между географическими координатами и минимальной разницы глубины, и с адаптивной дистанцией, зависящей от скорости передвижения и минимальной разницы глубины (эта возможность удалена, зачем заведомо терять такую ценную информацию о глубине!?).
- Реализован механизм определения точек разрыва трека, когда пропадают данные от устройств, они низкой точности или с ошибками.
- Новый файл (директория) формируется каждый раз при включении и рестарте комплекса или при вставке SD-карты в работающий комплекс.
- SD-карту можно снимать и вставлять во время работы комплекса. После вставки карты произойдет ее инициализация и настройка комплекса из файла настроек, записанного на SD, будет создан новый файл трека, пойдет запись данных в трек.
- Индикация основных процессов работы комплекса реализована на светодиодах: индикация инициализации SD-карты или ее отсутствия, индикация чтения файла настроек или его отсутствия, индикация процесса чтения поступающих данных от UART1 и UART2 (GPS и Эхолот), индикация процесса вывода данных на UART0 и UART3 (USB и Bluetooth), индикация процесса записи синхронных данных в трек на SD, индикация GPS FixData и пропадание сигнала GPS. Предусмотрена возможность использования пищалки для озвучивания процесса записи синхронных данных в трек на SD.
- Основные настраиваемые параметры комплекса могут быть установлены из INI-файла, который должен находиться в корневой директории SD-карты, иначе будут использованы значения, установленные в программе.
Тестирование комплекса:
Тест длительной записи данных на SD-карту:
Тест длился больше 12 часов, в стационарном положении в помещении, эхолот в режиме симуляции. Запись на SD в txt-файл в формате трека OziExplorer + дополнительные поля данных. Период записи точек ~1с.
Результаты:
- Размер файла: 3.24 Мб.
- Количество путевых точек: 43509.
- Замечено много "выбросов" GPS, с которыми предстоит бороться (фильтровать).
Тестирование комплекса при поездке на автомобиле:
Тест проводился без эхолота, вместо данных глубины в алгоритм подставлялись данные высоты (альтитуды). Настройка ограничения записи точек: дистанция между точками >= 5 м, разность глубин (высоты) >= 1 м, запись на SD происходит по срабатыванию одного из этих условий.
Результаты:
- При остановке на перекрестках нет лишних точек. Плавная линия трека на круговых перекрестках.
- На малой скорости по лесной дороге запись шла через несколько секунд – прореживание точек. На трассе ограничение в 5м срабатывало каждую секунду (72 км/ч это уже 20 м/с).
- Надо сделать второй алгоритм - адаптивный, который будет вычислять дистанцию записи точек в зависимости от скорости движения.
- Первый трек 100 км пути, 6000 точек. Второй трек 90 км пути, 5100 точек.
Тестирование комплекса при низких скоростях передвижения:
Результаты:
Выяснилось, что при скорости передвижения ниже "пороговой" для GPS-модуля GlobalSat EB-365 (~ 1.0 - 1.3 м/с), GPS выдает константные значения Lat / Lon и скорость равную нулю !? При этом все три сообщения GLL, GGA и RMC с признаком GPS FixData! При превышении пороговой скорости GPS-модуль начинает выдавать реальные данные и комплекс работает правильно.
В чем проблема? Что за порог скорости?
Если проблему не получится решить, то данный GPS Shield придется исключить из комплекса, заменить на другой или использовать GPS от смартфона через Bluetooth (GPS в смартфоне пишет треки и с меньшими скоростями передвижения).
ВНИМАНИЕ! Это можно исправить, отключив в GPS-модуле режим Static Navigation (особенность изначальной настройки GPS-модулей с чипом SiRF StarIII).
Тестирование комплекса на водоеме
В конце мая удалось выбраться на рыбалку, накатали немного треков. Как и предвидел, при троллинге на скорости 3.2 - 4.0 Км/ч трек не записывался (см. проблему GPS-модуля выше), только странные точки ровно через 200 м!? А при переходах с места на место на больших скоростях, все отлично записалось. Треки обработал в программе DrDepth, что-то даже получилось :)
На ЮГ идем с низкой скоростью, фиксируются точки ровно через 200 м!? Кстати, на Африку чем-то похоже J |
GPS-модулем GlobalSat EB-365 заказал GROVE модуль GPS на чипе u-blox NEO-6М, SD card Shield V3.0 с GROVE контактами. GROVE - Модуль Serial Bluetooth для использования внешнего Bluetooth-GPS или для возможности отправки навигационных данных комплекса на внешнее устройство (смартфон, таблетку и т.д.).
Новый вариант комплекса представлен в статье ниже.
Первый результат
![]() |
Подсветка при создании карты для придания карте рельефности. В центре карты "Пик Коммунизма" - 5м, за который раньше часто цепляли снасти, теперь обходим мимо 😊 |
Фото реализации второго варианта комплекса на МК:
Вкусняшки J |
Старый знакомый из первого варианта комплекса... |
![]() |
...выводит NMEA-данные в стандарте RS-232 (Tx - синий провод), еще потребуется земля (GND - черный провод) и питание - красный. |
![]() |
Распиновка телефонного разъема дата-кабеля DCA-500. |
Питание для дата-кабеля берем от Iteaduino, я подал 5V. Пока не пришла GPS-антенна, подключил обычный TV-кабель, кинул конец на окно - работа GPS стала возможной. |
Общий вид прототипа. |
Тестирование связки GPS-МК-ПК-OziExplorer в домашних условиях. Созвездие спутников просто атаковало меня J |
Записал трек на SD-карту в формате OziExplorer. |
Путевые точки этого трека. Все точно, как в аптеке! (похоже работа режима Static Navigation в SiRF StarIII) Эхолот не был подключен, поэтому в поле Alt нули. |
![]() |
Рассыпуха для RS232-TTL конвертера и светодиодной индикации. Микросхема - MAX232 CPE в DIP16 корпусе. Конденсаторы для ее обвязки - керамика, 0.1uF. |
MAX232 |
Схема RS232-TTL конвертера на MAX232. (я использовал все неполярные конденсаторы) |
RS232-TTL конвертер на MAX232. Давненько не паял микрухи... |
... но все отлично получилось. |
Вешаю конвертер на питание 5В Iteaduino. |
Временный вариант подключения эхолота к комплексу. В рабочей версии все соединения будут спрятаны в герметичный корпус, все шнурки через гермовводы, как в первом варианте комплекса. |
Забыл подключить землю к DB9 :( |
Кабель от эхолота тоже временно пришлось переделать. |
Соединил RS232-TTL конвертер с пинами Tx2/Rx2 Iteaduino. |
Гирлянда замигала всеми цветами J |
Пришла активная GPS-антенна, теперь дело пойдет веселее. |
"Сижу за решеткой в темнице сырой..." Эх, корпус так долго не приходит. |
Наконец пришел герметичный корпус фирмы GAINTA. Модель G2104С, размеры 120 x 80 x 55, класс защиты IP-65. В комплекте винты для крепления крышки и неопреновый уплотнитель. |
Решил использовать такие гермовводы для тонких кабелей 3-5 мм. Класс защиты IP-67. |
SMA разъем для GPS-антенны. Родной разъем пришлось отрезать для пропуска кабеля антенны через гермоввод. |
Гермовводы установлены. |
Корпус пришел за несколько дней до выезда на рыбалку, монтажную плату уже не успел разработать, поместил все в корпус, как было на момент прототипирования. |
Уплотнитель на месте. Отверстия для крепежа вне зоны герметизации. |
Комплекс в сборе. Кабель от эхолота, кабель питания, GPS-антенна. |
Тестирование комплекса на водоеме. Ура! |
III. Новый вариант комплекса на МК с использованием GPS u-blox NEO-6M и SD Shield
Из-за неприемлемого режима работы GPS-модуля GlobalSat EB-365 на низких скоростях, пришлось подыскивать новый GPS-модуль. Выбор пал на модуль u-blox NEO-6M (DataSheet), и, как оказалось, выбор был сделан удачно. Данный модуль обновляет навигационные данные c частотой до 5 Гц, имеет несколько интерфейсов: UART, USB, SPI, I2C, работает с протоколами NMEA и UBX и имеет кучу других вкусностей. А самое главное - модуль выдает навигационные данные при низких скоростях передвижения! По модулям u-blox на сайте производителя доступна обширная документация. Имеется фирменная программа u-center для изучения и настройки модулей u-blox, даже есть возможность навигации с использованием картографии Google Earth. Все супер!
- Эхолот с NMEA-выходом с передачей данных в стандарте RS-232 (или активный датчик глубины с NMEA-выходом). Для подключения этих устройств к UART МК потребуется конвертер сигналов RS232-TTL (на микросхеме MAX232 / MAX3232).
- МК блок Iteaduino Mega V1.0 (ATmega 2560) с четырьмя UART, один UART используется под USB на плате. МК выполняет функции NMEA-фильтра и NMEA-мультиплексора данных от GPS и Эхолота, осуществляет запись синхронных данных местоположения и глубины в заданном формате на SD-карту, выводит MUX NMEA-данные на USB (и Bluetooth).
- GROVE - Модуль GPS (с мини антенной) на чипе u-blox NEO-6М.
- SD card Shield V3.0 с GROVE разъемами интерфейсов UART и I2C .
- GROVE - Модуль Serial Bluetooth для вывода навигационных данных комплекса на внешнее устройство (смартфон, планшет и т.п.).
Блок-схема комплекса:
- изменение частоты работы GPS-модуля: 1, 2, 4, 5 Гц - повышает точность привязки данных глубины к GPS-координатам (синхронизация данных, об этом см. ниже).
- изменение скорости передачи данных UART GPS-модуля - позволяет установить большие скорости передачи данных для нормальной работы комплекса при режимах работы GPS-модуля с частотами выше 1 Гц.
- вывод MUX NMEA-данных комплекса на внешнее устройство через Serial Bluetooth (в стадии тестирования) - беспроводное подключение устройств с картографическими навигационными программами.
Фото реализации третьего варианта комплекса на МК:
Новые вкусняшки J GROVE - модуль GPS, GROVE - модуль Serial Bluetooth, SD card Shield, GROVE кабель. |
Все удачно поместилось в гермокорпус. |
![]() |
Теперь GPS-антенна внутри корпуса, меньше проводов - это плюс. (а может и минус, т.к. антенна должна быть как можно выше и ничем не экранироваться) |
Сабж. |
Сабж готов к рыбалке. |
Программа u-center от u-blox. Использование Google Earth. |
Программа u-center от u-blox. Просмотр GPS-данных по протоколам NMEA и UBX. |
Программа u-center от u-blox. Просмотр статистических GPS-данных. |
IV. Новый вариант комплекса на МК с использованием Serial Bluetooth и RS232 Shield
Состав комплекса:
- Эхолот с NMEA-выходом с передачей данных в стандарте RS-232 (или активный датчик глубины с NMEA-выходом). Для подключения этих устройств к UART МК потребуется конвертер сигналов RS232-TTL (на микросхеме MAX232 / MAX3232).
- МК блок Iteaduino Mega V1.0 (ATmega 2560) с четырьмя UART, один UART используется под USB на плате. МК выполняет функции NMEA-фильтра и NMEA-мультиплексора данных от GPS и Эхолота, осуществляет запись синхронных данных местоположения и глубины в заданном формате на SD-карту, выводит MUX NMEA-данные на USB (и Bluetooth).
- GROVE Модуль GPS (с мини антенной) на чипе u-blox NEO-6М (wiki, правда теперь выпускают на модуле SIM28, протокол UBX этим модулем не поддерживается!).
- SD card Shield V3.0 с GROVE разъемами интерфейсов UART и I2C (wiki).
- GROVE Модуль Serial Bluetooth для вывода навигационных данных комплекса на внешнее устройство (смартфон, планшет и т.п.) (wiki).
- Новичок: RS232 Shield с площадкой для прототипирования и DB9 разъемом (wiki).
Этот вариант был разработан под заказ, постарался сделать конструкцию товарного вида.
Основные изменения в конструкции:
- использование RS232 Shield: избавление от "соплей" самодельного RS232-TTL конвертера и резисторов, LED BAR с резисторами и контактные колодки распаяны на площадке для прототипирования.
- использование модуля Serial Bluetooth.
- использование геркона для сброса МК (reset) с целью записи трека в новый файл.
- использование LED BAR индикатора (красный, желтый, зеленые).
Монтажная схема комплекса:
Дополнительные рисунки к схеме:
![]() |
Используемые пины Iteaduino Mega 2560. |
![]() |
Пины и интерфейсы SD Shield. |
![]() |
Пины и интерфейсы RS232 Shield. |
Фото-сессия (понеслась):
Такой вот бутерброд из трех шилдов J |
Плюсы RS-232 Shield: два варианта подключения Эхолота по RS-232, удалось разместить LED BAR с резисторами и контактные колодки для питания комплекса. |
Плюсы SD-card Shield: слот под SD и microSD, GROVE разъемы пригодятся для подключения питания к GROVE GPS и GROVE Bluetooth. |
К SD слоту проще будет добираться. |
Первый способ подключения Эхолота к RS-232 Shield. |
Второй способ подключения Эхолота к RS-232 Shield. |
Разводка питания от аккумулятора к комплексу и Эхолоту. |
Разъем DB9 - временный вариант. GPS прикручен к плате МК. |
LED BAR - индикатор процессов комплекса. |
Монстр! Брутальный видок J Да, минимизация не помешала бы. |
Ужас! Но а кому в Зимнюю Олимпиаду легко!? Все ресурсы туда, вот винтиков и не осталось. |
Тестирование передачи NMEA GPS по BT. |
А тут и Эхолот присоединился. |
![]() |
Тестирование передачи NMEA одновременно по BT и USB. |
Укладка в корпус. |
Последние приготовления. |
Проверка доступа к SD слоту. |
Геркон сброса комплекса для записи трека в новый файл. Файлы при создании именуются по текущему времени, которое берется из NMEA GPS. |
Готов к отправке в дальние края! "Будет вечно Карелия сниться..." |
Красота! |
Ошибки измерений вносимые комплексом
В этом разделе описаны ошибки измерений и способы их устранения, которые известны мне.
На рисунке приведены два примера: первый - работа GPS на частоте 1 Гц, второй - с частотой 2 Гц. |
Из рисунка видно, что данные от двух устройств поступают в комплекс с задержкой dT. Значение dT непостоянно и может быть с разным знаком. Двигаясь с определенной скоростью, мы за время dT пройдем определенный путь, следовательно измеренная глубина будет не в той географической точке, которую мы получим от GPS. Ошибка max(dL) зависит от скорости движения и прямопропорциональна ей.
Пример 1: частота измерений Эхолота - 1 Гц, частота измерений GPS - 1 Гц, следовательно max(dT) = 1 c, скорость движения - 7.2 км/ч (2 м/с). Получаем max(dL) = 2 м.
Пример 2: частота измерений Эхолота - 1 Гц, частота измерений GPS - 1 Гц, следовательно max(dT) = 1 c, скорость движения - 3.6 км/ч (1 м/с). Получаем max(dL) = 1 м.
Пример 3: частота измерений Эхолота - 1 Гц, частота измерений GPS - 2 Гц, следовательно max(dT) = 0.5 c, скорость движения - 3.6 км/ч (1 м/с). Получаем max(dL) = 0.5 м.
Пути уменьшения ошибки:
- Увеличение частоты измерений GPS. Чем больше частота измерений GPS, тем меньше max(dT) и max(dL), т.е. точка измерения глубины ближе к точке измерения GPS.
- Т.к. значение dT записывается в файл трека, то есть возможность проводить апостериорную обработку данных на ПК с целью вычисления более точных географических координат измерения глубины (скорость движения тоже записывается в файл трека, истинный курс можно вычислить по паре точек в треке).
2) Ошибка привязки данных о глубине к географическим координатам из-за задержки между измерением координат в GPS-модуле и поступлением их в комплекс.
Данная проблема всесторонне описана в ветке форума на сайте geodesist.ru.
У меня только один комментарий: в моем комплексе нужно учесть тот факт, что подобная задержка присутствует и при передаче NMEA-данных с эхолота. Плюс к этому, проблема асинхронности поступления данных от обоих устройств может вносить бОльшую ошибку измерения и маскировать ошибку из-за задержки поступления данных.
Пути уменьшения ошибки:
- В сообщении на форуме описано несколько вариантов решения проблемы с задержкой.
- Отключение ненужных NMEA-сообщений на GPS-модуле, переход на бинарные протоколы GPS-модулей, увеличение скорости передачи данных в интерфейсах передачи данных. Т.о. можно свести эту задержку к одному порядку с задержкой поступления данных от эхолота. Дальше остается решить проблему асинхронности поступления данных (см. выше).
3) Вычисления с плавающей точкой.
На платформе Arduino предусмотрены два типа данных для работы с числами с плавающей точкой: float и double. Но казус в том, что тип двойной точности - double занимает в памяти всего 4 байта, как и тип float, т.е. имеет ту же точность. Тип double поддерживается в Arduino для совместимости с другими платформами.
В комплексе числа с плавающей точкой применяются при преобразовании географических координат из формата "dddmm.mmmm", в котором приходят данные в NMEA-сообщении, в формат "ddd.dddddd". На этом этапе получаем погрешность вычисления координат.
Пути уменьшения ошибки:
- Можно перейти на другую платформу, где тип double будет реально двойной точности.
- Можно записывать в трек данные о координатах в формате "dddmm.mmmm", как они приходят в NMEA-сообщении и делать апостериорную обработку данных на ПК, но тогда в комплексе придется отказаться от формата файла OziExplorer.
Несколько вариантов подбора X-duino блоков под имеющееся у вас оборудование для создания комплекса с минимальной конфигурацией:
У вас должен быть Эхолот с NMEA-выходом (типа этого) с передачей данных в стандарте RS-232 (или активный датчик глубины с NMEA-выходом (типа этих)). Для подключения этих устройств к UART потребуется конвертер сигналов RS232-TTL (на микросхеме MAX232 / MAX3232).
Вход данных:
- У вас есть GPS-устройство (приемник или навигатор) с NMEA-выходом по RS-232 или USB. Для подключения устройства к UART потребуется соответствующий конвертер. Тогда вам следует приобрести: Iteaduino Mega V1.0 (ATmega 2560) и SD Card Shield.
- У вас есть GPS-устройство (приемник или навигатор) с передачей NMEA-данных по Bluetooth. Тогда вам следует приобрести: Iteaduino Mega V1.0 (ATmega 2560), Bluetooth Shield и SD Card Shield. (Например, свой смартфон Nokia 6110 Navigator с программой ExtGPS я мог применить в этом варианте).
- У вас нет GPS-устройства или нет возможности получить с него NMEA-данные - мой вариант комплекса. Тогда вам следует приобрести Iteaduino Mega V1.0 (ATmega 2560) и GPS Shield V1.0 (+Micro SD интерфейс) + Активную GPS антенну (в новом варианте: GROVE - Модуль GPS (с мини антенной), SD card Shield V3.0).
Выход данных:
Все зависит от связки: цена - возможности комплекса - потребности пользователя!
- USB: вывод MUX NMEA-данных по USB будет по-умолчанию в моем варианте комплекса. Следующие пункты зависят от конкретной конфигурации комплекса.
- RS-232: если остался свободный UART, то через конвертер сигналов RS232-TTL MUX NMEA-данные можно вывести на морское NMEA-оборудование или любое другое устройство с интерфейсом RS-232.
- Bluetooth: если остался свободный UART, то используя Bluetooth Shield (если он не используется для входа данных), MUX NMEA-данные можно вывести на любое устройство с Bluetooth (КПК, смартфон, ноут, таблетку).
- Wi-Fi (пока не изучал, но думаю проблем не будет).
Все зависит от связки: цена - возможности комплекса - потребности пользователя!
Полезные материалы по проекту:
Платформа Arduino (AVR):
Платформа Arduino (AVR):
- Arduino (Home)
- Arduino (железо)
- Arduino (IDE)
- Arduino (описание языка программирования)
- Arduino (примеры программ и библиотеки)
- Arduino.ru (русский сайт)
- Maple
- LeafLabs (документация)
- Maple (IDE)
- Maple (описание языка программирования)
- Maple (библиотеки)
- Maple (доп. библиотеки - wiki)
- Картинки по запросу (ссылка).
- Подключение NMEA-устройства к OpenLog (с сайта DrDepth).
- MICROCONTROLLER UART TUTORIAL (с сайта Society Of Robots).
- Конвертер RS-232-TTL (с сайта Digital Electronics).
Некоторые результаты создания карт глубин и 3D-моделей дна из Интернет:
- DrDepth: примеры с сайта разработчика программы (ссылка).
- DrDepth: модель дна (ссылка).
- http://www.rusfishing.ru (требуется регистрация для просмотра вложений).
- Тема на http://www.rusfishing.ru (требуется регистрация для просмотра вложений).
- Тема на http://www.gps-forum.ru
- Тема на http://forum.motolodka.ru
- Русский сайт Arduino http://arduino.ru
- Раздел "Гидрография и подводная съемка" на сайте geodesist.ru
- Описание проблемы синхронизации данных по времени на форуме сайта geodesist.ru
- Датчики (внизу страницы приведены схемы подключения)
- Цены на датчики 2013
- Как заказать и оплатить?
- DrDepth (Внимание! Проект DrDepth куплен американской компанией Humminbird, которая на этой основе выпускает новую программу Autochart с выходом карт в формате Lakemaster, который поддерживается картплоттерами от Humminbird!)
- Архив сайта DrDepth
- ReefMaster (можно использовать вместо DrDepth, заточена под создание карт глубин для картплоттеров фирмы Lowrance и Humminbird, создание растровых карт глубин тоже поддерживается). Инструкция на русском (PDF).
- OziExplorer
- GlobalMapper
- Surfer
- GPSGate Client
- ExtGPS (Symbian, Android)
- SAS.Planet (SAS.Планета) (Android, WinCE)
Здорово, красиво, но... если руки не оттуда растут и с трудом отличу транзистор от конденсатора, а цели такие же, только глубины для создания модели дна от 10 до 200 метров. Какое оборудование посоветуете, и как реализовать? В основном - море.
ОтветитьУдалить1) Ваш диапазон глубин не влияет на выбор варианта комплекса, влияет только на выбор самого эхолота. Мой по спецификации должен добивать до 274м (http://www.garmin.ru/eholoty-cat/fishfinder-300c.html). Если рыбопоисковик не нужен, то активный датчик глубины, смотрите ссылку в статье, там есть и до 300м, и стоить будет намного дешевле, прайс у них на сайте есть.
Удалить2) Если не дружите с радиоэлектроникой, то можно попробовать первый вариант с ноутбуком, плавсредство ваше позволяет, раз в море. Там паять почти ничего не надо, ну разве что выход Tx/GND эхолота к преобразователю USB-RS232 для подключения к ноутбуку по USB и подать питание от аккумулятора на эхолот, думаю, с этим каждый справится (добавил фото про это).
GPS с USB (например, GlobalSat BU-353, выбирать вам). Т.о., у вас оба устройства вяжутся к ноутбуку по USB. Дальше дело установки и настройки ПО на ноутбуке.
3) Если бы второй вариант комплекса был в производстве и доступен для приобретения, то, естественно, я бы рекомендовал второй вариант. Приобрели, подключили эхолот (GPS уже в комплексе) и в море, на SD треки копите, на NMEA-мониторах или LCD самого комплекса навигационную информацию видите!
Спасибо за ответ. Мне более подходит второй вариант. Возможно ли будет попросить о помощи в приобретении и сборке необходимого набора? Благодаря вам, я начинаю понимать, что же мне надо..
УдалитьКонечно, обращайтесь! (вспоминаю себя год назад)
Удалить1) Помощь в приобретении - что подразумеваете?
Мой начальный вариант комплекса: там прямые ссылки на устройства, которые я себе заказал: Iteaduino Mega V1.0 (ATmega 2560), GPS Shield V1.0 (+Micro SD интерфейс), Активная GPS антенна.
2) По сборке вопросы задавайте.
P.S. Второй комплекс находится на стадии прототипирования, т.е. по моему Плану реализации проекта - пункт №3. Сейчас ожидаю Активную GPS-антенну. Дорабатываю программный код, обдумываю функционал комплекса...работы пока хватает.
Но Основные задачи комплекса достигнуты: сохранение данных на SD-карту в формате трек-файла OziExplorer, вывод в реальном времени MUX NMEA-данных на USB.
В принципе, в Arduino варианте тоже ничего паять не надо, RS233-TTL конвертер можно найти готовый. Остальное все можно подключить проводами, но такой вариант прокатит только для прототипа, на водных просторах с вибрацией от мотора и качке неизвестно как поведут себя контактные разъемы на платах.
УдалитьДобавил фото в первый вариант комплекса.
ОтветитьУдалитьДобавил варианты интерфейсов вывода данных во второй вариант.
Добавил ссылки на активные датчики глубины CruzPro Ltd и их цены.
Добавил фото проверки в OziExplorer записанных на SD-карту треков.
ОтветитьУдалитьДело близится к завершению, осталось совсем немного: обдумать работу с INI-файлом для чтения настраиваемых параметров, работу светодиодов для отображения процессов чтения и записи данных, сделать RS232-TTL конвертер для Эхолота, самое главное - продумать и сделать влагозащитный корпус для всего этого.
Добавил фото по завершению прототипа комплекса.
ОтветитьУдалитьВ выходные можно провести тестирование программной части комплекса с выездом на автомашине. Вместо глубины подставлять в алгоритм альтитуду.
Первый тест: 12 часов записи данных на SD-карту.
ОтветитьУдалитьОписал в статье.
Второй тест. Тестирование комплекса при поездке на автомобиле.
ОтветитьУдалитьДобавил.
Функциональные возможности комплекса.
ОтветитьУдалитьДобавил.
Новая версия программы: GPS, Эхолот или MUX NMEA-данные от обоих устройств можно подключить к любому UART (UART1 или UART2).
ОтветитьУдалитьВопрос - а если мой эхолот будет работать по протоколу NMEA 2000, это не будет большой проблемой? В этом месяце буду заказывать эхолот.Основная задача, кроме поиска рыбы в море, еще писать глубины и профиль дна, с последующим моделированием.
ОтветитьУдалитьДля данного комплекса будет проблемой, т.к. NMEA-2000 это совершенно другой стандарт, он использует другой протокол передачи данных -> нужен другой софт и другая программа на МК.
УдалитьВ статье красным помечено, что используется NMEA-0183!
Третий тест. Тестирование комплекса при низких скоростях передвижения.
ОтветитьУдалитьПоявилась серьезная проблема с работой GPS-модуля.
Описал в статье.
Пришел корпус. Комплекс собран. Протестирован на водоеме.
ОтветитьУдалитьДобавил фото.
Сейчас идет анализ работы комплекса, записанных треков. Работа над ошибками и проблемами.
Здравствуй Garry, я хотел собрать аппарат..который будет считать количество рыб с помощью эхолота. Могу ли я это сделать?..+ использовать Ардуино...я хотел всю информацию записывать на SD карту(информация о рыбе,координаты,время и т.д) Спасибо.
ОтветитьУдалитьДобрый день.
УдалитьЭхолот выдает данные глубины (NMEA DBT и DPT) до дна - мощный отраженный от дна сигнал. Как получить с рыбопоискового эхолота данные о помехе со слабым сигналом (рыба, топляк и т.п.) в толще воды через NMEA мне не ведомо. Можно самому анализировать отраженный сигнал, но данной темой не занимался, данное устройство упоминается на форуме http://www.rusfishing.ru/forum/showthread.php?t=8139 , автор Arsun, можете задать вопрос там.
Если получится выводить данные о помехе (например в новом своем NMEA-сообщении), то такой комплекс становится подобен моему.
Мне не понятна цель вашего мероприятия. Для чего требуется подсчет рыб да еще с фиксацией их координат и времени?
Добавил тестирование комплекса на водоеме. Результат в программе DrDepth.
ОтветитьУдалитьНа замену шилда с GPS-модулем GlobalSat EB-365 заказал GROVE модуль GPS на чипе U-Blox Neo-6М, SD card Shield V3.0 с GROVE контактами. GROVE - Модуль Serial Bluetooth для использования внешнего Bluetooth-GPS или для возможности отправки навигационных данных комплекса на внешнее устройство (смартфон, таблетку и т.д.).
ОтветитьУдалитьРазработка комплекса продолжается!
Начато описание нового комплекса с использованием GPS-модуля U-Blox Neo-6M и модуля Serial Bluetooth.
ОтветитьУдалить... и представлен результат работы комплекса - 3D-модель дна глубоководного участка озера.
УдалитьСоздание комплекса, можно сказать, завершено!
ОтветитьУдалитьСейчас идет накопление больших объемов данных - треков с водоемов. Для каждой следующей поездки на рыбалку используется результат предыдущих поездок - растровая карта глубин с наложением спутниковой карты местности. Масштаб карты приблизительно = 1:6000 (в 1см 60м).
К закрытию сезона осталось реализовать работу комплекса с Bluetooth да "отшлифовать" программный код комплекса.
P.S.
Если кому-то интересно, то задавайте вопросы и пишите письма!
Работа проделана огромная, позвольте добавить пару комментариев. Что-то уже реализовано вами, но, думаю, небольшая систематизация не помешает.
ОтветитьУдалить1. Наука называется "гидрография", процесс - "батиметрическая съемка" (bsthymetric survey), ключевое слово для поиска различной документации - "батиметрия". Выбор размера сетки профилей в зависимости от масштаба карты и точности приборов - всё давно расписано.
Профильный форум: http://geodesist.ru/forum/forums/Гидрография-и-подводные-съемки.55/
2. Для оптимальной съемки делается сетка перпендикулярных профилей. Соответственно нужен софт для хождения по этой сетке. Эта методика позволяет выловить задержки сигнала (latency, в ваших исследованиях проходит под термином "асинхронность").
3. Влияние latency на батиметрической карте выглядит как изобаты пилообразной формы. Форма пилы четко повторяет последовательность хождения профилей в противоположных направлениях.
4. Самое сложное в съемке, как вы уже заметили - синхронизация данных. Вопреки расхожему мнению, время, идущее в NMEA, не является точным. Это время показывает в какой момент произведено измерение координаты, а в программу строка приходит с некоторым запозданием (зависит от приемника, количества сообщений NMEA, даже от baudrate).
С эхолотом еще сложнее - у него нет точных часов. Поэтому обычно идет привязка данных к системному (компьютерному) времени, а уже в процессе обработки данные сводятся воедино. Мои заметки на эту тему: http://geodesist.ru/forum/threads/obs-и-nav.5446/page-2#post-81473
Подбирая расхождение времени между устройствами, добиваются "сбивки крестов", т.е. одинаковых измерений глубин в пересечениях. Пилообразные изобаты при этом сглаживаются сами собой.
5. Если нет возможности ставить GPS-антенну строго над излучателем - по-хорошему надо записывать истинный курс; для малых судов счислимый из $GPVTG не годится. Зная курс судна и координату антенны, вычисляется координата излучателя (офсет, offset). Но, наверное, антенну поставить над излучателем проще.
6. При измерениях в открытых водах (море, залив) данные эхолота предварительно корректируются на прилив, только после этого можно подгонять latency, сверять кресты и строить изобаты.
Спасибо за замечания и советы. Ознакомлюсь.
УдалитьСсылки добавлю в статью.
Описал ошибки вносимые комплексом:
ОтветитьУдалить(1) и (2) Ошибка привязки данных о глубине к географическим координатам.
(3) Вычисления с плавающей точкой.
Для себя решил проблему синхронизации очень просто.
ОтветитьУдалитьСвязка у меня такая, Gps приемник( )с выходом uart, через конвертер уровней напряжений max 232, подключаем на ВХОД эхолота. И уже с ВЫХОДА эхолота, берем данные в комплексе (позиция, глубина) и направляем в любое устройство( нетбук, кпк, блютуз донгл).
Примечание: использовал GPS-приемник (http://www.wondeproud.com/product_6_2_1.html),только настроил на скорость 4800 бод. Эхолот Humminbird 717,все это дело подключалось через шнурок с переходником к нетбуку или к блютуз свистку HC-05 Bluetooth .
А в общем считаю , что целесообразнее делать так: Ездишь на лодке, собираешь данные на карту памяти с эхолота и GPS используя( http://www.drdepth.se/extras_log.php?l=gb ).
Дома данные обрабатываешь в DrDepth-рисуешь карту, и заливаешь, или в автонавигатор с Ozi CE( в полиэтиленовом герметичном пакете ), или в эхолот (если позволяет эхолот), или в КПК (drdepth,ozi ce ), или на нетбук (windows)(drdepth,ozi,sas planet,google earth).
Да, просто еще один вариант сопряжения двух устройств - GPS и Эхолота.
УдалитьOpenLog подойдет в вашем случае, когда ваш Эхолот (или GPS) может объединить NMEA потоки), а что делать тем, у кого Эхолот и GPS выдает данные только наружу?
Этот комментарий был удален автором.
ОтветитьУдалитьKaternikSPB
ОтветитьУдалитьВот это молодца....
Только недавно напал на Arduino.
Аппаратная часть раскрыта, а о программах то ничего нет.
:-))
А без программ - это бездушные железки.
Вопрос:
Для снятия данных с GPS модуля в формате NMEA для Mega 2560 какую использовали библиотеку ?
Сам читаю (пишу в) UART без библиотеки, универсальный парсер NMEA-сообщений не нужен, там все просто.
УдалитьПишите на почту, все объясню-покажу.
Сейчас создано еще 2 варианта на разном железе: один на заказ сделал с использованием Bluetooth на вывод MUX NMEA, второй - для себя, а то все на соплях было сделано. Нет времени выложить фотосессии с описанием.
С программой помогу, если соберете железо из последних двух вариантов.
Уточню последнюю фразу: последние 2 варианта - это те, которые еще не выложил.
Удалить> Пишите на почту, все объясню-покажу.
УдалитьКак вам написать на почту ? - Адрес закрыт.
Тут кликните на мое имя, зайдете в профиль, там есть ссылка "Адрес эл. почты", если навести курсор, то внизу браузера появится адрес, если кликнуть на ссылку, то запустится почтовая программа.
УдалитьВ раздел "Сайты разработчиков ПО для навигации и моделирования" красным добавил комментарий по DrDepth, добавил ссылку на архив сайта DrDepth.
ОтветитьУдалитьДобавил ссылку по новой программе ReefMaster.
Начал выкладывать новый материал:
ОтветитьУдалитьIV. Новый вариант комплекса на МК с использованием Serial Bluetooth и RS232 Shield
Добавил примеры созданных растровых карт для OziExplorer.
ОтветитьУдалитьПорекомендуйте самый простой и дешевый эхолот с протоколом NMEA0183.
ОтветитьУдалитьНа "ты" пока только с ардуинами. Затеял сделать радиоуправляемую игрушку лодку с эхолотом для батиметрии.
спасибо
С чем я знаком, работал:
УдалитьLowrance M52i S-GPS - уже с GPS в корпусе Эхолота => не нужно покупать GPS-модуль в Китае. По интерфейсному кабелю с эхолота приходят NMEA-сообщения о глубине и от GPS. Эхолот устарел, его не уже не производят, цена примерно 14.5 Круб.
Ну и второй вариант в статье - Garmin Fishfinder 300C, тоже старая модель и уже не выпускается.
опишите, пожалуйста, подробнее как собирать данные, логи?
ОтветитьУдалитьХех, какой вопрос, такой и ответ )
УдалитьДанные приходят по интерфейсам UART в МК, программа на МК принимает эти данные, обрабатывает. Синхронизирует данные от двух устройств и, если все ок, то записывает их в файл на SD карту.