Conectar Arduino MKR GSM 1400 a Google Cloud IoT Core de Forma Segura – Guía Paso a Paso
Componentes y materiales
- Arduino MKR GSM 1400 – 1 ud.
- Cable Micro-USB a USB – 1 ud.
- Batería LiPo 3,7 V – 1 ud.
- Tarjeta Micro SIM – 1 ud.
- Antena celular UF.L – 1 ud.
Software y servicios online
- Arduino IDE
- Google Cloud IoT Core
Sobre el proyecto
Nota: Este tutorial podría estar desactualizado. Consulte aquí una versión más reciente.
Introducción
Los dispositivos pueden conectar a GCP IoT Core mediante HTTP o MQTT. Esta guía explica cómo conectar un Arduino MKR GSM 1400 de forma segura usando un cliente MQTT. MQTT (Message Queuing Telemetry Transport) es un protocolo de conectividad M2M que proporciona transporte de mensajería tipo publicar/suscribir.
La autenticación requiere JSON Web Tokens (JWT) (RFC 7519). GCP IoT Core soporta algoritmos RSA y Curva Elíptica para verificar firmas JWS (RFC 7515).
Cada placa MKR con conectividad integrada (incluido MKR GSM 1400) lleva un elemento criptográfico Microchip ATECC508A/ATECC608A. Este elemento genera y almacena de forma segura una clave ECC de 256 bits. Usaremos la clave privada dentro del elemento para firmar el JWT.
Configuración software y hardware
- Instalar Arduino IDE si no lo tienes.
- Instalar paquete «Arduino SAMD Boards» (v1.6.20 o superior) vía Gestor de tarjetas.
- Instalar librerías vía Gestor de librerías:
- MKRGSM
- Arduino_JSON
- ArduinoECCX08 (≥ 1.3.0)
- ArduinoMqttClient (≥ 0.1.3)
- Arduino Cloud Provider Examples (≥ 1.2.0)
- Insertar tarjeta SIM, conectar antena, conectar batería LiPo al conector JST.
- Conectar MKR GSM 1400 por USB, seleccionar puerto y tarjeta «Arduino MKR GSM 1400» en el IDE.


Configurar y añadir la placa a GCP IoT Core
GCP IoT Core requiere JWT para autenticación MQTT. Generaremos par de claves en la placa y añadiremos la clave pública (PEM) en la consola GCP.
- Abrir sketch ejemplo: Archivo → Ejemplos → ArduinoECCX08 → Tools → ECCX08JWSPublicKey.
- Subir y abrir Monitor Serie (ajuste «Both NL & CR»).
- El sketch pide configurar permanentemente el elemento criptográfico si no está configurado/bloqueado. Este bloqueo es irreversible, pero necesario. La configuración permite 5 ranuras de clave privada (0–4), regenerables en cualquier momento.
- Elegir ranura 0 para este tutorial. La clave privada se genera dentro del elemento y nunca sale del dispositivo.

Copiar la clave pública generada (formato PEM). Ejemplo:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4+DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzR
e2kqGWFEb+QP4V4YUK9Zy7PsmRABi1sWgxiAoEhg1FEQgg==
-----END PUBLIC KEY-----
Añadir dispositivo en consola GCP IoT Core
- Ir a cloud.google.com → «Sign In».
- «GO TO CONSOLE» → panel principal.
- «CREATE» → nuevo proyecto (ej. «MKR GCP Tutorial»).
- Menú ☰ → BIG DATA → «IoT Core».
- «Enable API».
- «Create a device registry»: Registry ID (ej. «MKR_GCP_Tutorial»), región (ej. «us-central1»).
- En registro → «Devices» → «+ CREATE A DEVICE».
- Nombre dispositivo (ej. «MyMKRGSM1400»), formato clave pública «ES256», pegar clave PEM. «Create».

Conectar la placa a GCP IoT Core
- Abrir sketch: Archivo → Ejemplos → Arduino Cloud Provider Examples → GoogleCloudPlatformIoTCore → GCP_IoT_Core_GSM.
- En pestaña
arduino_secrets.hrellenar:// GSM settings #define SECRET_PINNUMBER "" #define SECRET_GPRS_APN "TU_APN" #define SECRET_GPRS_LOGIN "tu_login" #define SECRET_GPRS_PASSWORD "tu_password" // GCP IoT Core #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" - Subir sketch y abrir Monitor Serie. La placa conecta a red celular y luego a GCP IoT Core vía MQTT.

Interactuar con la placa en GCP IoT Core
El sketch envía mensaje a /devices/{deviceId}/state cada 5 s y escucha en /devices/{deviceId}/config y /devices/{deviceId}/commands/#.
- En página del dispositivo → «SEND COMMAND».
- Introducir mensaje (ej. «Hello There!»), «SEND COMMAND».
- La placa lo recibe e imprime en Monitor Serie.


Para ver mensajes enviados por la placa: pestaña «Configuration & state history». Los mensajes aparecen en Base64; clic en entrada y selecciona «Text» para ver contenido.

Conclusión
Hemos visto cómo usar de forma segura un Arduino MKR GSM 1400 con GCP IoT Core: JWT firmado con clave privada almacenada en ATECC508A/608A, MQTT para mensajería bidireccional. Es solo el principio; puedes integrar con otros servicios de GCP.
Código
Repositorio GitHub
Proceso de manufactura
- Conectar Raspberry Pi 3 a sensor DHT11 y subir datos a cloud ThingsIo.ai
- Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
- Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
- Construye un Robot Controlado por Voz con Windows 10 IoT Core en Raspberry Pi 2
- Depuración del sistema dual-core Arduino Portenta H7 con Segger J-Link
- Arduino Mega: Captura Fotos y Súbelas Automáticamente a Google Drive
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Construye una Torre de Sensores con Arduino Cloud: Temperatura, Movimiento y Gas
- Sistema de Control de Piscina con Azure IoT: Sensores Inteligentes y Monitorización Remota
- ADLINK y Google Cloud Colaboran para Entregar Soluciones IoT Sin Fisuras
- Dominando los gateways IoT: Conecta dispositivos a la nube sin fisuras