Сегодня расскажем о том, как был создан интеллектуальный торговый автомат. Сначала, с использованием Intel IoT Developer Kit и Grove IoT Commercial Developer Kit, мы построили прототип, который, после успешных испытаний, преобразовали в решение, подходящее для практического использования. В частности, в готовом автомате использованы шлюз Intel для интернета вещей, датчики промышленного класса, Intel IoT Gateway Software Suite, Intel System Studio и облачные службы Microsoft Azure. Получившийся в итоге программно-аппаратный комплекс способен отслеживать наличие товара в автомате, вести журнал продаж, напоминать о необходимости обслуживания автомата. Шлюз собирает сведения, поступающие от датчика температуры, от шаговых двигателей, приводящих в движение спирали для выдачи товаров, и от приложения, ответственного за продажу. Данные можно анализировать на шлюзе и передавать в облако для накопления и дальнейшего исследования.



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

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

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

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

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

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

Вот готовое устройство, созданное в рамках проекта.

Интеллектуальный торговый автомат

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

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

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

Методология


Мы уже писали о методологии работы на IoT-проектами, которая предусматривает разделение пути от идеи к готовому продукту на шесть фаз. Напомним основное содержание каждой из них:

  1. Поиск проблемы, пустой ниши или потенциальной возможности на рынке.
  2. Проектирование модели для проверки возможностей продукта по решению поставленной перед ним задачи.
  3. Построение, тестирование и доработка физического макета, прототипа продукта
  4. Создание стабильной бета-версии продукта с использованием компонентов, подходящих для серийного производства.
  5. Оценка возможностей продукта, расширение его функционала, тестирование.
  6. Окончательная доработка и оптимизация продукта, переход к стадии производства.

При этом первые три фазы считаются начальными, а последние три – завершающими.
Данная методология хороша универсальностью. Это позволяет применить её к любому IoT-проекту. Расскажем теперь о том, как велась работа над интеллектуальным торговым автоматом.

Фаза №1: Определение потенциала проекта


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

Для того, чтобы понять изначальную неэффективность такого подхода, представим вполне реальную ситуацию на маршруте, один из пунктов назначения которого – многоэтажное офисное здание. Автомобиль останавливается перед зданием и сотруднику приходится решать, что делать дальше. Первый сценарий его действий – попытка догадаться, что понадобится для автоматов, скажем, на 15-м и 20-м этажах. Он берёт всё, что счёл нужным, поднимается к автоматам… Но догадка, весьма вероятно, окажется неверной, поэтому сотруднику придётся посетить автоматы минимум два раза, хотя, возможно, ему и повезёт уложиться в один заход. Второй сценарий подразумевает два посещения автоматов уже без вариантов ограничиться одним. Сначала сотрудник поднимается к устройствам, составляет список товаров, запас которых надо пополнить, потом возвращается в автомобиль, берёт всё, что нужно, и снова идёт к автоматам. А что если один из автоматов неисправен? Хорошо бы знать об этом ещё до выхода на маршрут.

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

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

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

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

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

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

Фаза №2: Проектирование модели для проверки работоспособности концепции


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

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

?Выбор аппаратного обеспечения для прототипа


Для прототипа был выбран компьютер малого форм-фактора Intel NUC Kit DE3815TYKHE. Он играет роль IoT-шлюза.

Intel NUC отличается достойным уровнем производительности, удовлетворяющим нуждам проекта. Кроме того, этот компьютер является одной из наиболее свежих платформ от Intel, нацеленных на интернет вещей, что делает его кандидатом на применение в сегодняшних и будущих IoT-системах. Устройство основано на процессоре Intel Atom E3815, оснащено пассивной системой охлаждения, обладает 4 Гб встроенной памяти и поддерживает подключение SATA-накопителей. Intel NUC содержит широкий диапазон портов ввода-вывода, он создан как компактное устройство, производительность и возможности которого сравнимы с настольными ПК.

Компьютер Intel NUC Kit DE3815TYKHE

Для того, чтобы упростить процесс взаимодействия с датчиками, команда решила задействовать возможности экосистемы Arduino и воспользоваться платой Arduino 101, она показана на рисунке ниже.


Плата Arduino 101

