Проекты на основе Intel Galileo и Intel Edison в основном представляют собой прототипы устройств. Часто на этом и заканчивается. В данной статье будет рассмотрен полный путь от прототипа до промышленного решения на основе Intel Gateway. Это будет система для контроля температуры внутри фургона.
Этот проект преследует две цели. Первая — это создание работающей модели, основанной на наборе Intel IoT Commercial Developer Kit с дополнительными сенсорами. И вторая — это последующий переход к масштабируемому промышленному решению, в котором используется коммерческий шлюз (Gateway), промышленные сенсоры, McAfee Security и платформа Wind River. Разрабатываемый нами продукт предназначен для транспортного сектора, и его цель следить за состоянием внутри фургона, перевозящего скоропортящиеся продукты и предупреждать водителя, если температура превышает заданный порог.
Работающий прототип для доказательства работоспособности идеи мы построим на основе платы Intel Galileo с использованием базового шилда и сенсоров из набора Grove Seeed Starter Kit Plus.
К концу статьи вы увидите быстрый и легкий переход от прототипа к промышленному решению, показывающий, как можно быстро подключить оборудование к ОС Wind River. Использование предварительно скомпилированных модулей, как и RPM, помогают убрать ненужные загрузки, настройку ОС и определение необходимых библиотек, чтобы проект заработал.
На фото пример промышленного шлюза. Он небольшого размера и может уместиться на ладони.
Сценарий использования
Наша команда разработчиков была сформирована, чтобы продемонстрировать возможности набора Intel IoT Commercial Developer Kit и решения Intel IoT Commercial Gateways. Мы решили сфокусироваться на транспорте, который перевозит скоропортящиеся продукты.
Был выбран именно этот проект, так как есть потенциальная возможность подобных решений на рынке. В то время как наш проект имеет только базовую функциональность, он так же показывает, что можно добавить дополнительные возможности, например соединение с вебом, облачными сервисами, удалённый мониторинг и другие необходимые компоненты.
После определения основной области применения, команда перечислила потенциальные возможности для прототипа и продукта. Были предложены различные идеи, такие как отслеживание состояния задней двери, температуры внутри фургона, предупреждение о смене их состояний и значений, онлайн приложение для просмотра данных и вывод информации в кабине водителя.
Возможности прототипа, построенного на основе Intel IoT Commercial Developer Kit, определялись сенсорами, которые входили в набор Grove Seeed Sensor kit. Поэтому всю функциональность надо было реализовать с использованием этого набора.
Проект в Intel XDK для интерфейса на Microsoft Surface Pro 3:
Прототип с использованием Commercial Developer Kit
Мы разделили проект на три ключевые области:
- Желаемый интерфейс пользователя:
- Команда разработки начала работать над схемой и дизайном пользовательского интерфейса.
- Интерфейсы:
- Мы начали работать над тем, что будет использоваться в конечном решении.
- Мы понимали, что нам надо будет делать изменения для конечного интегрированного промышленного решения.
- Сенсоры для прототипа:
- Создание работающего решения с сенсорами Grove Sensors и использование библиотек UPM и MRAA для быстрой разработки.
- Это позволило нам сделать макет с датчиками для команды пользовательского интерфейса, чтобы они могли его использовать при разработке.
Макет с сенсорами:
Разделив проект, мы смогли быстрее пройти фазу подтверждения концепта, используя наши способности там, где они были необходимы. Пользовательский интерфейс был важен и требовал много времени для проектирования и реализации. Его разработка была начата рано, и поэтому мы были уверены, что он будет сделан вовремя.
В целом мы смогли упростить выбор сенсоров, так как знали, что датчик двери должен быть простым. Это позволило сильнее сфокусироваться на правильном использовании датчика температуры для тестового масштаба и позднее для промышленного.
Используя набор Grove Sensor Kit, мы смогли быстро создать прототип с работающими сенсорами для команды интерфейса. Это позволило им быстрее разработать дизайн и расположение элементов, что создало основу для окончательного примера использования.
Пример использования основывался на следующем сценарии:
1. Нажать кнопку (симуляция открытия двери).
- Установить границу температуры на 5 градусов выше окружающей среды.
- Включается красная лампа в кабине.
- На ЖК-экране появляется текущая температура и статус двери — «открыта».
2. Дотронуться до датчика температуры, чтобы он нагрелся.
3. Температура поднимется на 5 градусов:
- Звучит звуковой сигнал.
- Красная лампа непрерывно мигает.
- ЖК-экран становится красным, выводится текущая температура и статус двери — «отрыта».
4. Прикоснуться к сенсорной кнопке:
- Звуковой сигнал выключается.
5. Нажать кнопку, чтобы закрыть дверь:
- Красная лампа продолжает мигать, пока температура не опустится ниже порога.
- ЖК-экран: предупреждение о высокой температуре. Состояние двери — «закрыта».
- Когда температура достигает нижний границы, выключается мигающая красная лампа и ЖК-экран начинает подсвечиваться зелёным.
- ЖК-экран: температура, состояние двери – «закрыта».
В этом примере промоделировано уменьшение потенциальных потерь продуктов, которые чувствительны к температуре, отслеживая температуру в фургоне и предупреждая водителя при необходимости.
Просмотр данных с датчика температуры:
Основной вид системы:
Следующая таблица показывает используемые сенсоры в прототипе и коммерческом продукте.
Developer kit | Commercial kit | |
Пищалка | Grove Buzzer | Сигнал на телефоне (веб-интерфейс или приложение) |
ЖК-экран | Grove LCD panel | Экран на телефоне (веб-интерфейс или приложение) |
Красный светодиод | Grove Kit LED | Свет на телефоне (веб-интерфейс или приложение) |
Кнопка | Grove Kit Button | Промышленный магнитный датчик |
Датчик касания | Grove Kit Touch Sensor | Нажатие на телефоне (веб-интерфейс или приложение) |
Датчик температуры | Grove Kit Temp Sensor | Коммерческий датчик температуры |
Источник тепла | Палец | Галогеновая лампа на 20 Вт |
Шлюз подключения | Плата Galileo с Arduino шилдом | Intel Industrial Gateway |
Целевое коммерческое решение
Имея прототип, основанный на Intel IoT Commercial Developer Kit, необходимо определить, как переходить к коммерческому решению. Есть много коммерческих шлюзов и каждый немного отличается в зависимости от промышленного применения. Нам требовалось наличие портов ввода-вывода для подключения сенсоров.
В этом проекте в качестве шлюза был выбран Intel IoT Commercial Gateway, так как он обладает необходимыми портами ввода-вывода и имеет достаточную вычислительную мощность для нашего коммерческого использования.
Мы посчитали необходимым использование проводного датчика температуры Modbus для надежного подключения и получения данных каждые несколько секунд. Все соединения на устройстве сделаны проводами или через локальную сеть. Стандартные библиотеки MRAA и UPM были использованы без каких-либо изменений.
Шлюз работает как вебсервер для сохранённых данных, и он также выполняет обращения к температурному датчику, чтобы получать новые значения. Для этого вызов curl обновляет значение непосредственно на вебсервере, получая температуру с датчика. Получение значения температуры реализовано на языке C с использованием библиотеки libmodbus.
Шлюз, установленный вместе с датчиком температуры в демонстрационной модели:
Перенос кода на шлюз
Обычно переход на коммерческий шлюз приводит к переписыванию кода, чтобы он стал совместим с теми сервисами, которые доступны в системе. В данном случае программа для прототипа была написана на Python, HTML и JavaScript, что сделало простым переход к коммерческому варианту. Не было никаких проблем заставить работать код, так как используются те же библиотеки MRAA и UPM.
Переход от сенсоров Grove к промышленным сенсорам
Шаги для перехода к коммерческому решению:
- Определите желаемое промышленное оборудование. Если требуются дополнительные библиотеки или программы, подключите их, создав дополнительный WR-слой.
- Если коммерческое оборудование работает, интегрируйте его в существующее решение, убрав код от предыдущего. Используйте существующие слои, которые вы создали в процессе реализации прототипа, чтобы установить зависимости. Сделайте необходимые изменения для нового оборудования.
- Возьмите старые и новые слои и встройте их в WR runtime.
Завершение создания продукта на Intel Gateway – установка и тестирование
Рассмотрим добавление Intel Galileo к сети Gateway.
За время, которое нам было выделено, мы смогли использовать плату Galileo Gen 2 как контроллер сенсоров, но всё же рекомендуется использовать контроллер промышленного уровня. Соединить Galileo и шлюз можно при помощи Ethernet кабеля. Так как сетевой интерфейс (eth0) на шлюзе сконфигурирован для доступа к WAN, потребуются дополнительные шаги для настройки. Назначение статических IP адресов обоим устройствам сработает, но так как на шлюзе есть DHCP, то лучше использовать его, чтобы использовать автоматическую настройку Galileo.
На шлюзе сделайте следующее:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
Добавьте в
/etc/dhcp/dhcpd.conf
:subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.120;
option routers 10.0.0.1;
}
Запустите dhcpd для DHCP сервера. На Galileo, возможно потребуется опустить и поднять интерфейс снова.
ifconfig enp0s20f6 down
ifconfig enp0s20f6 up
Проверьте работоспособность при помощи команды ping.
Конфигурационные шаги, приведённые выше, не сохранятся после перезагрузки системы и потребуются снова, если шлюз будет перезапущен. Чтобы сделать эти настройки постоянными, выполните следующие шаги:
На шлюзе измените WAN интерфейс в
/etc/config/network
:config interface ‘wan’
option ifname ‘eth0’
option proto ‘static’
option ipaddr ’10.0.0.1’
option netmask ‘255.255.255.0’
Включите автозапуск dhcpd на eth0 командой:
systemctl enable dhcpd.service
Заметьте, что перевод интерфейса в статический режим означает, что шлюз не может быть использован для подключения к WAN с использованием eth0 без отмены сделанных ранее шагов. Дополнительно проброс и маршрутизация портов между Wi-Fi сетью и eth0 будет включена по умолчанию.