Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Безопасное подключение Arduino MKR NB 1500 к Azure IoT Hub

Компоненты и материалы

Arduino MKR NB 1500 ×1
Кабель Micro-USB — USB ×1
Аккумулятор LiPo 3,7 В ×1
Микро-SIM карта ×1

Приложения и онлайн-сервисы

О проекте

Примечание: Это руководство может быть устаревшим. Актуальную версию можно найти здесь.

Введение

Azure IoT Hub позволяет «безопасно подключать, отслеживать и управлять миллиардами устройств для разработки приложений Интернета вещей (IoT)».

Устройства могут подключаться к Azure IoT Hub по протоколам HTTPS, AMQP и MQTT. Azure также предоставляет SDK для многих языков программирования. Кроме того, можно подключиться через MQTT-клиент. Подробнее о поддержке MQTT в IoT Hub можно прочитать здесь.

В этом руководстве мы подключим плату Arduino MKR NB 1500 к Azure IoT Hub безопасно, используя MQTT-клиент. MQTT (Message Queuing Telemetry Transport) — это протокол связи M2M (machine-to-machine), обеспечивающий передачу сообщений по модели публикации/подписки.

Для аутентификации в Azure IoT Hub устройства могут использовать SAS-токены или X.509-сертификаты (подробнее здесь). В данном руководстве мы будем использовать самоподписанный X.509-сертификат.

Каждая плата Arduino MKR с встроенной связью, включая MKR NB 1500, оснащена криптографическим элементом Microchip ATECC508A или ATECC608A. Этот элемент позволяет безопасно генерировать и хранить 256-битный ECC-ключ (криптография на эллиптических кривых).

Настройка ПО и оборудования

  1. Установите Arduino IDE, если она еще не установлена.
  2. Убедитесь, что установлен последняя версия пакета «Arduino SAMD Boards» (меню Tools → Board → Board Manager, поиск «Arduino SAMD»). На момент написания актуальная версия — 1.6.20.
  3. Установите необходимые библиотеки через менеджер библиотек (Sketch → Include Library → Manage Libraries):
    • MKRNB
    • ArduinoBearSSL
    • ArduinoECCX08
    • ArduinoMqttClient
    • Arduino Cloud Provider Examples
  4. Вставьте микро-SIM в слот на нижней стороне платы, подключите аккумулятор LiPo к разъему JST и соедините плату с компьютером через Micro-USB кабель.
  5. В Arduino IDE выберите порт (Tools → Port) и плату Arduino MKR NB 1500 (Tools → Board).

Настройка и добавление платы в Azure IoT Hub

Azure IoT Hub поддерживает устройства, подключаемые по MQTT с аутентификацией через X.509-сертификаты. Мы сгенерируем самоподписанный сертификат на плате и добавим его SHA1-отпечаток на портале Azure.

  1. Откройте пример скетча: File → Examples → ArduinoECCX08 → Tools → ECCX08SelfSignedCert.
  2. Загрузите скетч на плату и откройте Serial Monitor. Установите окончание строки «Both NL & CR».
  3. Скетч предложит навсегда настроить и заблокировать криптоэлемент (ATECC508A/ATECC608A), если он еще не настроен. Внимание: этот процесс необратим, но необходим для использования криптоэлемента. Конфигурация позволяет использовать 5 слотов для приватных ключей (0–4), которые можно перегенерировать в любой момент.
  4. Введите данные для сертификата: год, месяц, день и час выпуска, а также срок действия в годах. Для руководства используем слот 0 для приватного ключа, а слот 8 — для хранения дат выпуска/истечения и подписи. Приватный ключ генерируется внутри криптоэлемента и никогда не покидает устройство.
  5. Скопируйте сгенерированное значение SHA1 (например, 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b). Оно понадобится как отпечаток сертификата в Azure.

Создание устройства на портале Azure

  1. Перейдите на portal.azure.com.
  2. Войдите в учетную запись Azure или создайте новую.
  3. В левой панели нажмите «Create a resource» → «Internet of Things» → «IoT Hub».
  4. Заполните поля: Subscription, Resource group, Region, IoT Hub Name (например, ArduinoProjectHubTutorial). Нажмите «Review + Create» → «Create».
  5. Дождитесь развертывания (несколько минут), затем нажмите «Go to resource».
  6. В разделе «Explore» выберите «IoT Devices» → «Add».
  7. Введите имя устройства (например, MyMKRNB1500), перейдите на вкладку «X.509 Self-Signed» и вставьте скопированный SHA1 в поля «Primary Thumbprint» и «Secondary Thumbprint». Нажмите «Save».

Подключение платы к Azure IoT Hub

  1. Откройте скетч: File → Examples → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB.
  2. Во вкладке arduino_secrets.h укажите PIN-код SIM-карты (если требуется):
    // NB settings
    #define SECRET_PINNUMBER ""
    
  3. Замените брокер на конечную точку вашего IoT Hub:
    // Fill in the hostname of your Azure IoT Hub broker
    #define SECRET_BROKER ".azure-devices.net"
    
  4. Укажите ID устройства, созданного на портале:
    // Fill in the device id
    #define SECRET_DEVICE_ID ""
    
  5. Загрузите скетч и откройте Serial Monitor. Плата подключится к сотовой сети, а затем к Azure IoT Hub по MQTT.

Взаимодействие с платой через Azure IoT Hub

Скетч отправляет сообщения в топик devices/{deviceId}/messages/events/ каждые 5 секунд и слушает топик devices/{deviceId}/messages/devicebound/#.

Отправка сообщения на устройство

  1. На портале Azure IoT Hub выберите ваше устройство в таблице «IoT Devices».
  2. Нажмите «Message to device» на панели инструментов.
  3. Введите текст сообщения (например, «Hello there :)») и нажмите «Send Message».
  4. В Serial Monitor Arduino IDE появится полученное сообщение.

Просмотр сообщений от устройства

  1. Зайдите на shell.azure.com (выберите Bash).
  2. Установите расширение IoT Hub:
    az extension add --name azure-cli-iot-ext
    
  3. Выполните команду (замените <hub name> на имя вашего хаба):
    az iot hub monitor-events --hub-name 
    
  4. В консоли появятся сообщения, отправляемые платой.

Заключение

Мы рассмотрели, как безопасно использовать Arduino MKR NB 1500 с Azure IoT Hub. Для аутентификации применялся самоподписанный X.509-сертификат, приватный ключ которого хранится в ATECC508A/ATECC608A. Обмен MQTT-сообщениями между платой и облаком работает в обе стороны.

Это только начало — Azure IoT Hub интегрируется со множеством других сервисов Azure!

Код

Исходный код доступен на GitHub: https://github.com/arduino/ArduinoCloudProviderExamples

Производственный процесс

  1. Как IoT и 5G трансформируют современные рабочие места
  2. Arduino запускает Portenta H7: Industrial-Grade IoT Board дебютирует на CES
  3. Azure RTOS расширяет поддержку основных встраиваемых платформ с новыми комплектами разработки
  4. Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
  5. Azure против AWS: какая облачная платформа выигрывает для IoT?
  6. GPS-трекер с пространственным анализом на Azure IoT Hub
  7. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  8. Удаленное IoT-управление самодельной манипулятором
  9. IoT-солнечный трекер на Arduino: умное управление энергией с мониторингом через Cayenne
  10. Система управления бассейном на Azure IoT: умные датчики и удаленный мониторинг