Благодаря Arduino 101, NUC можно связать с платами расширения Arduino. Кроме того, платформа Arduino отлично соответствует стремлению команды к бесплатному ПО с открытым исходным кодом. Надо отметить, что на текущей стадии работ использованы далеко не все возможности аппаратного обеспечения. Среди них – Bluetooth-адаптер, встроенный в Arduino 101. По мнению разработчиков, эта технология беспроводной связи вполне может найти применение в будущих версиях проекта.

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

Датчики и других компоненты, необходимых для создания прототипа, были взяты из Grove Starter Kit for Arduino (производства Seeed Studio), который основан на Grove Starter Kit Plus, используемом в Grove IoT Commercial Developer Kit. Этот набор компонентов стоит недорого, его использование упрощает подбор материалов для IoT-прототипирования.

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

  • Температура внутри автомата.
  • Количество продаваемого товара каждого вида.
  • Состояние двери: открыта или закрыта.
  • Сведения о заблокированных или неработающих по другим причинам спиралях для выдачи покупок.

Подробности о компонентах, которые позволят собрать эти данные, мы рассмотрим ниже.

?Программное обеспечение прототипа


В качестве операционных систем для компьютера, играющего в прототипе роль шлюза, команда рассматривала Yocto Linux и Intel IoT Gateway Software Suite. Yocto Linux отлично соответствует стремлению к использованию бесплатного ПО с открытым кодом. Эта ОС отличается высоким уровнем гибкости, позволяет создавать легковесные сборки, ориентированные на нужды конкретной системы. Intel IoT Gateway Suite, с другой стороны, предлагает готовое к использованию решение, которое не нуждается в дополнительной подстройке под нужды проекта. Команда сочла эту комбинацию факторов наиболее подходящей для разработки прототипов. В итоге Intel IoT Gateway Software Suite была выбрана в качестве ОС для шлюза.

Программная часть проекта, помимо ОС, включает в себя следующие приложения:

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

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

  • Приложение для покупателя будет работать на смартфоне или другом мобильном устройстве, позволяя покупателю приобретать товары в автомате.

Фаза №3. Создание и доводка прототипа


Концептуальный прототип был создан командой с использованием компьютера Intel NUC Kit DE3815TYKHE, платы Arduino 101 и Grove Starter Kit Plus IoT Edition. Он представлен на рисунке ниже. Прототип имитирует торговый автомат, который продаёт товары двух видов.


Прототип торгового автомата

В прототип входит ЖК-дисплей, который умеет отображать 2 строки по 16 символов. Он выводит названия товаров и сведения о цене. Здесь имеются две кнопки выбора товара, шаговый двигатель для системы выдачи покупок, два светодиода (зелёный и красный), отображающих состояние автомата. Кроме того, прототип включает в себя датчик температуры и кнопку «обнаружения неисправности». Для того, чтобы не усложнять прототип, системы, необходимые для приёма платежей, в него не включены. В результате, когда пользователь нажимает кнопку покупки, товар ему выдаётся без лишних вопросов.

Вот какие компоненты входят в аппаратную реализацию прототипа.

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


Компоненты из Grove Starter Kit Plus IoT Edition.

?Реализация ПО прототипа


Управляющее приложение, использованное в прототипе, было написано на C++. Оно, кроме того, задействует компонент на Node.js для доступа к облачному сервису Microsoft Azure. Облако применяется для обмена данными, в частности, сведениями о событиях, с мобильным и административным приложениями. Эти события включают в себя, например, оповещения о состоянии температуры и запросы на выдачу товаров. Мобильное приложение для покупателей было написано на JavaScript и предназначено для использования в веб-браузере. Такой подход избран для того, чтобы избежать необходимости переписывать программу для разных мобильных платформ.

Для разработки использовался пакет Intel System Studio и плагин для IDE Eclipse, который помогает подключиться к Intel NUC и создавать приложения на C/C++.

Кроме того, в ходе работы была использована C/C++ библиотека Libmraa, которая позволяет осуществлять прямой доступ к средствам ввода-вывода на NUC, а также Firmata, которая позволяет организовать программное взаимодействие с окружением разработки Arduino, пользуясь возможностями аппаратной абстракции Arduino. Библиотека Libmraa позволяет улучшить программный контроль над средствами ввода-вывода на NUC, упрощая процесс сбора показателей датчиков. UPM предоставляет вызовы специальных функций, которые используются для работы с датчиками.

