Все «тайны» настройки софта для модулей и периферии OpenCPN

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Цикл статей

После публикации статьи Использование OpenCPN для автоматизации производства / Хабр (habr.com) в личной почте были вопросы по настройке программного обеспечения на собранном устройстве.

В той статье были даны ключевые ссылки на рабочий в плане TS, LCD и emmc (тачпанели, экрана и встроенной памяти) имидж Debian Linux. И ссылки на строчки открытого кода, которые достаточны для опытного специалиста с избытком времени на изучение чужого кода.

Там же подробно было показан один из возможных способов механической сборки компонентов OLIMEX LTD - OLinuXino Arduino Maple Pinguino ARM Open Source Hardware Development Boards. Все компоненты этой компании идут с подробным открытым описанием как необходимого программного обеспечения, так и с полной открытой публикацией всего дизайна железа. То есть любой желающий может разработать, изготовить и заказать на любом заводе свою собственную интегрированную плату взяв за основу разведенные платы Olimex.

В этой статье будут более детYально и последовательно приведены все необходимые конфигурации как самого имиджа Linux, так и необходимых библиотек для OpenCPN и для новых плугинов, о которых я рассказывал в предыдущей статье.

Настройки имиджа Linux

Мы используем Olimexino-MICRO A20. На нашей плате есть память emmc и у нас уже подключён экран LCD через кабель IDC40. На сайте производителя есть кабели длинной 6 см, 10 см и 15 см. Они стоят не дорого и можно купить сразу 3 кабеля и по месту подобрать тот который вам подходит. Либо попробовать использовать кабель от старых настольных PC, которым подключались жесткие диски до эпохи SATA.

Для активизации LCD мы идем с правами root в каталог /root. Пароли по умолчанию в имидже Olimex Debian Linux - olimex. Изначально настроены два пользователя - root и olimex. Оба с одинаковым паролем - olimex. В каталоге мы запускаем скрипт настройки LCD, который открывает меню, где и можно выбрать тип вашего LCD.

./change_display.sh

Я предпочёл вначале сделать все предварительные настройки на SD карте, с целью сохранения загрузочного имиджа на всякий случай. Но вы можете на этом этапе перейти на работу со встроенной emmc памяти.

./emmc.sh

Расширять полученную рабочую партицию мне не пришлось, скрипт все делает автоматически. Дождавшись завершения работы скрипта, можно выключить питание устройства.

poweroff

Вытащить SD карту и путем нажатия кнопки ресет либо путём включения и выключения штекера питания включить устройство. Примерно через 30 секунд загрузка должна завершится и вы увидите X десктоп на своей LCD панели. Если вам необходимы манипуляции с загрузчиком и вы хотите видеть процесс загрузки ядра, подключите до включения устройства дополнительный HDMI монитор.

Библиотеки необходимые для OpenCPN 4.0

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

git clone https://github.com/OpenCPN/OpenCPN

OpenCPN/OpenCPN: A concise ChartPlotter/Navigator. A cross-platform ship-borne GUI application supporting * GPS/GPDS Postition Input * BSB Raster Chart Display * S57 Vector ENChart Display * AIS Input Decoding * Waypoint Autopilot Navigation (github.com)

Для нашей версии ядра крайняя версия OpenCPN, которая собирается без проблем это 4.1, но мы будем использовать версию 4.0.

cd OpenCPN
git checkout v4.0.0

Для компиляции OpenCPN нам нужны следующие библиотеки и пакеты

По сути в списке достаточно оставить только одноименные пакеты с суффиксом -dev, так как сами библиотеки поставятся автоматически, но я привет те команды, которые я использовал.

sudo apt-get install cmake build-essential libwxbase3.0-0 libwxbase3.0-dev 
sudo apt-get install libwxgtk3.0-dev libwxgtk3.0
sudo apt-get install libcairo2-dev libcairo2
sudo apt-get install portaudio19-dev
sudo apt-get install curl-dev curl libcurl libcurl4-openssl-dev
sudo apt-get install libpangocairo-1.0-0 libpango libpango1.0-dev
sudo apt-get install libsdl-pango-dev pkg-config
sudo apt-get install libpangomm-1.4-dev libpangox-1.0-dev
sudo apt-get install libgtk-pixbuf2.0-0 libgtk-pixbuf libgtkpixbuf
sudo apt-get install libgtkextra-dev libgtk-3.0 libgtk3.0-cil-dev
sudo apt-get install liblzma-dev libarchive-dev libzip2 lbzip2 libbz2-dev
sudo apt-get install libexif-dev libexif-gtk-dev libelf-dev
sudo apt-get install gettext libtinyxml2-dev

Не все эти библиотеки нужны, кой-где возможны ошибки в написании. Но с помощью следующей команды можно найти правильное название.

sudo apt-cashe search libtinyx

Дополнительные библиотеки

Пару библиотек для этого проекта я собрал самостоятельно. Стоковая версия OpenCPN не подключается к базе данных MySQL, поэтому потребовались эти доработки. Склонировал automake-1.9 и mysqlcppapi-2.0.0. При сборке последней пришлось поправить 1 или 2 файла исходного кода, так как мы по умолчанию используем старый компилятор.

При желании можно собрать и свою версию libwxgtk3.0. Я это сделал, чтоб убедится что все зависимости установлены.

В старой версии OpenCPN работа с прогнозами погоды была не такая продвинутая как в zygrib_7. Поэтому можно собрать и использовать дополнительную программу, а можно доработать встроенный плугин OpenCPN для разбора файлов прогноза. В итоге у вас из исходников должно получиться 2 deb пакета:

zygrib-maps_7.0.0-1_all.deb
zygrib_7.0.0-1_armhf.deb

Библиотеки необходимые для подключения принтера этикеток Zebra GK420d

После установки следующих библиотек и настройки cups Zebra GK420d cтал печатать без доработки исходного кода. При не правильной настройке драйвера или размера этикетки принтер сообщает об ошибке превышения отступов.

sudo apt-get install cups foomatic-db-compressed-ppds cups-pdf smbclient xpp
sudo apt-get install ghostscript-x printer-driver-gutenprint
sudo apt-get install cups-browsed font-droid libpaper-utils

В wxWidget в библиотеке печати прошито намертво приложение evince с характерными для него ключами. Эта команда хранит свои параметры в бинарном формате в каталоге:

/home/olimex/.local/share/gvfs-metadata

Это стандартное хранилище для gnome, но не для нашего облегчённого оконного менеджера - lxde.

Автостарт в lxde

Кстати, если вам нужно настроить автостарт для этой среды, нужно редактировать этот файл:

/home/olimex/.config/lxsession/LXDE/autostart

Либо скопировать desktop файл из каталога /usr/share/application/ в каталог, как в примере ниже:

/home/olimex/.config/autostart/LXinput-setup.desktop

Настройка lp

Я использовал для распечатки команду lp, которую можно настроить на заданный тип принтера из командной строки. Для этого нужно обновить альтернативные программы и изменить содержание файла /home/olimex/.config/mimeapps.list

application/pdf=pdf.desktop

на

application/pdf=lp.desktop

Файл /usr/share/application/lp.desktop получается копированием файла xpdf.desktop путём замены строчки на Exec=lp. Параметр имя в этом файле тоже надо поменять: Name=lp

Отступление про то в чём я мало разбираюсь

Есть вариант изготовления своей собственной платы периферии и стандартного модуля Olimex, подключаемого по шине расширения. В механическом плане это примерно плюс 5 мм -10 мм к толщине алюминиевого профиля необходимого для тачпанели и LCD (надеюсь что меня поправят опытные механики-электроники). Все конечно зависит от соединений плат внутри корпуса. Если взять с запасом на неудачные толстые кабели, то в целом 15 мм достаточно с запасом для интеграции всех готовых Olimex плат внутри металлического корпуса. Итого толщина профиля должна быть между 24 мм и 40 мм.

Примерно 30 лет назад, мы все в МИЭТ (год основания 1965) сдавали курсовик по начерталке на тему изготовления корпуса стандартного электронного устройства. Вероятно, технологии которые я использую для корпуса устройства, сопоставимы с возрастом моей новой яхты. East Anglian MkII изготовленной из дерева в Англии в 1961 году. Фотографии данного класса яхт есть в предыдущей стататье. Естественно у меня также имеются все оригинальные полные чертежи этой яхты, сделанной на заказ. Таким образом конструкция этой яхты, как и дизайн моего навигатора является Open-source hardware (OSH).

East Anglian MkII
East Anglian MkII

Уверен что в ближайшие годы Olimex найдет способ использовать микропроцессор с открытым дизайном, если такой появится на рынке. Существуют с 2000 года бесплатные программные продукты для дизайна микропроцессоров. Например, Static Free Software Home Page. В этом проекте мы с коллегами участвовали как русскоязычные тестеры и переводчики документации. И тогда веский аргумент о полной недоступности открытого во всех смыслах микропроцессора (включая устройство ядра) уйдет в прошлое. Предположительно говорю о ядре RISC-V. IMHO останутся вопросы по графическим сопроцессорам OpenGL, но со временем и их дизайн будет открыт.

Другие статьи на тему автоматизации яхтинга своими силами:

Использование OpenCPN для автоматизации производства / Хабр (habr.com)
IT техническая сторона яхтинга / Хабр (habr.com)
Шпаргалка, которая нужна на яхте / Хабр (habr.com)
IT Релокация на яхте. Из Швеции в Испанию / Хабр (habr.com)

Источник: https://habr.com/ru/post/577404/


Интересные статьи

Интересные статьи

Сегодня мы займёмся некой функцией, которая включена по умолчанию на большинстве платформ Cisco IOS. Преследуемых целей две: встать на грабли, а потом выяснить их модель (производитель уже известен).
С развитием моей веб-студии и ростом количества проектов, мне, как руководителю проектов, задачи стало выполнять сложнее. Сложнее стало и успевать за всем следить: что-то удалось делегировать, но все-...
Компания «Деловой разговор» — Титановый партнер 3СХ — осуществила расширенную интеграцию IP-АТС 3CX с Битрикс 24. Ранее уже существовали отдельные модули, решающие конкретные задачи, напр...
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Компании переполнили рынок товаров и услуг предложениями. Разнообразие наблюдается не только в офлайне, но и в интернете. Достаточно вбить в поисковик любой запрос, чтобы получить подтверждение насыще...