Exercício – Enviar dados do sensor de ambiente em tempo real do Azure RTOS para o Hub IoT

Concluído

Neste exercício, trabalharemos em parceria com um aplicativo de alto nível para enviar dados do sensor de ambiente em tempo real do Azure RTOS ao Hub IoT.

Etapa 1: Abrir o projeto

  1. Inicie o Visual Studio Code para abrir o projeto.

  2. No menu, clique em Arquivo e Abrir Pasta.

  3. Abra a pasta laboratório do Azure-Sphere.

  4. Abra a pasta Lab_7_Partnering_with_RTOS_environment.

  5. Clique em Selecionar Pasta ou no botão OK para abrir o projeto.

Se você instalou a extensão Peacock do Visual Studio Code, ele ficará azul. A instância azul está conectada ao aplicativo de alto nível em execução no núcleo Cortex-A7.

Etapa 2: Definir a configuração da placa de desenvolvimento

Esses laboratórios dão suporte a placas de desenvolvedor da Avnet e da Seeed Studio. Você precisa definir a configuração que corresponde à sua placa de desenvolvimento.

A configuração padrão da placa de desenvolvedor é destinada ao Kit de Início do Azure Sphere da Avnet Revisão 1. Se você tiver essa placa, não precisará realizar nenhuma configuração adicional.

  1. Abra o arquivo CMakeList.txt.

  2. Adicione # ao início da linha set Avnet para desabilitá-la.

  3. Remova a marca de comentário do comando set que corresponde à sua placa de desenvolvimento de dispositivo do Azure Sphere.

    set(AVNET TRUE "AVNET Azure Sphere Starter Kit Revision 1 ")
    # set(AVNET_REV_2 TRUE "AVNET Azure Sphere Starter Kit Revision 2 ")
    # set(SEEED_STUDIO_RDB TRUE "Seeed Studio Azure Sphere MT3620 Development Kit (aka Reference Design Board or rdb)")
    # set(SEEED_STUDIO_MINI TRUE "Seeed Studio Azure Sphere MT3620 Mini Dev Board")
    
  4. Salve o arquivo. Isso vai gerar automaticamente o cache do CMake.

Etapa 3: Configurar as informações de conexão de IoT do Azure

  1. Abra o arquivo app_manifest.json.

  2. NÃO copiar o app_manifest. JSON que você salvou no bloco de notas, pois há novas propriedades neste manifesto do aplicativo.

  3. Atualize as propriedades de conexão do aplicativo do Hub IoT do Azure.

    • Atualize CmdArgs com o escopo da ID do DPS em IoT do Azure.
    • Atualize DeviceAuthentication com a ID do Locatário do Azure Sphere. Lembre-se de que esse é o valor numérico retornado pela execução do comando azsphere tenant show-selected.
  4. Atualize o AllowedConnections com o ponto de extremidade do serviço de provisionamento de dispositivo global, seu ponto de extremidade de DPS e seu ponto de extremidade do Hub IoT do Azure. Confira o exemplo abaixo para entender o formato correto desses pontos de extremidade.

  5. Você pode formatar o documento app_manifest.json clicando com o botão direito do mouse nele e selecionando Formatar Documento no menu de contexto.

  6. Examine seu arquivo manifest_app.json atualizado. Ele deve ser semelhante ao mostrado a seguir.

    {
        "SchemaVersion": 1,
        "Name": "AzureSphereIoTCentral",
        "ComponentId": "25025d2c-66da-4448-bae1-ac26fcdd3627",
        "EntryPoint": "/bin/app",
        "CmdArgs": [ "--ConnectionType", "DPS", "--ScopeID", "0ne0099999D" ],
        "Capabilities": {
            "Gpio": [
            "$NETWORK_CONNECTED_LED",
            "$LED_RED",
            "$LED_GREEN",
            "$LED_BLUE"
            ],
            "PowerControls": [
            "ForceReboot"
            ],
            "AllowedConnections": [
                "global.azure-devices-provisioning.net",
                "<Your device provisioning service endpoint>",
                "<Your Azure IoT hub endpoint>"
            ],
            "DeviceAuthentication": "9d7e79eb-9999-43ce-9999-fa8888888894"
            "AllowedApplicationConnections": [ "6583cf17-d321-4d72-8283-0b7c5b56442b" ]
        },
        "ApplicationType": "Default"
    }
    

Etapa 4: Definir um ponto de interrupção na função de retorno de chamada InterCoreHandler

  1. Abra main.c.

  2. Role até a função chamada InterCoreHandler.

    Observação

    Use Ir para o Símbolo no Editor no Visual Studio Code. Use o atalho de teclado Ctrl + Shift + O e comece a digitar InterCoreHandler. Frequentemente, você verá um nome de função listado duas vezes no menu suspenso. A primeira é o protótipo da função ou a declaração da assinatura de encaminhamento e a segunda é a implementação da função.

  3. Defina um ponto de interrupção na função InterCoreHandler na linha em que se encontra switch (ic_message_block->cmd)

    Observação

    Saiba como definir pontos de interrupção com esse artigo sobre Depuração no Visual Studio Code.

    The illustration shows how to set a breakpoint in the InterCoreHandler callback function.

Etapa 5: Iniciar o processo de build e implantação do aplicativo

  1. Selecione CMake: [Depurar]: Pronto na barra de status do Visual Studio Code.

  2. No Visual Studio Code, pressione F5 para compilar, implantar, iniciar e anexar o depurador remoto ao aplicativo que está agora executando o dispositivo do Azure Sphere.

Etapa 6: Depurando aplicativos do núcleo de tempo real e alto nível

  1. Quando o aplicativo de alto nível for iniciado, ele solicitará dados de ambiente do aplicativo de núcleo de tempo real.

  2. Sem fechar nem parar o aplicativo de alto nível, mude para a instância do Visual Studio Code que você deixou conectada ao núcleo de tempo real.

  3. Em pouco tempo, a execução do código vai parar no ponto de interrupção definido no código de tempo real.

  4. Vá até o código de tempo real e pressione F5 para continuar a execução.

  5. Volte para a instância do Visual Studio Code conectada ao aplicativo de alto nível. A execução do código deve ter parado no ponto de interrupção definido na função InterCoreHandler.

  6. Repita esse processo algumas vezes e remova os pontos de interrupção para que o código continue sendo executado

Etapa 7: Comportamento esperado do dispositivo

O Kit de Início do Azure Sphere da Avnet, revisões 1 e 2, tem um sensor de temperatura interno. Para outras placas, uma temperatura aleatória de 25 +/- 5 graus Celsius é gerada.

Kit de início MT3620 do Azure Sphere Revisões 1 e 2

The illustration shows the Avnet Azure Sphere kit.

  • O LED da WLAN piscará a cada 5 segundos quando conectado ao Azure.

  • O LED RGB ficará vermelho se a temperatura medida for menor do que a desejada, azul se a temperatura medida for maior do que a desejada e verde se a temperatura medida for igual à desejada.

Kit de desenvolvimento MT3620 do Azure Sphere da Seeed Studio

The illustration shows the Seeed Studio Azure Sphere kit.

  • O LED da WLAN piscará a cada 5 segundos quando conectado ao Azure.

  • O LED RGB ficará vermelho se a temperatura medida for menor do que a desejada, azul se a temperatura medida for maior do que a desejada e verde se a temperatura medida for igual à desejada.

Mini Placa de Desenvolvimento MT3620 da Seeed Studio

The illustration shows the Seeed Studio Mini Azure Sphere kit.

  • O LED do usuário piscará a cada 5 segundos quando conectado ao Azure.

Etapa 8: Definir a temperatura desejada

Definir a temperatura desejada é como definir um termostato em um recinto. Uma mensagem de propriedade do dispositivo gêmeo para a temperatura desejada é enviada ao Azure Sphere, onde serão realizadas ações relacionadas a ela.

Quando o sensor de temperatura é lido no Azure Sphere, ele é comparado com a temperatura desejada.

  1. Do Azure IoT Explorer.

  2. Clique em Exibir dispositivos neste hub.

  3. Clique em seu dispositivo.

  4. Clique em Componentes de IoT Plug and Play no menu lateral.

  5. Clique em Componente padrão.

  6. Selecione Propriedades (graváveis) no menu.

  7. Defina a propriedade Temperatura Desejada.

  8. Clique no botão Atualizar valor desejado .

Fechar o Visual Studio

Agora, feche o Visual Studio.