[Перевод] IoT-решение для транспорта: путь от идеи к производству

Сегодня расскажем о быстрой разработке IoT-системы, которая предназначена для грузовиков-рефрижераторов. Она помогает наблюдать за температурой в холодильной камере и за дверями грузового отсека.

Работа над проектом разделена на два этапа. Сначала, с использованием Grove IoT Commercial Development Kit, создан прототип, который позволил подтвердить работоспособность системы. После этого прототип был преобразован в решение, пригодное для практического использования.

1b7e7f342a0a4c08996fb3ce2303cc39.jpg


Основными программными и аппаратными компонентами готового решения стали шлюз Intel для интернета вещей, датчики промышленного класса и Intel System Studio. В процессе работы шлюз, собирающий показания датчиков, генерирует события, основываясь на зарегистрированных изменениях контролируемых параметров. Данные поступают в мобильное приложение, которое позволяет водителю грузовика наблюдать за температурой в холодильной камере, и, реагируя на оповещения, принимать меры, которые позволяют сохранить груз.

Этот проект был впервые показан на IDF 2015, позже — на аналогичном мероприятии в 2016-м году.

41114b0b4f5d4d38a5cd6de9428ed9a7.png
Демонстрация готового решения

Разработки в области интернета вещей направлены на оснащение привычных устройств интеллектуальными функциями и возможностями в области связи. На основе информации, собираемой и передаваемой этими устройствами, можно создавать системы, которые, в конечном счёте, повышают качество жизни. Это относится и к нашему проекту, направленному на автоматизацию грузовиков, которые перевозят скоропортящиеся продукты. Мы сосредоточились лишь на одном из возможных аспектов такой автоматизации. А именно, на контроле температуры в холодильнике. Если температура выходит из заданного диапазона, система оповещает водителя, а он может вовремя принять меры для того, чтобы груз не испортился. Это способствует снижению финансовых потерь в сфере перевозок, а значит, наш проект вполне может стать перспективным коммерческим продуктом.

Предварительные сведения


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

Прототип был создан достаточно быстро благодаря Grove IoT Commercial Developer Kit, в который входит компьютер из серии Intel NUC, ПО Intel IoT Gateway Software Suite, набор датчиков и вспомогательных компонентов Grove Starter Kit Plus (производства Seeed). Кроме того, в проекте задействована плата Arduino 101. Обычно так эту плату называют в США, в других странах она известна как Genuino 101.

7b4020fd1280341155489d4bf1d339b6.jpg
Компьютер Intel NUC Kit DE3815TYKHE

06f4c13991878ddb98215b1a9342e38b.jpg
Плата Arduino 101

Вот характеристики компьютера и платы.

Intel NUC Kit DE3815TYKHE
Arduino 101
Процессор / Микроконтроллер
Процессор Intel Atom E3815 (512 Кб кэш-памяти, 1.46 ГГц)
Вычислительный модуль Intel Curie, 32 МГц
Память
До 8 Гб DDR3L-1066 SODIMM
196 Кб флэш-памяти
24 KB SRAM
Сетевые возможности, порты ввода-вывода
Интегрированный сетевой контроллер 10/100/1000 Мбит/с
14 цифровых и 6 аналоговых выводов
Размеры
190 мм x 116 мм x 40 мм
68.6 мм x 53.4 мм


Мы считаем, что подход «от идеи к производству», который применён при работе над данным проектом, ценен тем, что позволяет сначала построить прототип, затратив на него сравнительно немного средств и времени, после чего быстро перейти к решению, пригодному для коммерческого использования. Применение заранее собранной ОС и готовых RPM-пакетов позволяет избежать ненужных затрат времени на загрузку дополнительных материалов, на настройку ОС и поиск библиотек, необходимых для того, чтобы заставить работать программную часть решения.

Глобальная цель проекта заключается в том, чтобы пополнить имеющиеся знания в области похожих инновационных решений, которые создаются и выводятся на рынок. В то время, как в нашу разработку заложена лишь базовая функциональность, её архитектура достаточно гибка и расширяема, что позволяет добавить в неё множество дополнительных возможностей. Это касается аппаратных компонентов, программных функций, взаимодействия с облачными службами. Например, к существующему функционалу сравнительно просто добавить возможность удалённого мониторинга состояния рефрижератора.

На ранних стадиях проекта команда определилась с потенциальными функциями прототипа и готового продукта. Среди них — сбор сведений о состоянии погрузочных дверей (открыты они или закрыты), данных о температуре в холодильнике. На основе собранных данных система должна оповещать водителя об опасных для груза ситуациях с помощью мобильного приложения.

Начальный этап работы включает в себя создание прототипа. Для того, чтобы пройти этот этап без лишних затрат времени и средств, команда решила ограничить набор материалов для прототипирования содержимым Grove IoT Commercial Developer Kit.

Прототип


Для того, чтобы обеспечить разделение обязанностей и организовать эффективную работу над проектом, команда разбила решение на три основных компонента:

  • Пользовательский интерфейс. Часть команды приступила к работе над пользовательским интерфейсом, который планировалось использовать и в прототипе, и в готовом продукте.
  • Бизнес-логика приложения. Ещё одна часть команды начала работать над приложением прототипа. В ходе работы стало ясно, что, при переходе к коммерческому решению, могут понадобиться изменения в коде.
  • Аппаратная часть решения. Ещё одна часть команды занялась аппаратной частью решения. В частности, вопросом взаимодействия датчиков и основной системы. В ходе работы использовались библиотеки UPM/MRAA. Это позволило сделать всё максимально быстро.


Разделение проекта на несколько частей позволило быстрее пройти по этапам разработки прототипа, нежели без такого разделения, оптимально использовав набор навыков, имеющихся у членов команды. В частности, хотя без пользовательского интерфейса на ранних стадиях проекта можно было бы и обойтись, ожидалось, что на его разработку, в сравнении с другими задачами, понадобится больше всего времени. Раннее начало работы позволило, к более поздним этапам проекта, получить практически готовый пользовательский интерфейс.

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

Благодаря использованию датчиков из набора Grove, команда смогла быстро создать прототип, полноценно имитирующий систему. Группа, занимающаяся пользовательским интерфейсом, смогла работать с прототипом. Этот подход, кроме прочего, позволил быстро создать макет интерфейса и элементы дизайна. Прототип, в программном и аппаратном смысле, стал основой для готового продукта. Конфигурация прототипа, в котором задействованы Intel NUC, плата Arduino 101 и датчики, показана ниже.

7e2efc29d7093138e1559d55f66de6e8.jpg
Прототип

Вот подробности об использованных компонентах.

Основная система:


Компоненты из Grove IoT Commercial Developer Kit.

Эксперименты


Вот сценарий работы с системой, имитирующий реальную ситуацию. Здесь используется административное приложение и прототип.

  1. Нажмём на кнопку, которая символизирует открывание дверей.

    — Зададим порог срабатывания тревоги при повышении окружающей температуры на 5 градусов.
    — В «кабине» включается красный светодиод.
    — На ЖК-дисплее отображается текущая температура и состояние двери (открыта), как показано на рисунке ниже.

    c1e96b0926d5d266e17d468ab4980595.png
    Отображение температуры в холодильнике и сведений о состоянии дверей

  2. Коснёмся температурного датчика для того, чтобы регистрируемая им температура поднялась на пять градусов.

    — Срабатывает зуммер.
    — Красный светодиод непрерывно мигает.
    — На ЖК-дисплее включается красная подсветка и отображается текущая температура и состояние двери (она всё ещё открыта).

    b745ba98321ef03dd9fb8578398abe09.png
    Реакция системы на повышение температуры при открытой двери

  3. Коснёмся датчика прикосновения для того, чтобы сообщить системе, что мы готовы исправить положение. При этом выключится зуммер.
  4. Нажмём на кнопку, которая имитирует закрывание двери.

    — Красный светодиод продолжает мигать до тех пор, пока температура не станет ниже заданного порогового значения.

    — ЖК-дисплей показывает температуру и состояние двери (закрыта).

    — Когда температура станет ниже порогового значения, мигающий светодиод выключается, на ЖК-дисплее включается подсветка зелёного цвета.

    — ЖК-дисплей отображает температуру и состояние дверей (закрыты).


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

f9ce9c75855cb2dca8029e7d6941ace1.png
Журнал событий

d76475cf4fe4d81dad7546565d482316.png
Система в норме

Коммерческое решение


После того, как прототип испытан, пришло время перехода к коммерческому решению. Этот переход начинается с определения того, какие программные и аппаратные компоненты, подходящие для реального использования, соответствуют различным частям прототипа.

Прототип
Коммерческое решение
Зуммер
Зуммер из Grove Kit
Оповещение на телефоне (мобильное приложение)
ЖК-дисплей
ЖК-дисплей Grove
Экран телефона (мобильное приложение)
Красный светодиод
Светодиод из Grove Kit
Программируемый светодиод телефона (мобильное приложение)
Кнопка
Модуль кнопки из Grove Kit
Промышленный магнитный датчик открывания двери
Датчик прикосновения
Датчик прикосновения из Grove Kit
Сенсорный экран телефона (мобильное приложение)
Датчик температур
Датчик температуры из Grove Kit
Промышленный датчик температуры
Источник тепла
Тепло человека, касающегося датчика
20-ваттный точечный галогеновый светильник
Шлюз
Компьютер Intel NUC и плата Arduino 101
Шлюз Intel для IoT


