Сегодня расскажем о быстрой разработке 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
Вот характеристики компьютера и платы.
Мы считаем, что подход «от идеи к производству», который применён при работе над данным проектом, ценен тем, что позволяет сначала построить прототип, затратив на него сравнительно немного средств и времени, после чего быстро перейти к решению, пригодному для коммерческого использования. Применение заранее собранной ОС и готовых RPM-пакетов позволяет избежать ненужных затрат времени на загрузку дополнительных материалов, на настройку ОС и поиск библиотек, необходимых для того, чтобы заставить работать программную часть решения.
Глобальная цель проекта заключается в том, чтобы пополнить имеющиеся знания в области похожих инновационных решений, которые создаются и выводятся на рынок. В то время, как в нашу разработку заложена лишь базовая функциональность, её архитектура достаточно гибка и расширяема, что позволяет добавить в неё множество дополнительных возможностей. Это касается аппаратных компонентов, программных функций, взаимодействия с облачными службами. Например, к существующему функционалу сравнительно просто добавить возможность удалённого мониторинга состояния рефрижератора.
На ранних стадиях проекта команда определилась с потенциальными функциями прототипа и готового продукта. Среди них – сбор сведений о состоянии погрузочных дверей (открыты они или закрыты), данных о температуре в холодильнике. На основе собранных данных система должна оповещать водителя об опасных для груза ситуациях с помощью мобильного приложения.
Начальный этап работы включает в себя создание прототипа. Для того, чтобы пройти этот этап без лишних затрат времени и средств, команда решила ограничить набор материалов для прототипирования содержимым Grove IoT Commercial Developer Kit.
Для того, чтобы обеспечить разделение обязанностей и организовать эффективную работу над проектом, команда разбила решение на три основных компонента:
Разделение проекта на несколько частей позволило быстрее пройти по этапам разработки прототипа, нежели без такого разделения, оптимально использовав набор навыков, имеющихся у членов команды. В частности, хотя без пользовательского интерфейса на ранних стадиях проекта можно было бы и обойтись, ожидалось, что на его разработку, в сравнении с другими задачами, понадобится больше всего времени. Раннее начало работы позволило, к более поздним этапам проекта, получить практически готовый пользовательский интерфейс.
В том, что касается логики приложения, команда, верно спрогнозировав желаемые возможности готового продукта, смогла, на начальных стадиях работы, принять решения с учётом будущих потребностей. В целом, команда ожидала, что работа с дверными датчиками будет сравнительно простой, что позволило уделить больше внимания правильному использованию температурных датчиков сначала в прототипе, а потом уже и в готовом решении.
Благодаря использованию датчиков из набора Grove, команда смогла быстро создать прототип, полноценно имитирующий систему. Группа, занимающаяся пользовательским интерфейсом, смогла работать с прототипом. Этот подход, кроме прочего, позволил быстро создать макет интерфейса и элементы дизайна. Прототип, в программном и аппаратном смысле, стал основой для готового продукта. Конфигурация прототипа, в котором задействованы Intel NUC, плата Arduino 101 и датчики, показана ниже.
Прототип
Вот подробности об использованных компонентах.
Основная система:
Компоненты из Grove IoT Commercial Developer Kit.
Вот сценарий работы с системой, имитирующий реальную ситуацию. Здесь используется административное приложение и прототип.
Вот как выглядит журнал наблюдения за температурой в холодильнике в ходе наших экспериментов. Описания событий, расположенные ниже графика, указывают на то, что водителю понадобилось немногим более минуты для того, чтобы отреагировать на нештатную ситуацию, приведшую к росту температуры. В реальности, даже если срок реакции немного увеличится, это будет означать уменьшение потенциальных потерь скоропортящихся продуктов.
Журнал событий
Система в норме
После того, как прототип испытан, пришло время перехода к коммерческому решению. Этот переход начинается с определения того, какие программные и аппаратные компоненты, подходящие для реального использования, соответствуют различным частям прототипа.
В продаже имеется множество шлюзов, они достаточно разнообразны, что позволяет выбрать устройство, подходящее для любой сферы применения. Ключевой возможностью шлюза, необходимой для данного проекта, был широкий диапазон доступных способов ввода-вывода. Это – и требование текущей версии проекта, связанное с подключением датчиков, и залог возможностей его расширения в будущем. В нашем случае для производственной фазы проекта был выбран шлюз 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.
Работа над проектом разделена на два этапа. Сначала, с использованием 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.
Поделиться с друзьями
LorDCA
Теперь осталось понять, зачем это было нужно? Если есть готовые решения от производителей трейлеров. Плюс ко всему прочему со встроеным gps, и даже диспетчер из офиса может видеть где трейлер и каково его состояние… поделка ради поделки?