Desenvolvimento de dispositivos IoT

Esta visão geral apresenta os principais conceitos sobre o desenvolvimento de dispositivos que se conectam a uma solução típica do Azure IoT. Cada seção inclui links para conteúdo que fornece mais detalhes e orientações.

O diagrama a seguir mostra uma visão de alto nível dos componentes em uma solução de IoT típica. Este artigo se concentra nos dispositivos e gateway mostrados no diagrama.

Diagrama que mostra a arquitetura da solução de IoT de alto nível destacando as áreas de conectividade do dispositivo.

No Azure IoT, um desenvolvedor de dispositivo grava o código para ser executado nos dispositivos da solução. Este código normalmente:

  • Estabelece uma conexão segura com um ponto de extremidade na nuvem.
  • Envia telemetria coletada de sensores conectados para a nuvem.
  • Gerencia o estado do dispositivo e sincroniza esse estado com a nuvem.
  • Responde a comandos enviados da nuvem.
  • Permite a instalação de atualizações de software a partir da nuvem.
  • Permite que o dispositivo continue funcionando enquanto estiver desconectado da nuvem.

Tipos de dispositivos

Os dispositivos IoT podem ser separados em duas grandes categorias, microcontroladores (MCUs) e microprocessadores (MPUs):

  • As MCUs são menos dispendiosas e mais simples de operar do que as MPUs.
  • Um MCU contém muitas das funções, como memória, interfaces e E/S no próprio chip. Uma MPU acede a esta funcionalidade a partir de componentes em chips de suporte.
  • Um MCU geralmente usa um sistema operacional em tempo real (RTOS) ou funciona bare-metal (sem sistema operacional) e fornece respostas em tempo real e reações altamente determinísticas a eventos externos. As MPUs geralmente executam um sistema operacional de uso geral, como Windows, Linux ou macOS, que fornece uma resposta não determinística em tempo real. Normalmente, não há garantia de quando uma tarefa será concluída.

Exemplos de hardware e sistemas operacionais especializados incluem:

O Windows para IoT é uma versão incorporada do Windows para MPUs com conectividade na nuvem que permite criar dispositivos seguros com fácil provisionamento e gerenciamento.

O Eclipse ThreadX é um sistema operacional em tempo real para dispositivos IoT e edge alimentados por MCUs. O Eclipse ThreadX foi projetado para suportar dispositivos altamente restritos alimentados por bateria e com menos de 64 KB de memória flash.

O Azure Sphere é uma plataforma de aplicativos segura e de alto nível com recursos internos de comunicação e segurança para dispositivos conectados à Internet. Ele compreende um MCU seguro, conectado e cruzado, um sistema operacional personalizado de alto nível baseado em Linux e um serviço de segurança baseado em nuvem que fornece segurança contínua e renovável.

Primitivos

Um dispositivo IoT do Azure pode usar as seguintes primitivas para interagir com a nuvem:

  • Mensagens de dispositivo para nuvem para enviar telemetria de séries cronológicas para a nuvem. Por exemplo, dados de temperatura coletados de um sensor conectado ao dispositivo.
  • Upload de arquivos para arquivos de mídia, como imagens e vídeos capturados. Dispositivos conectados intermitentemente podem enviar lotes de telemetria. Os dispositivos podem compactar uploads para economizar largura de banda.
  • Gêmeos de dispositivo para compartilhar e sincronizar dados de estado com a nuvem. Por exemplo, um dispositivo pode usar o dispositivo gêmeo para relatar o estado atual de uma válvula que controla para a nuvem e para receber uma temperatura alvo desejada da nuvem.
  • Gêmeos digitais para representar um dispositivo no mundo digital. Por exemplo, um gêmeo digital pode representar a localização física de um dispositivo, suas capacidades e seus relacionamentos com outros dispositivos.
  • Métodos diretos para receber comandos da nuvem. Um método direto pode ter parâmetros e retornar uma resposta. Por exemplo, a nuvem pode chamar um método direto para solicitar que o dispositivo seja reinicializado em 30 segundos.
  • Mensagens da nuvem para o dispositivo para receber notificações unidirecionais da nuvem. Por exemplo, uma notificação de que uma atualização está pronta para download.

Para saber mais, consulte Diretrizes de comunicações de dispositivo para nuvem e Diretrizes de comunicações de nuvem para dispositivo.

SDKs de dispositivo

Os SDKs de dispositivo fornecem abstrações de alto nível que permitem usar as primitivas sem conhecimento dos protocolos de comunicação subjacentes. Os SDKs de dispositivo também lidam com os detalhes de estabelecer uma conexão segura com a nuvem e autenticar o dispositivo.

Para dispositivos MPU, os SDKs de dispositivo estão disponíveis para os seguintes idiomas:

