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

Безопасное подключение MKR GSM 1400 к Google Cloud IoT Core

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

Arduino MKR GSM 1400
× 1
Кабель Micro-USB - USB (общий)
× 1
3,7 В Lipo аккумулятор
× 1
Micro SIM-карта
× 1
Антенна UF.L сотовой связи
× 1

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

IDE Arduino
Google Cloud IoT Core

Об этом проекте

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

Введение

Устройства могут подключаться к GCP IoT Core с помощью HTTP или MQTT. В этом руководстве вы узнаете, как безопасно подключить плату Arduino MKR GSM 1400 к GCP IoT Core с помощью клиента MQTT. MQTT (передача телеметрии очереди сообщений) - это протокол связи M2M (машина-машина), который обеспечивает подписку на обмен сообщениями и транспорт публикации.

Устройства должны использовать веб-токены JSON (JWT) для аутентификации, дополнительную информацию о JWT можно найти в RFC 7519. GCP IoT Core поддерживает алгоритмы RSA и Elliptic Curve для проверки веб-подписей JSON (JWS). Дополнительную информацию о JWS можно найти в RFC 7515.

Каждая плата Arduino MKR со встроенным подключением, включая MKR GSM 1400, оснащена криптоэлементом Microchip ATECC508A или ATECC608A. Этот криптографический элемент можно использовать для безопасного создания и хранения 256-битного ключа ECC (Elliptic Curve Cryptography). Мы будем использовать закрытый ключ, хранящийся внутри элемента crypto, чтобы подписать JWT.

Настройка программного и аппаратного обеспечения

Если на вашем компьютере не установлена ​​IDE Arduino, загрузите и установите ее.

После его установки убедитесь, что у вас установлена ​​последняя версия пакета «Arduino SAMD Boards». Вы можете проверить это, открыв Arduino IDE и открыв Tools -> Board:"..." -> Board Manager ... войдите в меню и выполните поиск "Arduno SAMD". На момент написания последней версии была 1.6.20.

Затем вам нужно установить библиотеки Arduino, которые будут использоваться, с помощью диспетчера библиотек Arduino IDE. Откройте Sketch -> Включить библиотеку -> Управление библиотеками .. . выполните поиск и индивидуально установите каждую из следующих библиотек:

  • МКРГСМ
  • Arduino_JSON
  • ArduinoECCX08 (версия 1.3.0 или новее)
  • ArduinoMqttClient (версия 0.1.3 или новее)
  • Примеры облачного провайдера Arduino (версия 1.2.0 или новее)

Теперь вставьте микро-SIM-карту в слот в нижней части платы MKR GSM 1400, подключите антенну и прикрепите батарею Lipo 3,7 В к разъему JST. Затем подключите MKR GSM 1400 с помощью кабеля micro USB к компьютеру, выберите последовательный порт в Arduino IDE, используя Инструменты -> Порт "..." меню и также выберите Arduino MKR GSM 1400 в Инструменты -> Плата "..." меню.

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

Как упоминалось выше, GCP IoT Core требует, чтобы устройства, которые подключаются по протоколу MQTT, использовали JWT для аутентификации. Мы воспользуемся эскизом для создания закрытого и открытого ключей на плате, а затем добавим значение PEM открытого ключа в консоль GCP IoT Core.

Частные и общедоступные можно сгенерировать, используя пример скетча из библиотеки ArduinoECCX08. Откройте скетч в среде Arduino IDE, используя Файл -> Примеры -> ArduinoECCX08 -> Инструменты -> ECCX08JWSPublicKey . Нажмите кнопку «Загрузить», чтобы построить и загрузить эскиз на плату, затем откройте Serial Monitor. Убедитесь, что для конфигурации окончания строки установлено значение «И NL, и CR».

Этот эскиз предложит вам окончательно настроить криптоэлемент ATECC508A на ECC608A, если он не настроен и не заблокирован. ПРИМЕЧАНИЕ. Этот процесс блокировки является постоянным и необратимым, но он необходим для использования криптографического элемента - конфигурация, заданная в эскизе, позволяет вам использовать 5 ячеек закрытого ключа с любым облачным провайдером (или сервером), а закрытый ключ можно восстановить в любое время. для любых слотов с приватным ключом (0–4) . Когда плата поставляется с завода, криптоэлемент находится в ненастроенном и разблокированном состоянии.

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

Скопируйте сгенерированное значение открытого ключа, на этом снимке экрана это значение:

  ----- НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ ----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4 + DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzRe2kq9GWiPYS  

Мы будем использовать его на более позднем этапе при добавлении устройства в GCP IoT Core.

Теперь, когда у нас есть открытый ключ PEM, нам нужно войти в консоль GCP IoT Core и создать для него новое устройство.

1) Откройте веб-браузер, перейдите на страницу https://cloud.google.com/ и нажмите ссылку «Войти», чтобы войти в систему со своим идентификатором Google.

2) После входа в систему нажмите кнопку «ПЕРЕЙТИ К КОНСОЛИ». После этого вы увидите главную панель управления.

3) Щелкните ссылку «СОЗДАТЬ», чтобы создать новый проект.

4) Вам будет предложено ввести название проекта, в качестве названия мы будем использовать «MKR GCP Tutorial». Нажмите кнопку «СОЗДАТЬ», чтобы продолжить.

5) После создания проекта вам будет представлена ​​его панель управления.

6) Теперь щелкните значок меню в верхнем левом углу, перейдите к заголовку «БОЛЬШИЕ ДАННЫЕ» и щелкните ссылку «Ядро Интернета вещей».

7) Вам будет предложено включить API, нажмите кнопку «Включить API».

8) После включения API вам будет предложено создать реестр устройства. Чтобы продолжить, нажмите кнопку «Создать реестр устройства».

9) Вам будет представлена ​​форма. Заполните поле «Registry ID», выберите регион. На скриншоте ниже «MKR_GCP_Tutorial» был введен в качестве идентификатора реестра, а «us-central1» был выбран в качестве региона. После заполнения формы нажмите кнопку «Создать».

10) После этого вам будет представлена ​​подробная информация о реестре.

11) Чтобы добавить новое устройство, нажмите ссылку «Устройства» на панели навигации слева.

12) Затем нажмите «+ СОЗДАТЬ УСТРОЙСТВО» в заголовке вверху страницы.

13) Введите имя устройства, на скриншоте ниже использовалось «MyMKRGSM1400». «ES256» должен быть выбран в качестве «формата открытого ключа». Вставьте открытый ключ PEM, сгенерированный ранее на плате, в текстовую область «Значение открытого ключа». Затем нажмите кнопку «Создать».

Подключение платы к GCP IoT Core

1) Откройте эскиз GCP IoT Core GSM в среде Arduino IDE, используя Файл -> Примеры -> Примеры облачного провайдера Arduino -> GoogleCloudPlatformIoTCore-> GCP_IoT_Core_GSM.

2) На вкладке arduino_secrets.h введите пин-код (если требуется) для SIM-карты, а также GPRS APN, имя пользователя и пароль для используемого вами сотового оператора.

  // настройки GSM # определить SECRET_PINNUMBER "" #define SECRET_GPRS_APN "GPRS_APN" // заменить свой GPRS APN # определить SECRET_GPRS_LOGIN "логин" // заменить на свой логин GPRS # определить SECRET_GPRS_PASSWORD "пароль" // заменить на ваш пароль GPRS  

4) Затем обновите значения идентификатора проекта, облачного региона, идентификатора реестра и идентификатора устройства.

  // Заполните вашу облачную платформу Google - IoT Core info # define SECRET_PROJECT_ID "" #define SECRET_CLOUD_REGION "" #define SECRET_REGISTRY_ID "" #define SECRET_DEVICE_ID ""  

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

  #define SECRET_PROJECT_ID "mkr-gcp-tutorial" #define SECRET_CLOUD_REGION "us-central1" #define SECRET_REGISTRY_ID "MKR_GCP_Tutorial" #define SECRET_14MVICE_ID_code> MyMoney 

5) Загрузите эскиз на свою плату и откройте серийный монитор. Плата попытается подключиться к сотовой сети, и в случае успеха попытается подключиться к GCP IoT Core с помощью MQTT.

Взаимодействие с Правлением по GCP IoT Core

Теперь, когда ваша плата успешно подключена к GCP IoT Core, мы можем использовать консоль GCP IoT Core для взаимодействия с ней. Скетч отправляет сообщение в / devices / {deviceId} / state тема каждые 5 секунд и прослушивает сообщения на обоих / devices / {deviceId} / config topic и / devices / {deviceId} / commands / # темы.

На странице устройства в консоли GCP IoT Core нажмите кнопку «ОТПРАВИТЬ КОМАНДУ».

Появится модальное диалоговое окно, в котором вы можете ввести сообщение для отправки. На скриншоте ниже «Здравствуйте!» был введен. Нажмите кнопку «ОТПРАВИТЬ КОМАНДУ», чтобы отправить сообщение.

Как только плата получит сообщение, она распечатает его на последовательном мониторе.

Чтобы просмотреть сообщения, которые отправляет форум, щелкните вкладку «Конфигурация и история состояний».

Сообщения будут отображаться в формате с кодировкой Base64. Чтобы просмотреть значение, щелкните значок и запись в списке и выберите переключатель «Текст».

На скриншоте выше доска отправляла "привет 464488" значение, значение 464488 является результатом millis () функции на доске.

Заключение

В этом руководстве мы рассмотрели, как безопасно использовать плату Arduino MKR GSM 1400 с GCP IoT Core. Подписанный JWT использовался для аутентификации в GCP IoT Core с использованием протокола MQTT с ATECC508A или ATECC608A, хранящими закрытый ключ, используемый для подписи JWT. Сообщения MQTT отправлялись на доску и с нее.

Это только начало, вы можете использовать GCP IoT Core со многими другими услугами, которые предоставляет GCP!

Код

Github
https://github.com/arduino/ArduinoCloudProviderExamples

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

  1. ADLINK в партнерстве с Google Cloud предлагает готовые решения для Интернета вещей
  2. Проект Интернета вещей на основе Raspberry PI Подключение датчика DHT11
  3. Windows 10 IoT Core и SHT15
  4. Windows 10 IoT Core для Raspberry Pi 3, модель B +
  5. Windows 10 IoT Core:робот, управляемый речью
  6. Двухъядерная отладка Portenta H7
  7. Arduino - Сделать снимок - Загрузить на Google Диск
  8. Монитор сердечного ритма с использованием Интернета вещей
  9. Бассейн Azure IoT
  10. Шлюзы IoT:руководство по подключению вещей к облаку