В продаже имеется множество шлюзов, они достаточно разнообразны, что позволяет выбрать устройство, подходящее для любой сферы применения. Ключевой возможностью шлюза, необходимой для данного проекта, был широкий диапазон доступных способов ввода-вывода. Это — и требование текущей версии проекта, связанное с подключением датчиков, и залог возможностей его расширения в будущем. В нашем случае для производственной фазы проекта был выбран шлюз Intel для интернета вещей. Поддерживаемые им способы ввода-вывода и его вычислительные возможности были признаны достаточными для целей коммерческого использования.

Для сбора сведений о температуре, который производится с интервалом в несколько секунд, был выбран проводной датчик Comet, поддерживающий протокол Modbus. В целом, взаимодействие с датчиками осуществляется либо путём их прямого подключения к шлюзу, либо, для датчиков, обладающих расширенными возможностями, по сети. В проекте использованы стандартные библиотеки MRAA/UPM, в них не вносили какие-либо изменения. Библиотека UPM для Java использует libmodbus для чтения данных с температурного датчика.

Шлюз работает как веб-сервер (Tomcat), хранит данные, опрашивает датчик температуры, поддерживая актуальность информации.

c670444d6d9d3b0e90a02b33cf8f194f.png
Шлюз и датчик температуры, демонстрационная версия готового проекта

Перенос приложения на шлюз


Обычно переход к использованию шлюза включает в себя необходимость переработки кода таким образом, чтобы сделать его совместимым с новой системой. В данном случае программирование для прототипа велось на Java, HTML и JavaScript, это сделало переход к готовому решению сравнительно простым. Кроме того, переход упростило и использование одних и тех же библиотек MRAA/UPM на всех стадиях проекта.

Переход к промышленным датчикам


Использование библиотек MRAA и UPM может помочь быстро довести проект до рабочего состояния. Следующие шаги показывают процесс портирования приложения на коммерческую версию продукта.

  1. Наметьте желаемое промышленное аппаратное обеспечение:

    — Определите, нуждается ли поддержка аппаратного обеспечения в дополнительных библиотеках или другом ПО.

    — Если необходимо, интегрируйте в систему эти библиотеки и ПО и создаёте системный уровень для развёртывания программного обеспечения проекта.

  2. После того, как новое аппаратное обеспечение успешно интегрировано в прототип, уберите код, который больше не нужен.

    —Используйте существующие уровни абстракции, созданные на фазе работы над прототипом, для того, чтобы установить зависимости решения.

    — Внесите изменения, необходимые для поддержки нового аппаратного обеспечения.

  3. Соберите ПО коммерческой версии, основанное на существующих к данному моменту наработках.
  4. Выполните установку и тестирование решения с использованием аппаратного обеспечения, предназначенного для коммерческой версии проекта.


Пользовательское приложение


Приложение, копии экрана которого показаны ниже, предназначено для водителя. Оно было создано для замены ЖК-дисплея, светодиода, зуммера и датчика прикосновения из набора Grove. В готовом решении пользовательское приложение устанавливается на мобильное устройство, которое носит водитель. Это позволяет системе легко информировать его о важных событиях, а ему — быстро реагировать на оповещения. В этом примере приложение устроено очень просто, но, при необходимости, его можно легко расширить. В его интерфейсе представлены два индикатора состояния. Они помогают контролировать температуру в холодильной камере и состояние дверей. Здесь же есть пара кнопок — ALERT, кнопка тревоги, и ACKNOWLEDGE, которая позволяет водителю показать, что он увидел оповещение и готов принять меры для сохранения ценного груза.

ef6d5b4b645c1c3e22b2262a003439fe.png
Главный экран

22e10a47f42e946309c0dca58fd85880.png
Оповещение

363515660c8d1fe66a09dafc9498cc7b.png
Ситуация, требующая вмешательства водителя

8451100c4507fbc64e5231155f55eea0.png
Настройка подключения к шлюзу

Итоги


Мы рассказали о том, как использовать Grove IoT Commercial Developer Kit для быстрого, простого и недорогого создания прототипа. Программная часть решения, основанная на многофункциональных библиотеках для работы с датчиками, облегчает процесс разработки и обеспечивает высокую совместимость кода, написанного для прототипа, с компонентами коммерческой версии продукта. В прототипе роль шлюза играл компьютер Intel NUC, а в готовом решении использовался шлюз от Intel. Это обеспечило совместимость кода прототипа и готового решения на уровне операционной системы.

Основная цель Intel при работе над данным проектом заключалась в исследовании возможностей по созданию IoT-решений для транспорта. Мы надеемся, что наше исследование поможет развитию схожих инновационных разработок в области интернета вещей.

Дополнительные подробности, касающиеся технической части проекта, можно найти здесь. Код и документация хранятся на GitHub.

© Geektimes