Para dispositivos MCU, consulte:

Amostras e orientações

Todos os SDKs de dispositivo incluem exemplos que demonstram como usar o SDK para se conectar à nuvem, enviar telemetria e usar as outras primitivas.

O site de desenvolvimento de dispositivos IoT inclui tutoriais e guias de instruções que mostram como implementar código para uma variedade de tipos de dispositivos e cenários.

Você pode encontrar mais exemplos no navegador de exemplo de código.

Para saber mais sobre como implementar reconexões automáticas para pontos de extremidade, consulte Gerenciar reconexões de dispositivos para criar aplicativos resilientes.

Desenvolvimento de dispositivos sem um SDK de dispositivo

Embora seja recomendável usar um dos SDKs de dispositivo, pode haver cenários em que você prefira não fazê-lo. Nesses cenários, o código do dispositivo deve usar diretamente um dos protocolos de comunicação suportados pelo Hub IoT e pelo DPS (Device Provisioning Service).

Para obter mais informações, consulte:

Modelagem de dispositivos

O IoT Plug and Play permite que os construtores de soluções integrem dispositivos IoT com suas soluções sem qualquer configuração manual. No núcleo do IoT Plug and Play, está um modelo de dispositivo que um dispositivo usa para anunciar seus recursos para um aplicativo habilitado para IoT Plug and Play, como o IoT Central. Este modelo está estruturado como um conjunto de elementos que definem:

  • Propriedades que representam o estado somente leitura ou gravável de um dispositivo ou outra entidade. Por exemplo, um número de série do dispositivo pode ser uma propriedade somente leitura e uma temperatura de destino em um termostato pode ser uma propriedade gravável.
  • Telemetria que são os dados emitidos por um dispositivo, quer os dados sejam um fluxo regular de leituras do sensor, um erro ocasional ou uma mensagem informativa.
  • Comandos que descrevem uma função ou operação que pode ser feita em um dispositivo. Por exemplo, um comando pode reiniciar um gateway ou tirar uma foto usando uma câmera remota.

Você pode agrupar esses elementos em interfaces para reutilizar entre modelos para facilitar a colaboração e acelerar o desenvolvimento.

O modelo é especificado usando a Digital Twins Definition Language (DTDL).

O uso de IoT Plug and Play, modelagem e DTDL é opcional. Você pode usar as primitivas de dispositivo IoT sem usar IoT Plug and Play ou modelagem. O serviço Gêmeos Digitais do Azure também usa modelos DTDL para criar gráficos gêmeos com base em modelos digitais de ambientes como edifícios ou fábricas.

Como desenvolvedor de dispositivos, quando você implementa um dispositivo IoT Plug and Play, há um conjunto de convenções a serem seguidas. Essas convenções fornecem uma maneira padrão de implementar o modelo de dispositivo no código usando as primitivas disponíveis nos SDKs de dispositivo.

Para saber mais, veja:

Código do dispositivo em contentores

Se você usar contêineres, como no Docker, para executar o código do dispositivo, poderá implantar código em seus dispositivos usando os recursos da infraestrutura de contêiner. Os contêineres também permitem definir um ambiente de tempo de execução para seu código com todas as versões de biblioteca e pacote necessárias instaladas. Os contêineres facilitam a implantação de atualizações e o gerenciamento do ciclo de vida de seus dispositivos IoT.

O Azure IoT Edge executa o código do dispositivo em contêineres. Você pode usar o Azure IoT Edge para implantar módulos de código em seus dispositivos. Para saber mais, consulte Desenvolver seus próprios módulos do IoT Edge.

Gorjeta

O Azure IoT Edge permite vários cenários. Além de executar o código do dispositivo IoT em contêineres, você pode usar o Azure IoT Edge para executar serviços do Azure em seus dispositivos e implementar gateways de campo. Para obter mais informações, consulte O que é o Azure IoT Edge?

Ferramentas de programação

A tabela a seguir lista algumas das ferramentas de desenvolvimento de IoT disponíveis:

Ferramenta Description
Azure IoT Hub (extensão VS Code) Esta extensão VS Code permite-lhe gerir os seus recursos e dispositivos do Hub IoT a partir do VS Code.
Azure IoT explorer Esta ferramenta multiplataforma permite-lhe gerir os seus recursos e dispositivos do Hub IoT a partir de uma aplicação de ambiente de trabalho.
Extensão do Azure IoT para CLI do Azure Esta extensão da CLI inclui comandos como az iot device simulate, az iot device c2d-messagee az iot hub monitor-events que ajudam a testar interações com dispositivos.

Próximos passos

Agora que você viu uma visão geral do desenvolvimento de dispositivos nas soluções do Azure IoT, algumas próximas etapas sugeridas incluem: