Сегодня расскажем о быстрой разработке IoT-системы, которая предназначена для грузовиков-рефрижераторов. Она помогает наблюдать за температурой в холодильной камере и за дверями грузового отсека.
Работа над проектом разделена на два этапа. Сначала, с использованием Grove IoT Commercial Development Kit, создан прототип, который позволил подтвердить работоспособность системы. После этого прототип был преобразован в решение, пригодное для практического использования.
Основными программными и аппаратными компонентами готового решения стали шлюз Intel для интернета вещей, датчики промышленного класса и Intel System Studio. В процессе работы шлюз, собирающий показания датчиков, генерирует события, основываясь на зарегистрированных изменениях контролируемых параметров. Данные поступают в мобильное приложение, которое позволяет водителю грузовика наблюдать за температурой в холодильной камере, и, реагируя на оповещения, принимать меры, которые позволяют сохранить груз.
Этот проект был впервые показан на IDF 2015, позже – на аналогичном мероприятии в 2016-м году.
Демонстрация готового решения
Разработки в области интернета вещей направлены на оснащение привычных устройств интеллектуальными функциями и возможностями в области связи. На основе информации, собираемой и передаваемой этими устройствами, можно создавать системы, которые, в конечном счёте, повышают качество жизни. Это относится и к нашему проекту, направленному на автоматизацию грузовиков, которые перевозят скоропортящиеся продукты. Мы сосредоточились лишь на одном из возможных аспектов такой автоматизации. А именно, на контроле температуры в холодильнике. Если температура выходит из заданного диапазона, система оповещает водителя, а он может вовремя принять меры для того, чтобы груз не испортился. Это способствует снижению финансовых потерь в сфере перевозок, а значит, наш проект вполне может стать перспективным коммерческим продуктом.
Предварительные сведения
В ходе реализации проекта планировалось построить прототип, а после того, как будет доказана его работоспособность, создать коммерческое решение, которое можно внедрять в автопарках различных масштабов.
Прототип был создан достаточно быстро благодаря Grove IoT Commercial Developer Kit, в который входит компьютер из серии Intel NUC, ПО Intel IoT Gateway Software Suite, набор датчиков и вспомогательных компонентов Grove Starter Kit Plus (производства Seeed). Кроме того, в проекте задействована плата Arduino 101. Обычно так эту плату называют в США, в других странах она известна как Genuino 101.
Компьютер Intel NUC Kit DE3815TYKHE
Плата 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 и датчики, показана ниже.
Прототип
Вот подробности об использованных компонентах.
Основная система:
- Intel NUC Kit DE3815TYKHE.
- Arduino 101.
- USB-кабель A-B для подключения платы Arduino 101 к NUC.
Компоненты из Grove IoT Commercial Developer Kit.
- Base Shield V2 (базовая плата расширения).
- Touch Sensor Module (модуль датчика прикосновения).
- Button Module (модуль кнопки).
- Temperature Sensor Module (датчик температуры)
- Buzzer Module (зуммер).
- Red LED (красный светодиод).
- LCD with RGB Backlight Module (ЖК-дисплей с цветной подсветкой).
Эксперименты
Вот сценарий работы с системой, имитирующий реальную ситуацию. Здесь используется административное приложение и прототип.
- Нажмём на кнопку, которая символизирует открывание дверей.
— Зададим порог срабатывания тревоги при повышении окружающей температуры на 5 градусов.
— В «кабине» включается красный светодиод.
— На ЖК-дисплее отображается текущая температура и состояние двери (открыта), как показано на рисунке ниже.
Отображение температуры в холодильнике и сведений о состоянии дверей - Коснёмся температурного датчика для того, чтобы регистрируемая им температура поднялась на пять градусов.
— Срабатывает зуммер.
— Красный светодиод непрерывно мигает.
— На ЖК-дисплее включается красная подсветка и отображается текущая температура и состояние двери (она всё ещё открыта).
Реакция системы на повышение температуры при открытой двери - Коснёмся датчика прикосновения для того, чтобы сообщить системе, что мы готовы исправить положение. При этом выключится зуммер.
- Нажмём на кнопку, которая имитирует закрывание двери.
— Красный светодиод продолжает мигать до тех пор, пока температура не станет ниже заданного порогового значения.
— ЖК-дисплей показывает температуру и состояние двери (закрыта).
— Когда температура станет ниже порогового значения, мигающий светодиод выключается, на ЖК-дисплее включается подсветка зелёного цвета.
— ЖК-дисплей отображает температуру и состояние дверей (закрыты).
Вот как выглядит журнал наблюдения за температурой в холодильнике в ходе наших экспериментов. Описания событий, расположенные ниже графика, указывают на то, что водителю понадобилось немногим более минуты для того, чтобы отреагировать на нештатную ситуацию, приведшую к росту температуры. В реальности, даже если срок реакции немного увеличится, это будет означать уменьшение потенциальных потерь скоропортящихся продуктов.
Журнал событий
Система в норме
Коммерческое решение
После того, как прототип испытан, пришло время перехода к коммерческому решению. Этот переход начинается с определения того, какие программные и аппаратные компоненты, подходящие для реального использования, соответствуют различным частям прототипа.
Прототип | Коммерческое решение | |
Зуммер | Зуммер из 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), хранит данные, опрашивает датчик температуры, поддерживая актуальность информации.
Шлюз и датчик температуры, демонстрационная версия готового проекта
Перенос приложения на шлюз
Обычно переход к использованию шлюза включает в себя необходимость переработки кода таким образом, чтобы сделать его совместимым с новой системой. В данном случае программирование для прототипа велось на Java, HTML и JavaScript, это сделало переход к готовому решению сравнительно простым. Кроме того, переход упростило и использование одних и тех же библиотек MRAA/UPM на всех стадиях проекта.
Переход к промышленным датчикам
Использование библиотек MRAA и UPM может помочь быстро довести проект до рабочего состояния. Следующие шаги показывают процесс портирования приложения на коммерческую версию продукта.
- Наметьте желаемое промышленное аппаратное обеспечение:
— Определите, нуждается ли поддержка аппаратного обеспечения в дополнительных библиотеках или другом ПО.
— Если необходимо, интегрируйте в систему эти библиотеки и ПО и создаёте системный уровень для развёртывания программного обеспечения проекта.
- После того, как новое аппаратное обеспечение успешно интегрировано в прототип, уберите код, который больше не нужен.
—Используйте существующие уровни абстракции, созданные на фазе работы над прототипом, для того, чтобы установить зависимости решения.
— Внесите изменения, необходимые для поддержки нового аппаратного обеспечения.
- Соберите ПО коммерческой версии, основанное на существующих к данному моменту наработках.
- Выполните установку и тестирование решения с использованием аппаратного обеспечения, предназначенного для коммерческой версии проекта.
Пользовательское приложение
Приложение, копии экрана которого показаны ниже, предназначено для водителя. Оно было создано для замены ЖК-дисплея, светодиода, зуммера и датчика прикосновения из набора Grove. В готовом решении пользовательское приложение устанавливается на мобильное устройство, которое носит водитель. Это позволяет системе легко информировать его о важных событиях, а ему – быстро реагировать на оповещения. В этом примере приложение устроено очень просто, но, при необходимости, его можно легко расширить. В его интерфейсе представлены два индикатора состояния. Они помогают контролировать температуру в холодильной камере и состояние дверей. Здесь же есть пара кнопок – ALERT, кнопка тревоги, и ACKNOWLEDGE, которая позволяет водителю показать, что он увидел оповещение и готов принять меры для сохранения ценного груза.
Главный экран
Оповещение
Ситуация, требующая вмешательства водителя
Настройка подключения к шлюзу
Итоги
Мы рассказали о том, как использовать Grove IoT Commercial Developer Kit для быстрого, простого и недорогого создания прототипа. Программная часть решения, основанная на многофункциональных библиотеках для работы с датчиками, облегчает процесс разработки и обеспечивает высокую совместимость кода, написанного для прототипа, с компонентами коммерческой версии продукта. В прототипе роль шлюза играл компьютер Intel NUC, а в готовом решении использовался шлюз от Intel. Это обеспечило совместимость кода прототипа и готового решения на уровне операционной системы.
Основная цель Intel при работе над данным проектом заключалась в исследовании возможностей по созданию IoT-решений для транспорта. Мы надеемся, что наше исследование поможет развитию схожих инновационных разработок в области интернета вещей.
Дополнительные подробности, касающиеся технической части проекта, можно найти здесь. Код и документация хранятся на GitHub.
Автор: Intel