Фаза №4. Создание стабильной бета-версии


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

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

  • Шлюз был выбран среди тех, которые можно найти в свободной продаже. Он основан на архитектуре Intel, логика проекта реализована с использованием ПО собственной разработки.

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

  • Система облачной аналитики, основанная на Microsoft Azure, которая, кроме прочего, позволяет получать прогнозные сведения для оптимизации бизнес-процессов, основываясь на данных об использовании торгового автомата, собранных за некоторое время.

?Выбор компонентов для торгового автомата


На начальном этапе фаз завершения проекта был проведён отбор компонентов, из которых и будет построено готовое решение.

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


Сборка торгового автомата

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

  • Пружина с плотными витками (3 дюйма) предназначена для 12 – 14 маленьких блистерных упаковок.

  • Пружина с витками меньшей плотности (4 дюйма) подходит для размещения 9 – 12 коробок или упаковок среднего размера.

  • Пружина с самым большим шагом витков (5 -6 дюймов), предназначена для 6 – 8 крупных упаковок. Например, в таких упаковках можно продавать футболки.

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

В качестве материала корпуса использованы стальные элементы с порошковым покрытием, лотки изготовлены из алюминия, пружины – из стали с защитным покрытием. Передняя часть автомата открывается для размещения в ней продуктов, задняя панель сделана съёмной – для установки и обслуживания механизмов. Планируется, что вес автомата будет немного больше 30 килограммов, размеры — около 60 см в глубину, около 90 см в высоту и 75 см в ширину.

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

?Выбор датчиков и других компонентов


Вот какие компоненты заменяют в рабочем торговом автомате детали из Grove Starter Kit, использованные в прототипе.

  • Модель торгового автомата, компоненты которого изготовлены специально для данного проекта. А именно:

    — Корпус c дверью, закреплённой на петлях и съёмной задней стенкой.
    — Съёмный лоток с тремя пружинами для выдачи товаров.
    — Три шаговых двигателя (по одному на пружину), каждый из которых оснащён переключателем, предназначенным для регистрации полного оборота пружины.
    — Съёмная полка для электронных компонентов.

  • IoT-шлюз Dell iSeries Wyse 3290 IoT Gateway.
  • USB-кабель A – Micro USB B для подключения контроллера I2C/GPIO к шлюзу.
  • Блок питания 12 В, 5 А, который используется для подачи электропитания на управляющую плату шаговых двигателей.
  • Контроллер USB – I2C/GPIO UMFT4222EV.
  • Расширитель GPIO, основанный на микросхеме PCA9555.
  • Плата SparkFun для управления четырьмя шаговыми двигателями.
  • Датчик температуры и влажности AM2315.
  • ЖК-дисплей Grove с цветной подсветкой
  • Красный светодиод с монтажными приспособлениями.
  • Белый светодиод с монтажными приспособлениями.

?Выбор шлюза


Вот основные факторы, руководствуясь которыми команда выбирала шлюз для торгового автомата:

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

  • Доступность в продаже, немаловажный фактор, если учесть, что без шлюза проект реализовать не удастся. Некоторые члены команды были за то, чтобы выбрать шлюз Vantron VT-M2M-QK, однако, в приемлемый срок достать его не удалось, поэтому выбор пал на другое устройство.

В итоге для проекта был выбран шлюз Dell iSeries Wyse 3290 IoT Gateway. Этот шлюз обеспечивает необходимый уровень производительности и для существующей функциональности, и для возможного расширения проекта в будущем. А именно, он оснащён процессором Intel Celeron N2807 (тактовая частота до 2.16 Ггц, 1 Мб кэш-памяти), 4 Гб DDR3-оперативной памяти (1600 МГц). Устройство оборудовано сетевой картой (10/100/1000 BASE-T), Wi-Fi-адаптером (802.11a/b/g/n/ac) и модулем Bluetooth 4.0 Low Energy. Шлюз имеет небольшие размеры (69 мм x 197.5 мм x 117 мм) и вес (2.34 кг).

Dell iSeries Wyse 3290 IoT Gateway легко достать, даже в больших количествах, что важно для гипотетической ситуации вывода описываемого здесь торгового автомата на рынок.

После того, как шлюз был выбран, нужно было определиться с ОС для него. В прототипе, на Intel NUC, уже использовалась Intel IoT Gateway Software Suite. Шлюз поддерживает установку этой ОС, он сертифицирован для неё, поэтому Intel IoT Gateway Software Suite решено было оставить. Такое решение упрощает перенос программных наработок, сделанных на стадии прототипирования, в рабочий торговый автомат. Облегчает этот процесс и применение того же, что и в прототипе, окружения разработки, а именно, Intel System Studio и вспомогательных библиотек.

?Архитектура системы


Система включает в себя следующие основные программные части:

  • Программное обеспечение шлюза.
  • Облачные службы Azure для хранения и анализа данных и серверное приложение.
  • Приложения для администраторов и покупателей.


Схема взаимодействия различных программных компонентов проекта

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

?Программное обеспечение шлюза


Программное обеспечение, которым оснащён шлюз, состоит из трёх частей:

  1. Управляющее приложение, написанное на C++ с использованием библиотек libmraa и libupm из IoT Developer Kit. Оно решает следующие задачи:

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

  2. Локальная база данных применяется для организации обмена данными между управляющим приложением и демоном базы данных. Локальная база данных SQLite использует файл $HOME/Vending_Prototype/events.sqlite3, содержащий таблицу «events», в которую записываются сведения о событиях, которые нужно передать в облако. Таблица событий синхронизируется между облаком и шлюзом.

  3. Демон базы данных реализован на Node.js. Он синхронизирует записи о событиях между локальной базой данных и облаком.

?Реализация облачной части решения на базе Azure


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

  • Если некий продукт в автомате закончился, эти сведения отправляются в облако, после чего в административном приложении отображается оповещение.

  • Если внутренняя температура в автомате вышла из заданного диапазона, данные об этом поступают в облако для анализа. В административном приложении выводится предупреждение.

  • Если хотя бы одна из пружин для выдачи товаров работает неправильно, эти сведения так же отправляют в облако, что, опять же, приводит к выдаче предупреждения в административном приложении.

  • Если лоток автомата выдвинут, например, во время техобслуживания, система сообщает о состоянии «Автомат открыт». После того, как лоток вернётся в рабочее положение, система сообщает о состоянии «Автомат готов к работе».

Фаза №5. Оценка возможностей продукта и расширение функционала


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

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

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

?Улучшение облачной аналитики


Команда обнаружила возможность расширения функционала облачной аналитики с использованием сервиса Microsoft Power BI и платформы Power Bi Desktop – размещённого в облаке интеллектуального аналитического бизнес-сервиса, который интегрирован с Microsoft Azure. Функционал Power BI позволяет работать с большими объёмами данных, в частности – визуализировать их. Эта возможность окажется очень кстати в системах, которые включают в себя множество интеллектуальных торговых автоматов.

?Расширение уведомлений о событиях


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

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

  • Незапланированное обслуживание. Если автомат работает неправильно, например, одна из пружин не может совершить полный оборот, или температура вышла из заданных пределов, в облако отправляется соответствующее уведомление. Оно может быть перенаправлено в административное приложение. Администратор, в свою очередь, может сообщить о неисправности в сервисную службу и проконтролировать, опять же, через систему уведомлений, ход работ по устранению неполадки.

Фаза 6. Завершение работы и выпуск готового продукта


На финальной фазе проекта была завершена работа над торговым автоматом и программным обеспечением. Рассмотрим приложение для администратора автомата.

?Приложение для администраторов


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


Интерфейс административного приложения

Вот описание основных областей интерфейса, которые пронумерованы и выделены на рисунке.

  1. Система меню содержит кнопку Home, которая позволяет перейти на домашний экран (именно он показан на рисунке). Кнопка About открывает экран со сведениями о ПО, кнопка Setup ведёт к экрану с информацией об аппаратных параметрах системы (в том числе – о размещении и состоянии датчиков). Кнопка Log выводит журнал событий, отчёт о продажах, списки предупреждений и сообщений об обслуживании. Кнопка Alert позволяет посмотреть подробности об активных оповещениях о необходимости обслуживания, включая тип и время возникновения события по каждому подобному оповещению.

  2. Панель сведений о запасах товаров отображает уровень наличия товаров, устанавливаемый по данным, получаемым из облака, с использованием цветовой кодировки для различных уровней. Тёмно-синий цвет применяется для товаров, количество которых превышает две трети от максимального. Более светлый оттенок синего указывает на то, что товаров имеется от двух третей до одной трети от максимума. Оранжевый сигнализирует о том, что товаров меньше трети от максимума. Если щёлкнуть по панели, будет выведено окно с подробностями об остатках товаров. Здесь можно получить данные об их точном количестве, о том, какие это товары, где именно в автомате они расположены, об их стоимости.

  3. Модуль контроля температуры содержит полукруглый индикатор температуры с возможностью установки её нижней и верхней границы. Индикатор выводит текущую температуру в автомате в градусах Цельсия или Фаренгейта. Белая часть индикатора символизирует допустимый диапазон температур. Если температура выходит из этого диапазона, система генерирует оповещение. Данные индикатора обновляются каждые несколько секунд.

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

  5. Модуль торгового автомата показывает, открыта или закрыта дверь автомата, а также, в случае возникновения неисправности, даёт визуальную подсказку о том, где именно она произошла.

?Приложение для покупателей


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


Интерфейс приложения для покупателя

Интерфейс приложения состоит из следующих основных частей, они пронумерованы и выделены на рисунке:

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

  2. Панель заказа содержит кнопки выбора для каждого товара. Нажатия на них позволяют выбирать товары и добавлять их в корзину на панели состояния. Поля около кнопок содержат сведения о количестве товаров каждого вида в автомате и об их стоимости.

?Готовый торговый автомат


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


Готовый торговый автомат и его компоненты

Выводы


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

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

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

В итоге хочется отметить, что мы уверены в том, что технологии интернета вещей способны оказать значительное позитивное влияние на вендинговый бизнес.
Поделиться с друзьями
-->

Комментарии (14)


  1. xmax
    11.11.2016 17:25

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

    Так почему нельзя все эти данные сразу отправлять через 3g свисток в какую-нибудь программу, ну даже например 1С посредством запроса к БД? И тогда наглядно будет видно, что есть, чего нет.
    Данные о состоянии думаю можно так же пришить к имеющейся ардурино. Ибо датчик температуры так же стоял и на внутреннем дисплее было отображение внутренней температуры и еще какой-то. Не вдавался в подробности и не запоминал.
    Видел такой автомат месяцев 6 назад. IoT в нем не было интегрировано.
    Но как понятно мне — имеем огромный список данных о состоянии, которые можно отправить просто на удаленный сервер. Зачем нам городить сюда компьютер и еще одну ардурину?


    1. hengenvaarallinen
      12.11.2016 21:49

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


  1. gsaw
    11.11.2016 17:39
    +5

    Ну понял, Интел кидает клич — «сделайте проект, похожий на реальный используя только решения интела и будет вам прибавка к получке». Собирается комманда инженеров и начинает выдумывать. Иначе как объяснить такое

    «Вот основные факторы, руководствуясь которыми команда выбирала шлюз для торгового автомата:

    * Высокая производительность, достаточная для обеспечения бесперебойной работы решения. „

    Как высокая производительность скажется на бесперебойности?

    * Доступность в продаже, немаловажный фактор, если учесть, что без шлюза проект реализовать не удастся.“

    Это да, это критерий! Выбирать только то, что существует в природе. И что бы синенький был, синенький хочу.

    »А именно, он оснащён процессором Intel Celeron N2807 (тактовая частота до 2.16 Ггц, 1 Мб кэш-памяти), 4 Гб DDR3-оперативной памяти (1600 МГц). Устройство оборудовано сетевой картой (10/100/1000 BASE-T), Wi-Fi-адаптером (802.11a/b/g/n/ac) и модулем Bluetooth 4.0 Low Energy. Шлюз имеет небольшие размеры (69 мм x 197.5 мм x 117 мм) и вес (2.34 кг)"

    Ну нафига такой шлюз на пять датчиков и три моторчика? Почему не i7 core c 128Г оперативки и 8 ядрами? По ядру на датчик.

    Я конечно человек далекий от разработки железа, но мне кажется все эти критерии и выбор смешными. Лишь бы было.

    Потом еще

    «Управляющее приложение, написанное на C++ с использованием библиотек libmraa и libupm из IoT Developer Kit.» Почему C++, по мойму можно было что попроще использовать, при такой то мощи? Или потому, что стандарт?


    1. c_kotik
      11.11.2016 18:27

      * Высокая производительность

      Что бы энтузиасты потом это решение взламывали и запускали Doom — скоротать время ожидая когда подвезут закончившиеся пачки с чипсами.

      И какое то странное решение. Ушли в облака вместо того, что бы озаботится простотой скажем попупки — бесконтактные платежи и тд и тп.


    1. tmin10
      11.11.2016 19:22

      Как высокая производительность скажется на бесперебойности?

      Видимо вендинговой машине нужно производить море сложнейший вычислений, поэтому там нужен быстрый процессор, а то будет тормозить или лагать!


  1. lopatoid
    11.11.2016 18:19
    +2

    Забавно, что КДПВ взяли из видео, в котором банка застревает в автомате:
    http://www.boredpanda.com/unsatisfying-situations-parallel-studio/


  1. LiguidCool
    11.11.2016 18:26
    +2

    Если честно — бред полный.
    Все очень сильно усложнено. Сам по себе вендинговый автомат очень простое устройство. Достаточно ардуины, пары датчиков… Ну может быть Малину можно поставить. Но облака?! Облака КАРЛ! Зачем?! Зачем там комп с Atom'ом?!
    И все это при условии, что эта фиговина не считает деньги!!!


  1. Imbecile
    11.11.2016 19:20

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

    Но это всё равно не объясняет спорный выбор платформы в автомате. Какое-то оверхед решение по производительности.


    1. safari2012
      14.11.2016 16:58

      Ардуина вполне может посчитать и остатки и потребности в реальном времени. И сообщить "куданадо".


  1. tmin10
    11.11.2016 19:28

    Хм, мобильное приложение для вендингового автомата: теперь вместо того, чтобы просто подойти к нему, выбрать покупку, ткнуть кнопку и засунуть денюжку нужно отсканировать ссылку на приложение или найти его в маркете, загрузить его, тратя свой трафик, запустить, привязать карту и уже наконец-то сделать покупку…
    Если у разных автоматов будет разный владелец, то приложений тоже будет много, удобство сомнительное, лучше просто использовать NFС для оплаты и всё.


  1. dron_k
    12.11.2016 18:27

    У нас поставили вендинговый аппарат с бутербродами и шоколадками,
    я просто в шоке с этого бизнеса:
    — иногда не выдает оплаченный товар,
    — иногда насыпет вместо одной, две три шоколадки
    — иногда чтото застревает, и либо просто само позже выпадает, либо вместе с последующей покупкой.

    У нас там сидит охранник и записывает если комуто чтото не выдало потом вроде компенсируют,
    но без присмотра один на один я бы с такой штукой не связывался.

    Может просто нам поставили такой ушатаный аппарат потому что охранник присматривает…

    И кстати еще идея: для особо сознательных личностей можно сделать емкость куда будут возвращать товар который автомат выдал без оплаты.


    1. Welran
      14.11.2016 13:46

      У нас поставили автомат у которого всего один минус. Иногда в нём заканчивается сдача. Но тогда можно сказать коллеге которая общается с владельцами автомата и они возвращают сдачу. А если в нём застревает товар он просит выбрать снова и может выпасть два товара по цене одного (джекпот!) Думаю что двойные выдачи и так заложены в цену товара так что совесть не мучает :).
      Так что все зависит от настроек автоматов и наглости владельцев.


  1. bud49
    12.11.2016 21:49

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


  1. safari2012
    14.11.2016 17:00

    У нас как-то в офисе стал вполне себе брендовый UVECO раздавать бесплатный кофе. Дегустаторов набралось немало :)