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

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 para o IoT Central.

Etapa 1: Abrir o projeto

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

  2. Clique em 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.

  6. 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 Azure IoT Central.

    • Atualize CmdArgs com o escopo da ID do Azure IoT Central.
    • 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 AllowedConnections com os pontos de extremidade do aplicativo do Azure IoT Central que você copiou para o Bloco de notas.

  5. 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",
            "--RTComponentId", "6583cf17-d321-4d72-8283-0b7c5b56442b"
        ],
        "Capabilities": {
            "Gpio": [
            "$NETWORK_CONNECTED_LED",
            "$LED_RED",
            "$LED_GREEN",
            "$LED_BLUE"
            ],
            "PowerControls": [
            "ForceReboot"
            ],
            "AllowedConnections": [
                "global.azure-devices-provisioning.net",
                "iotc-9999bc-3305-99ba-885e-6573fc4cf701.azure-devices.net",
                "iotc-789999fa-8306-4994-b70a-399c46501044.azure-devices.net",
                "iotc-7a099966-a8c1-4f33-b803-bf29998713787.azure-devices.net",
                "iotc-97299997-05ab-4988-8142-e299995acdb7.azure-devices.net",
                "iotc-d099995-7fec-460c-b717-e99999bf4551.azure-devices.net",
                "iotc-789999dd-3bf5-49d7-9e12-f6999991df8c.azure-devices.net",
                "iotc-29999917-7344-49e4-9344-5e0cc9999d9b.azure-devices.net",
                "iotc-99999e59-df2a-41d8-bacd-ebb9999143ab.azure-devices.net",
                "iotc-c0a9999b-d256-4aaf-aa06-e90e999902b3.azure-devices.net",
                "iotc-f9199991-ceb1-4f38-9f1c-13199992570e.azure-devices.net"
            ],
            "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

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

The illustration shows the Avnet Azure Sphere kit.

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

  2. 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.

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

  2. 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.

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

Etapa 8: Exibir a última propriedade de temperatura relatada

  1. Alterne para o IoT Central no seu navegador.

  2. No menu da barra lateral, selecione Dispositivos, o modelo Monitor de Laboratório do Roteiro de Aprendizagem e, em seguida, seu dispositivo.

  3. Clique na guia Propriedades.

The illustration shows how to display telemetry.

Etapa 9: 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.

  • Se a temperatura for maior que a desejada, o LED RGB ficará azul para indicar que o refrigerador precisa ser ligado.

  • Se a temperatura for menor que a desejada, o LED RGB ficará vermelho para indicar que o aquecedor precisa ser ligado.

  • Se a temperatura for igual à desejada, o LED RGB ficará verde para indicar que nenhuma ação é necessária.

    Observação

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

Para definir a temperatura desejada:

  1. Atualize o valor de Temperatura Desejada.

  2. Salve a propriedade. Isso enviará a propriedade de temperatura desejada para o Azure Sphere. A cor do LED RGB mudará dependendo da temperatura desejada escolhida.

    The illustration shows display settings.

  3. Atualize o valor da Taxa de amostra desejada em segundos [1..60].

  4. Salve a propriedade. Isso enviará a propriedade de taxa de amostra desejada para o aplicativo de alto nível do Azure Sphere. Essa propriedade será encaminhada para o aplicativo principal em tempo real e a propriedade de taxa de amostra do sensor será atualizada.

Fechar o Visual Studio

Agora, feche o Visual Studio.