Desenvolvimento de dispositivo IoT

Essa visão geral apresenta os principais conceitos sobre o desenvolvimento de dispositivos que se conectam a uma solução típica da Internet das Coisas do Azure. Cada seção inclui links para conteúdos que fornecem mais detalhes e diretrizes.

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

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

Na Internet das Coisas do Azure, um desenvolvedor de dispositivo escreve o código para executar nos dispositivos da solução. Esse código normalmente:

  • Estabelece uma conexão segura com um ponto de extremidade na nuvem.
  • Envia a telemetria coletada de sensores anexados para a nuvem.
  • Gerencia o estado do dispositivo e sincroniza esse estado com a nuvem.
  • Responde aos comandos enviados da nuvem.
  • Habilita a instalação de atualizações de software da nuvem.
  • Permite que o dispositivo continue funcionando enquanto está 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 mais baratas 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. Um MPU acessa essa funcionalidade a partir de componentes em chips de suporte.
  • Um MCU geralmente usa um sistema operacional em tempo real (RTOS) ou executa bare-metal (sem sistema operacional) e fornece respostas em tempo real e reações altamente determinísticas a eventos externos. Os 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 em nuvem que permite criar dispositivos seguros com fácil provisionamento e gerenciamento.

Eclipse ThreadX é um sistema operacional em tempo real para IoT e dispositivos de borda 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 de comunicação e segurança internos para dispositivos conectados à Internet. Ele compreende um MCU cruzado, seguro e conectado, um sistema operacional personalizado baseado em Linux de alto nível e um serviço de segurança baseado em nuvem que fornece segurança contínua e renovável.

Primitivos

Um dispositivo Internet das Coisas do Azure podem usar os seguintes primitivos para interagir com a nuvem:

  • Mensagens do dispositivo para nuvem para enviar telemetria de série temporal para a nuvem. Por exemplo, dados de temperatura coletados de um sensor anexado ao dispositivo.
  • Carregamentos 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 carregamentos para salvar a largura de banda.
  • Dispositivos gêmeos 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 ele controla para a nuvem e receber uma temperatura de destino 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, seus recursos e suas relações 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 a reinicialização do dispositivo em 30 segundos.
  • Mensagens da nuvem para dispositivo para receber notificações unidirecionais da nuvem. Por exemplo, uma notificação de que uma atualização está pronta para ser baixada.

Para saber mais, confira Orientação de comunicações de dispositivo para nuvem e Orientação de comunicações de nuvem para dispositivo.

SDKs de dispositivo

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

Para dispositivos MPU, os SDKs do dispositivo estão disponíveis para as seguintes linguagens:

Para dispositivos MCU, confira:

Exemplos e diretrizes

Todos os SDKs do dispositivo incluem exemplos que demonstram como usar o SDK para se conectar à nuvem, enviar telemetria e usar os outros primitivos.

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 e cenários de dispositivos.

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

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

Desenvolvimento de dispositivo sem um SDK do dispositivo

Embora seja recomendável usar um dos SDKs do dispositivo, pode haver cenários em que você vai preferir não fazê-lo. Nesses cenários, o código do seu dispositivo deve usar diretamente um dos protocolos de comunicação com suporte do Hub IoT e do Serviço de Provisionamento de Dispositivos (DPS).

Para obter mais informações, consulte:

Modelagem de dispositivo

O IoT Plug and Play permite que os criadores de solução integrem dispositivos IoT às suas soluções sem nenhuma 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. Esse modelo é 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, sejam esses dados um fluxo regular de leituras de 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 reinicializar um gateway ou tirar uma foto usando uma câmera remota.

É possível agrupar esses elementos em interfaces para reutilização entre modelos para facilitar a colaboração e acelerar o desenvolvimento.

O modelo é especificado usando a Linguagem de Definição de Gêmeos Digitais (DTDL).

O uso de IoT Plug and Play, modelagem e DTDL é opcional. Você pode usar os primitivos do dispositivo IoT sem usar o IoT Plug and Play ou a 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, ao implementar um dispositivo IoT Plug and Play, há um conjunto de convenções a seguir. Essas convenções fornecem uma maneira padrão de implementar o modelo de dispositivo no código usando os primitivos disponíveis nos SDKs do dispositivo.

Para obter mais informações, consulte:

Código do dispositivo em contêineres

Se você usar contêineres, como o Docker, para executar o código do dispositivo poderá implantar o código em seus dispositivos usando os recursos da infraestrutura do contêiner. Os contêineres também permitem que você defina um ambiente de runtime para seu código com todas as versões necessárias de biblioteca e pacote 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, confira Desenvolver seus próprios módulos do IoT Edge.

Dica

O Azure IoT Edge habilita vários cenários. Além de executar seu 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, confira O que é o Azure IoT Edge?

Ferramentas de desenvolvimento

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

Ferramenta Descrição
Hub IoT do Azure (extensão do VS Code) Essa extensão do VS Code permite que você gerencie seus recursos e dispositivos Hub IoT de dentro do VS Code.
Azure IoT Explorer Essa ferramenta de plataforma cruzada permite gerenciar seus recursos e dispositivos Hub IoT a partir de um aplicativo da área de trabalho.
Extensão de IoT do Azure para a CLI do Azure Essa extensão da CLI inclui comandos como az iot device simulate, az iot device c2d-message, e az iot hub monitor-events que ajudam a testar interações com dispositivos.

Próximas etapas

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