Conecte seu Arduino MKR NB 1500 ao Azure IoT Hub com Segurança
Componentes e Materiais Necessários
| Componente | Quantidade |
|---|---|
| Arduino MKR NB 1500 | 1 |
| Cabo Micro-USB para USB | 1 |
| Bateria LiPo 3.7V | 1 |
| Cartão Micro SIM | 1 |
Aplicativos e Serviços Online
- Arduino IDE
- Microsoft Azure
Sobre este Projeto
Nota: Este tutorial pode estar desatualizado. Para uma versão mais atual, consulte este link.
Introdução
O Azure IoT Hub permite "conectar, monitorar e gerenciar bilhões de dispositivos para desenvolver aplicações de Internet das Coisas (IoT) com segurança".
Os dispositivos podem se conectar ao Azure IoT Hub usando os protocolos HTTPS, AMQP e MQTT. O Azure também fornece SDKs para várias linguagens de programação que abstraem esses protocolos. Além disso, é possível conectar-se via cliente MQTT. Esta página tem mais informações sobre o suporte MQTT do IoT Hub.
Este tutorial mostra como conectar uma placa Arduino MKR NB 1500 de forma segura ao Azure IoT Hub usando um cliente MQTT. O MQTT (Message Queuing Telemetry Transport) é um protocolo de conectividade M2M (machine-to-machine) que fornece transporte de publicação e assinatura de mensagens.
Os dispositivos podem usar tokens SAS ou certificados X.509 para autenticação com o Azure IoT Hub. Mais informações aqui. Neste tutorial, usaremos um certificado X.509 para autenticar a placa.
Todas as placas Arduino MKR com conectividade integrada, incluindo a MKR NB 1500, possuem um elemento criptográfico Microchip ATECC508A ou ATECC608A. Este elemento pode gerar e armazenar com segurança uma chave ECC (Elliptic Curve Cryptography) de 256 bits.
Configuração de Software e Hardware
Se você não tem o Arduino IDE instalado, baixe e instale.
Após a instalação, certifique-se de ter o pacote "Arduino SAMD Boards" mais recente. Verifique abrindo o Arduino IDE e acessando Ferramentas → Placa: "..." → Gerenciador de Placas..., pesquisando por "Arduino SAMD". No momento da escrita, a versão 1.6.20 era a mais recente.
Em seguida, instale as bibliotecas necessárias pelo Gerenciador de Bibliotecas do Arduino IDE (Sketch → Incluir Biblioteca → Gerenciar Bibliotecas...):
- MKRNB
- ArduinoBearSSL
- ArduinoECCX08
- ArduinoMqttClient
- Arduino Cloud Provider Examples
Insira o cartão micro SIM no slot inferior da MKR NB 1500 e conecte a bateria LiPo 3.7V ao conector JST. Conecte a placa ao computador via cabo micro USB, selecione a porta serial em Ferramentas → Porta "..." e a placa Arduino MKR NB 1500 em Ferramentas → Placa "...".
Configurando e Adicionando a Placa ao Azure IoT Hub
O Azure IoT Hub permite dispositivos que se conectam via MQTT e usam certificados X.509 para autenticação. Geraremos um certificado X.509 autoassinado na placa e adicionaremos seu SHA1 ao portal do Azure IoT Hub.
O certificado autoassinado pode ser gerado usando um sketch de exemplo da biblioteca ArduinoECCX08. Abra no Arduino IDE: Arquivo → Exemplos → ArduinoECCX08 → Ferramentas → ECCX08SelfSignedCert. Carregue o sketch na placa e abra o Monitor Serial. Certifique-se de que a configuração de final de linha esteja em "Both NL & CR".
Este sketch solicitará a configuração permanente do elemento criptográfico ATECC508A/ECC608A se ele não estiver configurado e travado. NOTA: Este processo de travamento é permanente e irreversível, mas necessário para usar o elemento criptográfico. A configuração permite usar 5 slots de chave privada (0-4) com qualquer provedor de nuvem, e uma chave privada pode ser regenerada a qualquer momento para qualquer um dos 5 slots. Quando a placa sai de fábrica, o elemento criptográfico está em estado não configurado e desbloqueado.
Depois, você será solicitado a fornecer informações para o certificado autoassinado: ano, mês, dia e hora de emissão, e período de validade em anos. Usaremos o slot 0 para gerar e armazenar a chave privada usada para assinar o certificado (slots 1-4 para chaves adicionais). O slot 8 armazenará a data de emissão, validade e a assinatura do certificado. Nota: Como a chave privada é gerada dentro do elemento criptográfico, ela nunca sai do dispositivo e é armazenada com segurança, não podendo ser lida.
Copie o valor SHA1 gerado (no exemplo: 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b). Usaremos como impressão digital (fingerprint) do certificado no Azure IoT Hub.
Agora, faça login no portal do Azure IoT Hub e crie um novo dispositivo:
- Acesse portal.azure.com.
- Se não tiver conta Azure, clique em "Criar uma!" e siga o processo. Caso contrário, faça login.
- No painel de navegação esquerdo, clique em "Criar um recurso".
- Selecione "Internet das Coisas" e depois "IoT Hub".
- Preencha Assinatura, Grupo de recursos, Região e Nome do IoT Hub. No exemplo: "Free Trial", "MKR", "Leste dos EUA", "ArduinoProjectHubTutorial". Clique em "Revisar + criar".
- Na tela de confirmação, clique em "Criar".
- Aguarde alguns minutos para a implantação.
- Quando concluída, clique em "Ir para o recurso".
- Em "Explorar", clique em "Dispositivos IoT".
- Clique em "Adicionar" para criar um novo dispositivo.
- Digite um nome (ex: "MyMKRNB1500"), clique na aba "X.509 Autoassinado". Cole o SHA1 do Monitor Serial nos campos "Thumbprint Primário" e "Thumbprint Secundário". Clique em "Salvar".
- O dispositivo aparecerá na lista.
Conectando a Placa ao Azure IoT Hub
- Abra o sketch do Azure IoT Hub NB no Arduino IDE: Arquivo → Exemplos → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB.
- Na aba
arduino_secrets.h, preencha o PIN do cartão SIM (se necessário):
// Configurações NB
#define SECRET_PINNUMBER ""
- Atualize o broker com o endpoint do seu Azure IoT Hub:
// Hostname do broker Azure IoT Hub
#define SECRET_BROKER ".azure-devices.net"
- Atualize o device ID com o nome do dispositivo criado no portal:
// ID do dispositivo
#define SECRET_DEVICE_ID ""
- Carregue o sketch na placa e abra o Monitor Serial. A placa tentará conectar à rede celular e, se bem-sucedida, conectará ao Azure IoT Hub via MQTT.
Interagindo com a Placa no Azure IoT Core
Com a placa conectada, podemos usar o portal do Azure IoT Hub para interagir. O sketch envia mensagens ao tópico devices/{deviceId}/messages/events/ a cada 5 segundos e escuta mensagens no tópico devices/{deviceId}/messages/devicebound/#.
- No portal, clique na linha do device ID na tabela de Dispositivos IoT.
- Clique no botão "Mensagem para dispositivo" na barra de ferramentas.
- Digite o corpo da mensagem (ex: "Olá :)") e clique em "Enviar Mensagem".
- Quando a placa receber a mensagem, o Monitor Serial no Arduino IDE a exibirá.
Para visualizar as mensagens que a placa envia:
- Acesse shell.azure.com (selecione "Bash" se for a primeira vez).
- Instale a extensão IoT Hub:
az extension add --name azure-cli-iot-ext
- Execute o comando (substitua
<hub name>pelo nome do seu hub; digite 'y' se solicitado para atualização de dependência):
az iot hub monitor-events --hub-name
- As mensagens aparecerão no shell.
Conclusão
Neste tutorial, cobrimos como usar com segurança uma placa Arduino MKR NB 1500 com o Azure IoT Hub. Um certificado X.509 autoassinado autenticou com o Azure IoT Hub usando o protocolo MQTT, com o ATECC508A/ATECC608A armazenando a chave privada associada ao certificado. Mensagens MQTT foram enviadas e recebidas da placa.
Este é apenas o começo; você pode usar o Azure IoT Hub com muitos outros serviços do Azure!
Código
Repositório no GitHub: ArduinoCloudProviderExamples
Processo de manufatura
- Como IoT e 5G Estão Transformando Locais de Trabalho Modernos
- Arduino Lança Portenta H7: Placa IoT Industrial‑Grade Estreia na CES
- Azure RTOS Expande nas Principais Plataformas Embarcadas com Novos Kits de Desenvolvimento
- Conecte Raspberry Pi 3 a Sensor DHT11 e Envie Dados para Nuvem ThingsIo.ai
- Azure vs AWS: Qual Plataforma de Nuvem Vence para IoT?
- Construa um Datalogger GPS com Análise Espacial no Azure IoT Hub
- Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
- Controle IoT Remoto de Braço Robótico Personalizado
- Rastreador Solar IoT: Gestão Inteligente de Energia com Arduino
- Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto