Безопасное подключение Arduino MKR GSM 1400 к Google Cloud IoT Core — пошаговое руководство
Компоненты и материалы
| Arduino MKR GSM 1400 | ×1 |
| Кабель Micro-USB | ×1 |
| LiPo аккумулятор 3.7В | ×1 |
| Micro SIM-карта | ×1 |
| Антенна U.FL (cellular) | ×1 |
Программное обеспечение и сервисы
- Arduino IDE
- Google Cloud IoT Core
О проекте
Примечание: это руководство может быть устаревшим. Актуальная версия здесь.
Введение
Устройства подключаются к GCP IoT Core по HTTP или MQTT. Это руководство показывает безопасное MQTT-подключение Arduino MKR GSM 1400. MQTT — легкий протокол M2M с pub/sub. Аутентификация — через JSON Web Tokens (JWT, RFC 7519). GCP поддерживает RSA и ECC (Elliptic Curve) для проверки подписей JWS (RFC 7515).
Каждая плата MKR с встроенной связью оснащена криптоэлементом Microchip ATECC508A/ATECC608A. Он безопасно генерирует и хранит 256-битный ECC-ключ. Мы используем приватный ключ внутри криптоэлемента для подписи JWT.
Настройка ПО и железа
- Установите Arduino IDE.
- Обновите пакет «Arduino SAMD Boards» до последней версии (Tools → Board → Boards Manager → «Arduino SAMD»).
- Установите библиотеки через Library Manager:
- MKRGSM
- Arduino_JSON
- ArduinoECCX08 (версия 1.3.0+)
- ArduinoMqttClient (0.1.3+)
- Arduino Cloud Provider Examples (1.2.0+)
- Вставьте SIM, подключите антенну и LiPo к JST. Соедините плату USB, выберите порт и плату «Arduino MKR GSM 1400».


Настройка и регистрация устройства в GCP IoT Core
GCP IoT Core требует JWT для MQTT. Сгенерируем пару ключей на плате и добавим публичный ключ в консоль GCP.
- Откройте пример: File → Examples → ArduinoECCX08 → Tools → ECCX08JWSPublicKey. Загрузите, откройте Serial Monitor (Both NL & CR).
- Скетч предложит irreversibly настроить и заблокировать криптоэлемент (нужно для использования). На заводе он не настроен.
- Выберите слот 0 для приватного ключа (слоты 0–4). Приватный ключ никогда не покидает чип.

Скопируйте сгенерированный публичный ключ (PEM формат):
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4+DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzR
e2kqGWFEb+QP4V4YUK9Zy7PsmRABi1sWgxiAoEhg1FEQgg==
-----END PUBLIC KEY-----
Регистрация в консоли GCP
- Зайдите на cloud.google.com, войдите.
- Нажмите «GO TO CONSOLE».
- Создайте проект («MKR GCP Tutorial»).
- В меню → Big Data → IoT Core.
- Enable API.
- Create a device registry: Registry ID «MKR_GCP_Tutorial», регион «us-central1».
- Devices → + CREATE A DEVICE. Имя «MyMKRGSM1400», Public key format «ES256», вставьте PEM-ключ. Create.

Подключение платы к GCP IoT Core
- Откройте пример: File → Examples → Arduino Cloud Provider Examples → GoogleCloudPlatformIoTCore → GCP_IoT_Core_GSM.
- Вкладка
arduino_secrets.h: заполните PIN (если нужен), GPRS APN, логин, пароль оператора.#define SECRET_PINNUMBER "" #define SECRET_GPRS_APN "your_apn" #define SECRET_GPRS_LOGIN "login" #define SECRET_GPRS_PASSWORD "password" - Заполните проектные данные:
#define SECRET_PROJECT_ID "mkr-gcp-tutorial" #define SECRET_CLOUD_REGION "us-central1" #define SECRET_REGISTRY_ID "MKR_GCP_Tutorial" #define SECRET_DEVICE_ID "MyMKRGSM1400" - Загрузите скетч, откройте Serial Monitor. Плата подключится к сотовой сети, затем к GCP по MQTT.

Взаимодействие с устройством в GCP IoT Core
Скетч каждые 5 секунд шлет состояние в топик /devices/{deviceId}/state и слушает /devices/{deviceId}/config и /devices/{deviceId}/commands/#.
- В консоли устройства нажмите «SEND COMMAND».
- Введите сообщение (например, «Hello There!»), отправьте.
- На Serial Monitor платы появится сообщение.


Просмотр истории состояния: вкладка «Configuration & state history». Сообщения в Base64 — кликните и выберите «Text».

Заключение
Мы рассмотрели безопасное подключение MKR GSM 1400 к GCP IoT Core: JWT, подписанный приватным ключом в ATECC508A/608A, MQTT, двусторонний обмен сообщениями. Это отправная точка для интеграции с другими сервисами GCP.
Код
GitHub
Производственный процесс
- ADLINK и Google Cloud сотрудничают для поставки бесшовных IoT-решений
- Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
- Точный мониторинг температуры и влажности с SHT15 на Windows 10 IoT Core
- Установка Windows 10 IoT Core на Raspberry Pi 3 Model B+: Пошаговое руководство
- Построение робота с голосовым управлением на Windows 10 IoT Core на Raspberry Pi 2
- Отладка двухъядерной системы Arduino Portenta H7 с Segger J-Link
- Arduino Mega: съёмка фото и автоматическая загрузка в Google Drive
- IoT-монитор пульса в реальном времени на Arduino и MAX30100
- Система управления бассейном на Azure IoT: умные датчики и удаленный мониторинг
- Мастерство IoT-шлюзов: бесшовное подключение устройств к облаку