Для реализации проекта потребуется центральное устройство, которое будет заниматься обработкой все вычислительных процессов. В качестве такого центрального устройства могут выступить следующие системы:
- Бортовой компьютер автомобиля;
- Видеорегистратор;
- Одноплатный компьютер.
Реализовать систему можно внутри бортового компьютера, встроенного в автомобиль. Плюсом данного решения является полный доступ к технической информации об автомобиле, но при этом столкнёмся со следующими проблемами:
- Проблема с подключением устройств видеонаблюдения;
- Проблема с отображением информации для водителя;
- Малая вычислительная мощность бортового компьютера;
- Закрытость системы большинства бортовых компьютеров
Реализация системы на базе видеорегистратора (рис. 4) решает много проблем, связанных с интеграцией с видеокамерой и устройствами вывода, так как они уже автоматически предусмотрены в данном устройстве. Так же плюсом будет малый размер и быстрый доступ к файлам, поскольку они обычно хранятся на съёмных носителях, которые очень легко заполучить. Однако такой подход к решению проблемы обладает следующими минусами:
- Система будет полностью изолирована от автомобиля и работает сама по себе;
- Не имеет возможности подключения дополнительного оборудования;
- Для разработки ПО для системы нужно запросить разрешения у производителя устройства;
- Только звуковой канал оповещения водителя.
Рис. 4 Система на базе видеорегистратора.
Таким образом данная реализация так же не является оптимальной из-за изолированности системы.
В последнее время большую популярность получили одноплатные компьютеры из-за их высокой вычислительной мощности и возможности интеграции с различного рода устройствами. Одноплатные компьютеры так же имеют отрицательные стороны:
- Устанавливается, как отдельный модуль, требует места;
- Требует постоянный источник питания;
- Помимо одноплатного компьютера требуется установка и наличие дополнительных устройств, таких как видеокамеры и мобильный смартфон.
Одноплатные компьютеры обладают своими минусами, но открытость их системы, возможность интеграции с любыми устройствами и высокая производительность делают их оптимальным устройством для решения поставленной задачи.
Таким образом, рассмотрев все возможные варианты было принято решение о реализации системы на базе одноплатного компьютера.
Для реализации системы в первую очередь необходимо выбрать системную её часть. Основой системы, как было написано выше, станет одноплатный компьютер. Современный рынок предлагает обширное количество вариантов в различных ценовых диапазонах, начиная с 20$ и заканчивая моделями с высокой производительностью для решения нетривиальных задач стоимостью более 1000$.
Было решено рассмотреть возможные варианты в ценовом диапазоне от 9000 до 12000 рублей. Лидирующие позиции в данной категории занимают следующие устройства:
- Raspberry Pi [4];
- Cubieboard;
- BeagleBone [5].
Рассмотрим технические характеристики и поддерживаемый функционал устройств.
Raspberry Pi был первым
общедоступным одноплатным компьютером (Рис. 5). У пользователей появилась
возможность по доступной цене получить минимальный функционал, который в
дальнейшем только совершенствовался. Популярность он получил из-за возможности
поддерживать операционные системы семейства Linux. На данный момент это лидирующая по распространению
плата, которую можно приспособить под любую задачу.
Рис. 5. Одноплатный компьютер Raspberry Pi
На данной плате мы можем найти следующие комплектующие:
- GPIO - универсальные порты для работы с любыми устройствами;
- композитный видеовыход;
- аудиовыход 3.5 мм;
- USB;
- Ethernet;
- HDMI;
- microUSB (питание);
- Рабочая частота: 869.0 МГц / 868.42 МГц;
- Версия SDK: 4.54+;
- Процессор: ARM 700 MHz;
- Оперативная память: 512 Мб оперативной памяти;
- Хранение данных: Карта SD 4 Гб.
Крайне широкий функционал и поддержка большого спектра систем делаем Raspberry Pi хорошим вариантом, но недостаток оперативной памяти и возможность работать только с SD картами не очень подходит для нашего проекта.
Cubieboard были представлены пользователям сразу после Raspberry Pi, при этом их компьютеры довольно сильно отставали от
конкурентов в 2012 году. На данный момент существует несколько актуальных
версий данного компьютера, но под ценовую категорию подходит только Cubieboard 3 (Рис. 6).
Рис. 6. Одноплатный компьютер Cubieboard 3.
Рассмотрим его технические характеристики:
- Процессор: SoC AllWinner A20, двухъядерный Cortex-A7, 1ГГЦ;
- Графический процессор: Mali400MP2, OpenGL ES 2.0/1.1, HDMI 1080p@30fps или 720p@60fps;
- Оперативная память: 2ГБ DDR3 480MHz;
- Пользовательская память: NAND 8ГБ + MicroSD;
- SATA: поддержка дисков до 2.5ТБ размером 2.5";
- Питание: 5В постоянного тока (2.5A при подключенном жестком диске), поддержка Li-ion батареи и RTC;
- Сеть: 10/100/1000 Ethernet, Wi-Fi+BT с антенной на плате;
- Разъемы: 2хUSB 2.0 HOST, USB 2.0 OTG, SPDIF, IR, 4хLED 3.5мм Jack;
- 54 контакта подключения: I2S, I2C, SPI, CVBS, LRADC x2,UART, PS2, PWMx2, TS/CSI, IRDA, LINEIN&FMIN&MICIN, TVINx4;
По техническим характеристикам Cubieboard 3 намного превзошёл Raspberry Pi. Он оснащён NAND памятью, имеет возможность работать с SATA диском и обладает требуемым запасом оперативной памяти. Wi-Fi модуль так же находится на плате, что значительно поможет в работе с интегрированными устройствами. Компьютер обладает собственной linux-системой Cubian, которая позиционируется как система, поддерживающая полный функционал данного одноплатного компьютера.
Из всех рассматриваемых устройств данная линейка вышла намного позже
своих конкурентов. Главным функциональным акцентом данных одноплатный
компьютеров (Рис. 7) является работа с большим количеством устройств. Это
достригается за счёт большого количества универсальных портов. Процессор - 1
ГГц Cortex-A8, 512 мб оперативной памяти, Wi-Fi модуль
отсутствует. Компьютер подойдёт отлично для выполнения простых систематических
действий с большим количеством подключаемых устройств, но для разрабатываемого
проекта его технических характеристик не хватит.
Рис. 7. Одноплатный компьютер BeagleBone
Из всех предложенных устройств был выбран Cubieboard 3, как устройство с самыми сильными техническими характеристиками. Есть возможность подключения дополнительного хранилища в виде SATA диска и интеграция с другими элементами системы посредством Wi-Fi [6] канала.
Самыми популярными системами для одноплатных компьютеров сейчас являются Linux-системы. Это открытые системы, из которых можно получить доступ к любой части устройства. Нет смысла использовать сторонние и платные системы, функционал которых ограничен производителем. Для сравнения было выбрано несколько систем, которые будут рассмотрены ниже.
Cubieboard 3 в продаже имеет предустановленную систему Android 4.2 (рис 8.)
Рис. 8 Android 4.2 на Cubieboard 3
Компания создала специализированную систему для одноплатного компьютера,
но в чистом виде установлена именно Android система. Это связано с тем, что в начале Cubieboard 3 использовался в основном как более
продвинутый смартфон и данная система полностью обеспечивала его функционал. Со
временем функционал расширился и система не затрагивает нововведения. Таким
образом много функций, которые появились на 3 версии компьютера эта система не
поддерживает. Android рассчитан на пользование
предустановленными приложениями и функциями, но для разработки он не походит.
Таким образом данная система не подходит в качестве системы серверного
приложения.
Linux-образная
система, которая была разработана специально для данного одноплатного
компьютера (Рис. 6). Имеет простой и понятный пользовательский интерфейс,
поддерживает весь технический функционал одноплатного компьютера и имеет все
функции, присущие семейству Linux.
К сожалению, данная система представлена в виде «пустой» системы, которая не
имеет возможности поддерживать устройства по умолчанию. Таким образом могут
возникнуть проблемы при интеграции с новыми устройствами, такими как мобильные
телефоны или видеокамеры.
Рис.9 Система Cubian.
Одна из самых распространённых систем семейства GNU\Linux. Получила применения как в виде серверной операционной системы, так и пользовательской. Debian имеет самое большой хранилище пакетов среди всех систем семейства, что делает его максимально комфортной для пользователя. Поддерживает все типы архитектур, такие как IBM, Intel, AMD. Для работы с хранилищем используется Advanced Packaging Tool (APT). APT это программа для работы с пакетами в операционной системе. Она помогает устанавливать обновления, скачивать и удалять приложения и утилиты, которые берутся из специального списка, который расположен в интернет репозитории.
На основе данной системы были сформированы такие популярные системы, как Linux mint и Ubuntu
(табл.1), таким образом операционная система имеет базовый функционал и
возможность интеграции с любыми системами своего семейства.
Табл.1 Дистрибутивы, основанные на Debian.
Выбор пал на операционную систему Debian, как систему - основатель всех остальных систем семейства. Она имеет большие возможность в интеграции с внешними устройствами, имеет открытую файловую систему и поддерживается практически всеми процессорными архитектурами, что при необходимости позволит перенести дистрибутив на другой одноплатный компьютер без потери функционала.
Debian - это организация добровольцев, которые посвятили себя разработке свободного программного обеспечения. Эта организация ещё с 1993 года работает над своим проектом - программным дистрибутивом, основанным на ядре linux.
Сам дистрибутив Debian собран из большого количества пакетов программ. Каждый пакет содержит в себе исполняемые файлы, документацию и сопровождающую программу, которая следит за актуальным состоянием пакета.
Для того, что бы получить дистрибутив Debian следует перейти на страницу распространения (#"897239.files/image011.jpg">
Для установки Debian необходим установочный носитель, которым может быть:
- CD-ROM/DVD-ROM/BD-ROM - установка поддерживается для большинства архитектур;
- Сеть - может быть использована для получения требуемых файлов, работает по HTTP или FTP;
- Жёсткий диск - данный метод предусматривает уже установленную другу систему, которая и будет загружать программу установки;
- Система семейства Debian с помощью команды «Debian-installer».
В рамках использования одноплатного компьютера, многие варианты нам просто не подходят. Поэтому решено создавать дистрибутив с операционной системой Debian и загрузчиком для неё на SD карте.
Официальное сообщество Debian
предлагает следующий алгоритм для установки системы (Рис.10).
Рис.10 Алгоритм для установки системы.
Так как на съёмном носителе SD-карте данных до этого не было, мы пропускаем первые шаги. Для создания
загрузочного носителя используем программу Win32 Disk Imager (Рис. 11).
Данное программное обеспечение предоставляется бесплатно и для его
использования требуется операционная система семейства Windows. Создание загрузочного носителя происходит в
операционной системе Windows
10.
Рис. 11 Программа для создания загрузочного носителя Win32 Disk Imager.
С помощью программы создаём установочный дистрибутив системы Debian на SD-карте.
Следующий шаг - установка системы во внутреннюю память одноплатного устройства. Для реализации этого шага потребуется устройство с операционной системой Windows, программа PhoenixSuit, SD-карта и кабель для подключения Cubieboard 3.
Подключаем одноплатный компьютер, предварительно переведя его в FEL режим, и запускаем программу PhoenixSuit (Рис. 12). Проверяем соединение,
выбираем архитектуру на одноплатном компьютере и запускаем.
Рис. 12 Программа PhoenixSuit.
Таким образом формируются загрузочный разделы в NAND памяти на одноплатном компьютере. Теперь внутренняя память готова к установке операционной системы.
Одноплатный компьютер готов к установке операционной системы. Вставляем SD-карту с дистрибутивом в Cubieboard и запускаем его.
Если всё было сделано правильно, система выведет начальный экран
установки операционной системы (Рис. 13).
Рис. 13 Начальный экран установки Debian.
Проходим установку Debian и на выходе получаем установленную систему на одноплатный компьютер. Следующим шагом будет настройка системных служб.
Для корректного функционирования операционной системы потребуется сделать несколько важных настроек:
- Настройка сети
Для стабильного функционирования сети в системе необходимо подгрузить сетевой модуль. Это можно сделать следующим списком команд (Рис. 14).
Рис. 14 Копирование каталога /lib/modules с SD-карты
- Настройка Wi-Fi соединения
Wi-Fi соединение очень важно для
интеграций в проекте. Для его настройки потребуется скопировать файл
/mnt/mmc/etc/modules.conf с SD-карты
в NAND и перезаписать его. Теперь все
необходимые модули подгружаются автоматически. Затем остаётся только
воспользоваться командой «modprobe bcmdhd» и Wi-Fi Сеть настроена.
Для реализации разрабатываемой системы требуется чёткая схема устройств и
их интеграций. На рисунке 15 представлено схематичное представление системы.
Рис. 15 Схематическое представление системы
На данной схеме представлен одноплатный компьютер Cubieboard 3, как центральное устройство всей системы. На нём располагается серверное приложение, которое обрабатывает приходящие данные с видеокамер, результат передаётся по Wi-Fi на мобильное устройство.
В системе действует две основные интеграции:
- Интеграция видеопотока в одноплатный компьютер
- Интеграция потока видео в мобильное приложение
Для реализации первой интеграции потребуется подключить видеокамеры по USB. Приём потока будет осуществляться путём средств библиотеки OpenCV [7]. Вторая интеграция будет осуществляться при помощи API запросов по локальной сети от мобильного приложения на смартфоне к серверному приложению на одноплатном компьютере. Разберём все по порядку.
Для корректной работы подключенных видеокамер требуется установка пакета следующих драйверов: