You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/4-manufacturing/lessons/4-trigger-fruit-detector/README.md

33 KiB

Запуск проверки качества фруктов с помощью датчика

Скетчноут с обзором урока

Скетчноут от Nitya Narasimhan. Нажмите на изображение, чтобы увидеть его в большем размере.

Викторина перед лекцией

Викторина перед лекцией

Введение

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

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

В этом уроке мы рассмотрим:

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

Если необходимо, обратитесь к руководству по очистке проекта для получения инструкций.

Проектирование сложных IoT-приложений

IoT-приложения состоят из множества компонентов, включая различные устройства и интернет-сервисы.

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

  • Разные устройства собирают разные данные.
  • IoT-сервисы предоставляют инсайты на основе этих данных, иногда дополняя их данными из дополнительных источников.
  • Эти инсайты приводят к действиям, включая управление актуаторами в устройствах или визуализацию данных.

Справочная архитектура IoT

Справочная архитектура IoT

На диаграмме выше показана справочная архитектура IoT.

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

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

Справочная архитектура IoT

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

  • Устройства — вы написали код для устройств, чтобы собирать данные с датчиков и анализировать изображения с помощью Custom Vision, работающего как в облаке, так и на периферийном устройстве. Эти данные отправлялись в IoT Hub.
  • Инсайты — вы использовали Azure Functions для обработки сообщений, отправленных в IoT Hub, и сохраняли данные для последующего анализа в Azure Storage.
  • Действия — вы управляли актуаторами на основе решений, принятых в облаке, и команд, отправленных устройствам, а также визуализировали данные с помощью Azure Maps.

Подумайте о других IoT-устройствах, которые вы использовали, например, о бытовой технике с функцией умного дома. Какие устройства, инсайты и действия связаны с этим устройством и его программным обеспечением?

Эта модель может быть масштабирована как в большую, так и в меньшую сторону, добавляя больше устройств и сервисов.

Данные и безопасность

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

  • Какие данные ваше устройство отправляет и получает?
  • Как эти данные должны быть защищены?
  • Как должен быть организован доступ к устройству и облачному сервису?

Подумайте о безопасности данных любых IoT-устройств, которыми вы владеете. Какие из этих данных являются личными и должны оставаться конфиденциальными как при передаче, так и при хранении? Какие данные не должны храниться?

Разработка системы контроля качества фруктов

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

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

Один из трендов с ростом IoT (и технологий в целом) заключается в том, что ручной труд заменяется машинами. Проведите исследование: сколько рабочих мест, по оценкам, будет потеряно из-за IoT? Сколько новых рабочих мест будет создано для разработки IoT-устройств?

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

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

Прототипирование вашего приложения

Справочная архитектура IoT для проверки качества фруктов

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

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

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

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

Запуск проверки качества фруктов с помощью датчика

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

Датчики приближения отправляют лазерные лучи к объектам, таким как бананы, и измеряют время, за которое луч возвращается

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

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

Задача — запуск проверки качества фруктов с помощью датчика расстояния

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

Данные, используемые для детектора качества фруктов

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

Компоненты взаимодействуют друг с другом

  • Датчик приближения измеряет расстояние до фрукта и отправляет данные в IoT Hub.
  • Команда для управления камерой поступает из IoT Hub на устройство с камерой.
  • Результаты классификации изображения отправляются в IoT Hub.
  • Команда для управления светодиодом, чтобы уведомить о незрелом фрукте, отправляется из IoT Hub на устройство со светодиодом.

Хорошей практикой является определение структуры этих сообщений заранее, перед созданием приложения.

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

Например, если вы отправляете информацию о температуре, как бы вы определили JSON? Вы могли бы использовать поле temperature, или же использовать общепринятое сокращение temp.

{
    "temperature": 20.7
}

в сравнении с:

{
    "temp": 20.7
}

Также нужно учитывать единицы измерения — температура указана в °C или °F? Если вы измеряете температуру с помощью потребительского устройства, и пользователь меняет единицы отображения, вам нужно убедиться, что единицы, отправляемые в облако, остаются неизменными.

Проведите исследование: как проблемы с единицами измерения привели к крушению Mars Climate Orbiter стоимостью $125 миллионов?

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

Например, запуск классификации изображения с помощью датчика приближения. IoT-устройство измеряет расстояние, но где принимается решение? Устройство решает, что фрукт достаточно близко, и отправляет сообщение в IoT Hub для запуска классификации? Или оно отправляет измерения расстояния, а IoT Hub принимает решение?

Ответ на такие вопросы — это зависит. Каждый случай уникален, поэтому как разработчику IoT вам нужно понимать систему, которую вы строите, как она используется и какие данные обнаруживаются.

  • Если решение принимается IoT Hub, вам нужно отправлять несколько измерений расстояния.
  • Если вы отправляете слишком много сообщений, это увеличивает стоимость IoT Hub и объем необходимой пропускной способности для ваших IoT-устройств (особенно на заводе с миллионами устройств). Это также может замедлить работу устройства.
  • Если решение принимается на устройстве, вам нужно предоставить способ настройки устройства для тонкой настройки машины.

Использование устройств разработчика для симуляции нескольких IoT-устройств

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

Симуляция нескольких IoT-устройств на Raspberry Pi или виртуальном IoT-оборудовании

При использовании одноплатного компьютера, такого как Raspberry Pi, вы можете запускать несколько приложений одновременно. Это позволяет симулировать несколько IoT-устройств, создавая несколько приложений, по одному на каждое 'IoT-устройство'. Например, вы можете реализовать каждое устройство как отдельный файл Python и запускать их в разных сеансах терминала. 💁 Имейте в виду, что некоторые устройства могут не работать, если к ним одновременно обращаются несколько приложений.

Симуляция нескольких устройств на микроконтроллере

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

Некоторые рекомендации, которые могут облегчить этот процесс:

  • Создайте один или несколько классов для каждого IoT-устройства — например, классы с названиями DistanceSensor, ClassifierCamera, LEDController. У каждого класса могут быть свои методы setup и loop, которые вызываются основными функциями setup и loop.
  • Обрабатывайте команды в одном месте и перенаправляйте их в соответствующий класс устройства по мере необходимости.
  • В основной функции loop вам нужно учитывать временные интервалы для каждого устройства. Например, если у вас есть один класс устройства, который должен обрабатываться каждые 10 секунд, и другой, который должен обрабатываться каждую секунду, то в основной функции loop используйте задержку в 1 секунду. Каждый вызов loop запускает соответствующий код для устройства, которое должно обрабатываться каждую секунду, а также использует счетчик для подсчета каждого цикла, обрабатывая другое устройство, когда счетчик достигает 10 (после чего счетчик сбрасывается).

Переход к производству

Прототип станет основой для финальной производственной системы. Некоторые отличия при переходе к производству:

  • Укрепленные компоненты — использование оборудования, разработанного для работы в условиях шума, тепла, вибрации и нагрузки на производстве.
  • Использование внутренней связи — некоторые компоненты будут общаться напрямую, избегая передачи данных через облако, отправляя данные в облако только для хранения. Как это будет реализовано, зависит от конфигурации производства: либо через прямую связь, либо через выполнение части IoT-сервиса на периферии с использованием шлюзового устройства.
  • Настраиваемые параметры — каждое производство и случай использования уникальны, поэтому оборудование должно быть настраиваемым. Например, датчик приближения может потребоваться для обнаружения различных фруктов на разных расстояниях. Вместо жесткого кодирования расстояния для запуска классификации, вы захотите сделать это настраиваемым через облако, например, используя двойник устройства.
  • Автоматическое удаление фруктов — вместо использования светодиода для оповещения о том, что фрукт незрелый, автоматизированные устройства будут удалять его.

Проведите исследование: Какими еще способами производственные устройства отличаются от наборов для разработчиков?


🚀 Задание

На этом уроке вы узнали некоторые концепции, которые необходимо знать для проектирования IoT-системы. Вспомните предыдущие проекты. Как они вписываются в приведенную выше эталонную архитектуру?

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

Например, устройство отслеживания транспортных средств, которое объединяет GPS с датчиками для мониторинга таких параметров, как температура в рефрижераторе, время включения и выключения двигателя, а также идентификация водителя. Какие устройства задействованы, какие сервисы используются, какие данные передаются, и какие меры безопасности и конфиденциальности необходимо учитывать?

Викторина после лекции

Викторина после лекции

Обзор и самостоятельное изучение

Задание

Создайте детектор качества фруктов


Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.