다음을 통해 공유


자습서: ESPRESSIF ESP32-Azure IoT Kit를 IoT Hub에 연결

이 자습서에서는 FreeRTOS용 Azure IoT 미들웨어를 사용하여 ESPRESSIF ESP32-Azure IoT Kit(지금부터 ESP32 DevKit로 지침)를 Azure IoT에 연결합니다.

다음 작업을 완료합니다.

  • ESP32 DevKit를 프로그래밍하기 위한 포함된 개발 도구 세트 설치
  • 이미지를 빌드하고 ESP32 DevKit로 플래시
  • Azure CLI를 사용하여 ESP32 DevKit가 안전하게 연결할 Azure IoT 허브를 만들고 관리
  • Azure IoT Explorer를 사용하여 IoT Hub에 디바이스를 등록하고, 디바이스 속성을 보고, 디바이스 원격 분석을 보고, 디바이스에서 직접 명령 호출

필수 조건

  • Windows 10 또는 Windows 11을 실행하는 PC
  • 리포지토리를 복제하기 위한 Git
  • 하드웨어
  • 활성화된 Azure 구독. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

개발 환경 준비

도구 설치

개발 환경을 설정하려면 먼저 ESPRESSIF ESP-IDF 빌드 환경을 설치합니다. 설치 관리자에는 디바이스를 복제, 빌드, 플래시 및 모니터링하는 데 필요한 모든 도구가 포함되어 있습니다.

ESP-IDF 도구를 설치하려면 다음을 수행합니다.

  1. ESP-IDF v5.0 오프라인 설치 관리자를 다운로드하고 시작합니다.
  2. 설치 관리자가 설치할 구성 요소를 나열하면 모든 구성 요소를 선택하고 설치를 완료합니다.

리포지토리 복제

모든 샘플 디바이스 코드, 설치 스크립트 및 SDK 설명서를 다운로드하려면 다음 리포지토리를 복제합니다. 이전에 이 리포지토리를 복제한 경우 다시 복제할 필요가 없습니다.

리포지토리를 복제하려면 다음 명령을 실행합니다.

git clone --recursive  https://github.com/Azure-Samples/iot-middleware-freertos-samples.git

Windows 10 및 11의 경우 긴 경로가 사용하도록 설정되어 있는지 확인합니다.

  1. 긴 경로를 사용하도록 설정하려면 Windows 10에서 긴 경로 사용을 참조하세요.

  2. git에서 관리자 권한으로 터미널에서 다음 명령을 실행합니다.

    git config --system core.longpaths true
    

클라우드 구성 요소 만들기

IoT Hub 만들기

Azure CLI를 사용하여 디바이스에 대한 이벤트 및 메시징을 처리하는 IoT Hub를 만들 수 있습니다.

IoT Hub를 만듭니다.

  1. CLI 앱을 시작합니다. 이 빠른 시작의 나머지 부분에서 CLI 명령을 실행하려면 명령 구문을 복사하고 CLI 애플리케이션에 붙여넣은 후 변수 값을 편집하고 Enter 키를 누릅니다.

    • Cloud Shell을 사용하는 경우 Cloud Shell에 대한 링크를 마우스 오른쪽 단추로 클릭하고 새 탭에서 열기 옵션을 선택합니다.
    • Azure CLI를 로컬에서 사용하고 있는 경우 CLI 콘솔 앱을 시작하고 Azure CLI에 로그인합니다.
  2. az extension add를 실행하여 azure-iot 확장을 현재 버전으로 설치하거나 업그레이드합니다.

    az extension add --upgrade --name azure-iot
    
  3. az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령을 사용하면 centralus 지역에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    참고 항목

    선택적으로 대체 location을 설정할 수 있습니다. 사용 가능한 위치를 보려면 az account list-locations를 실행합니다.

    az group create --name MyResourceGroup --location centralus
    
  4. az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

    YourIotHubName. 코드에서 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 이 자리 표시자는 이 빠른 시작의 나머지 부분에서 고유한 IoT Hub 이름을 표시하는 데 사용됩니다.

    --sku F1 매개 변수는 무료 계층에 IoT Hub를 만듭니다. 무료 계층 허브에는 제한된 기능 세트가 있으며 개념 증명 애플리케이션에 사용됩니다. IoT Hub 계층, 기능 및 가격 책정에 대한 자세한 내용은 Azure IoT Hub 가격 책정을 참조하세요.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
    
  5. IoT Hub를 만든 후 콘솔에서 JSON 출력을 보고, 이후 단계에서 사용할 hostName 값을 복사합니다. hostName 값은 다음 예제와 같습니다.

    {Your IoT hub name}.azure-devices.net

IoT Explorer 구성

이 빠른 시작의 나머지 단계에서는 IoT Explorer를 사용하여 IoT Hub에 디바이스를 등록하고, 디바이스 속성 및 원격 분석을 보고, 디바이스에 명령을 보냅니다. 이 섹션에서는 만든 IoT Hub에 연결하고 퍼블릭 모델 리포지토리에서 플러그 앤 플레이 모델을 읽도록 IoT Explorer를 구성합니다.

IoT Hub에 대한 연결을 추가하려면

  1. Azure IoT Explorer를 설치합니다. 이 도구는 Azure IoT 리소스를 모니터링하고 관리하는 플랫폼 간 유틸리티입니다.

  2. CLI 앱에서 az iot hub connection-string show 명령을 실행하여 IoT Hub에 대한 연결 문자열을 가져옵니다.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. 따옴표 문자로 묶지 말고 연결 문자열을 복사합니다.

  4. Azure IoT Explorer의 왼쪽 메뉴에서 IoT Hub를 선택합니다.

  5. + 연결 추가를 클릭합니다.

  6. 연결 문자열을 연결 문자열 상자에 붙여넣습니다.

  7. 저장을 선택합니다.

    IoT Explorer에서 연결을 추가하는 스크린샷

연결에 성공하면 IoT Explorer가 디바이스 보기로 전환됩니다.

퍼블릭 모델 리포지토리를 추가하려면

  1. IoT Explorer에서 을 선택하여 홈 보기로 돌아갑니다.

  2. 왼쪽 메뉴에서 IoT 플러그 앤 플레이 설정을 선택합니다.

  3. 엔드포인트가 있는 기존 공용 리포지토리 항목이 있는지 확인합니다 https://devicemodels.azure.com.

    참고 항목

    퍼블릭 리포지토리 항목이 없는 경우 +추가를 선택하고 드롭다운 메뉴에서 공용 리포지토리를 선택하고 엔드포인트 값을 지정 https://devicemodels.azure.com 한 다음 저장을 선택합니다.

    퍼블릭 리포지토리 대한 완료된 항목은 다음 스크린샷과 같습니다.

    IoT Explorer에서 퍼블릭 모델 리포지토리를 추가하는 스크린샷

디바이스 등록

이 섹션에서는 새 디바이스 인스턴스를 만들고 만든 IoT Hub에 등록합니다. 이후 섹션에서 새로 등록한 디바이스에 대한 연결 정보를 사용하여 물리적 디바이스를 안전하게 연결합니다.

디바이스를 등록하려면

  1. IoT Explorer의 홈 보기에서 IoT Hub를 선택합니다.

  2. 이전에 추가한 연결이 표시됩니다. 연결 속성 아래에서 이 허브의 디바이스 보기를 선택합니다.

  3. + 새로 만들기를 선택하고 디바이스의 디바이스 ID를 입력합니다(예: mydevice). 다른 모든 속성은 동일하게 유지합니다.

  4. 만들기를 실행합니다.

    Azure IoT Explorer 디바이스 ID의 스크린샷

  5. 복사 단추를 사용하여 디바이스 ID기본 키 필드를 복사합니다.

다음 섹션을 계속하기 전에 이전 단계에서 검색한 다음의 각 값을 안전한 위치에 저장합니다. 다음 섹션에서 이러한 값을 사용하여 디바이스를 구성합니다.

  • hostName
  • deviceId
  • primaryKey

디바이스 준비

ESP32 DevKit를 Azure에 연결하려면 구성 설정을 수정하고 이미지를 빌드하고 이미지를 디바이스에 플래시합니다.

환경 설정

ESP-IDF 환경을 시작하려면 다음을 수행합니다.

  1. Windows 시작을 선택하고 ESP-IDF 5.0 CMD를 찾아 실행합니다.

  2. ESP-IDF 5.0 CMD에서 이전에 복제한 iot-middleware-freertos-samples 디렉터리로 이동합니다.

  3. ESP32-Azure IoT Kit 프로젝트 디렉터리 demos\projects\ESPRESSIF\aziotkit로 이동합니다.

  4. 다음 명령을 실행하여 구성 메뉴를 시작합니다.

    idf.py menuconfig
    

구성 추가

무선 네트워크 구성을 추가하려면 다음을 수행합니다.

  1. ESP-IDF 5.0 CMD에서 FreeRTOS용 Azure IoT 미들웨어 샘플 구성 --->을 선택하고 Enter 키를 누릅니다.

  2. 로컬 무선 네트워크 자격 증명을 사용하여 다음 구성 설정을 지정합니다.

    설정
    WiFi SSID {사용자의 Wi-Fi SSID}
    WiFi 암호 {사용자의 Wi-Fi 암호}
  3. 이전 메뉴로 돌아가려면 Esc를 선택합니다.

Azure IoT Hub에 연결하는 구성을 추가하려면 다음을 수행합니다.

  1. FreeRTOS용 Azure IoT 미들웨어 기본 작업 구성 --->을 선택하고 Enter 키를 누릅니다.

  2. 다음 Azure IoT 구성 설정을 Azure 리소스를 만든 후에 저장한 값으로 설정합니다.

    설정
    Azure IoT Hub FQDN {Your host name}
    Azure Iot 디바이스 ID {Your Device ID}
    Azure IoT 디바이스 대칭 키 {Your primary key}

    참고 항목

    Azure IoT 인증 방법 설정에서 대칭 키의 기본값이 선택되어 있는지 확인합니다.

  3. 이전 메뉴로 돌아가려면 Esc를 선택합니다.

구성을 저장하려면 다음을 수행합니다.

  1. Shift+S를 선택하여 저장 옵션을 엽니다. 이 메뉴는 구성을 현재 .\aziotkit 디렉터리에 있는 skconfig라는 파일에 저장할 수 있습니다.
  2. Enter 키를 선택하여 구성을 저장합니다.
  3. Enter 키를 선택하여 승인 메시지를 해제합니다.
  4. 구성 메뉴를 종료하려면 Q를 선택합니다.

이미지 빌드 및 플래시

이 섹션에서는 ESP-IDF 도구를 사용하여 Azure IoT에 연결할 때 ESP32 DevKit를 빌드, 플래시 및 모니터링합니다.

참고 항목

이 섹션의 다음 명령에서 루트 디렉터리 근처의 짧은 빌드 출력 경로를 사용합니다. 필요한 각 명령에서 -B 매개 변수 다음에 빌드 경로를 지정합니다. 짧은 경로는 긴 빌드 경로 이름을 사용할 때 오류를 일으킬 수 있는 ESPRESSIF ESP-IDF 도구의 현재 문제를 방지하는 데 도움이 됩니다. 다음 명령은 로컬 경로 C:\espbuild를 예로 사용합니다.

이미지를 빌드하려면 다음을 수행합니다.

  1. ESP-IDF 5.0 CMDiot-middleware-freertos-samples\demos\projects\ESPRESSIF\aziotkit 디렉터리에서 다음 명령을 실행하여 이미지를 빌드합니다.

    idf.py --no-ccache -B "C:\espbuild" build 
    
  2. 빌드가 완료되면 이전에 지정한 빌드 경로에 이진 이미지 파일이 만들어졌는지 확인합니다.

    C:\espbuild\azure_iot_freertos_esp32.bin

이미지를 플래시하려면 다음을 수행합니다.

  1. ESP32 DevKit에서 다음 이미지에 강조 표시된 마이크로 USB 포트를 찾습니다.

    ESP32-Azure IoT Kit 보드의 사진

  2. 마이크로 USB 케이블을 ESP32 DevKit의 마이크로 USB 포트에 연결한 다음, 컴퓨터에 연결합니다.

  3. Windows 디바이스 관리자를 열고 포트를 확인하여 ESP32 DevKit가 연결된 COM 포트를 확인합니다.

    연결된 디바이스에 대한 COM 포트를 표시하는 Windows 디바이스 관리자 스크린샷

  4. ESP-IDF 5.0 CMD에서 다음 명령을 실행하여 <Your-COM-port> 자리 표시자 및 대괄호를 이전 단계의 올바른 COM 포트로 바꿉니다. 예를 들어 이 자리 표시자를 COM3로 바꿉니다.

    idf.py --no-ccache -B "C:\espbuild" -p <Your-COM-port> flash
    
  5. 성공적인 플래시를 위해 다음 텍스트로 출력이 완료되는지 확인합니다.

    Hash of data verified
    
    Leaving...
    Hard resetting via RTS pin...
    Done
    

디바이스가 Azure IoT Central에 연결되는지 확인하려면 다음을 수행합니다.

  1. ESP-IDF 5.0 CMD에서 다음 명령을 실행하여 모니터링 도구를 시작합니다. 이전 명령에서와 마찬가지로 <Your-COM-port> 자리 표시자 및 대괄호를 디바이스가 연결된 COM 포트로 바꿉니다.

    idf.py -B "C:\espbuild" -p <Your-COM-port> monitor
    
  2. 다음 예제와 유사한 출력의 반복 블록을 확인합니다. 이 출력은 디바이스가 Azure IoT에 연결되고 원격 분석을 보내는지 확인합니다.

    I (50807) AZ IOT: Successfully sent telemetry message
    I (50807) AZ IOT: Attempt to receive publish message from IoT Hub.
    
    I (51057) MQTT: Packet received. ReceivedBytes=2.
    I (51057) MQTT: Ack packet deserialized with result: MQTTSuccess.
    I (51057) MQTT: State record updated. New state=MQTTPublishDone.
    I (51067) AZ IOT: Puback received for packet id: 0x00000008
    I (53067) AZ IOT: Keeping Connection Idle...
    

디바이스 속성 보기

Azure IoT Explorer를 사용하여 디바이스의 속성을 보고 관리할 수 있습니다. 다음 섹션에서는 IoT Explorer에 표시되는 플러그 앤 플레이 기능을 사용하여 ESP32 DevKit를 관리하고 상호 작용합니다. 이러한 기능은 퍼블릭 모델 리포지토리에서 ESP32 DevKit에 대해 게시된 디바이스 모델을 사용합니다. 이 자습서의 앞부분에서 이 리포지토리에서 디바이스 모델을 검색하도록 IoT Explorer를 구성했습니다. 대부분의 경우 IoT Explorer 메뉴 옵션을 선택하여 플러그 앤 플레이를 사용하지 않고도 동일한 작업을 수행할 수 있습니다. 그러나 플러그 앤 플레이를 사용하면 대개 향상된 환경이 제공됩니다. IoT Explorer는 플러그 앤 플레이 디바이스에서 지정된 디바이스 모델을 읽고 해당 디바이스와 관련된 정보를 제공할 수 있습니다.

Iot Explorer에서 디바이스에 대한 IoT 플러그 앤 플레이 구성 요소에 액세스하려면

  1. IoT Explorer의 홈 보기에서 IoT Hub를 선택한 다음, 이 허브의 디바이스 보기를 선택합니다.

  2. 디바이스를 선택합니다.

  3. IoT 플러그 앤 플레이 구성 요소를 참조하세요.

  4. 기본 구성 요소를 선택합니다. IoT Explorer에는 디바이스에 구현된 IoT 플러그 앤 플레이 구성 요소가 표시됩니다.

    IoT Explorer의 디바이스 기본 구성 요소 스크린샷

  5. 인터페이스 탭에서 디바이스 모델 설명에 있는 JSON 콘텐츠를 확인합니다. JSON에는 디바이스 모델의 각 IoT 플러그 앤 플레이 구성 요소에 대한 구성 정보가 포함되어 있습니다.

    IoT Explorer의 각 탭은 디바이스 모델의 IoT 플러그 앤 플레이 구성 요소 중 하나에 해당합니다.

    Tab Type 입력 설명
    인터페이스 인터페이스 Espressif ESP32 Azure IoT Kit ESP32 DevKit용 디바이스 모델 예
    속성(쓰기 가능) 속성 telemetryFrequencySecs 디바이스에서 원격 분석을 전송하는 간격
    명령 명령 ToggleLed1 LED 켜기 또는 끄기
    명령 명령 ToggleLed2 LED 켜기 또는 끄기
    명령 명령 DisplayText 디바이스 화면에 보낸 텍스트 표시

Azure IoT Explorer를 사용하여 디바이스 속성을 보고 편집하려면 다음을 수행합니다.

  1. 속성(쓰기 가능) 탭을 선택합니다. 원격 분석이 전송되는 간격이 표시됩니다.

  2. telemetryFrequencySecs 값을 5로 변경한 후 원하는 값 업데이트를 선택합니다. 이제 디바이스에서 이 간격을 사용하여 원격 분석을 보냅니다.

    IoT Explorer에서 디바이스에 대한 원격 분석 간격을 설정하는 스크린샷.

  3. IoT Explorer는 알림으로 응답합니다.

Azure CLI를 사용하여 디바이스 속성을 보려면

  1. az iot hub device-twin show 명령을 실행합니다.

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 콘솔 출력에서 디바이스의 속성을 검사합니다.

Azure IoT Explorer를 사용하여 디바이스 속성을 볼 수도 있습니다. 왼쪽 탐색 영역에서 디바이스 쌍을 선택합니다.

원격 분석 데이터 보기

Azure IoT Explorer를 사용하면 디바이스에서 클라우드로의 원격 분석 흐름을 볼 수 있습니다. 필요에 따라 Azure CLI를 사용하여 동일한 작업을 수행할 수 있습니다.

Azure IoT Explorer에서 원격 분석을 보려면

  1. IoT Explorer의 디바이스에 대한 IoT 플러그 앤 플레이 구성 요소(기본 구성 요소) 창에서 원격 분석 탭을 선택합니다. 기본 제공 이벤트 허브 사용로 설정되어 있는지 확인합니다.

  2. 시작을 선택합니다.

  3. 디바이스에서 메시지를 클라우드에 보낼 때 원격 분석을 봅니다.

    IoT Explorer의 디바이스 원격 분석 스크린샷

  4. 디바이스 모델에서 지정한 데이터 형식으로 이벤트를 보려면 모델링된 이벤트 표시 확인란을 선택합니다.

    IoT Explorer의 모델링된 원격 분석 이벤트 스크린샷

  5. 중지를 선택하여 수신 이벤트를 종료합니다.

Azure CLI를 사용하여 디바이스 원격 분석을 보려면

  1. az iot hub monitor-events 명령을 실행합니다. 이전에 디바이스 및 IoT Hub에 대해 Azure IoT에서 만든 이름을 사용합니다.

    az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 콘솔에서 JSON 출력을 봅니다.

    {
        "event": {
            "origin": "mydevice",
            "module": "",
            "interface": "dtmi:azureiot:devkit:freertos:Esp32AzureIotKit;1",
            "component": "",
            "payload": "{\"temperature\":28.6,\"humidity\":25.1,\"light\":116.66,\"pressure\":-33.69,\"altitude\":8764.9,\"magnetometerX\":1627,\"magnetometerY\":28373,\"magnetometerZ\":4232,\"pitch\":6,\"roll\":0,\"accelerometerX\":-1,\"accelerometerY\":0,\"accelerometerZ\":9}"
        }
    }
    
  3. Ctrl+C를 선택하여 모니터링을 종료합니다.

디바이스에서 직접 메서드 호출

Azure IoT Explorer를 사용하여 디바이스에서 구현한 직접 메서드를 호출할 수도 있습니다. 직접 메서드에는 이름이 있으며, 필요에 따라 JSON 페이로드, 구성 가능한 연결 및 메서드 시간 제한이 있을 수 있습니다. 이 섹션에서는 LED를 설정하거나 해제하는 메서드를 호출합니다. 필요에 따라 Azure CLI를 사용하여 동일한 작업을 수행할 수 있습니다.

Azure IoT 탐색기에서 메서드를 호출하려면

  1. IoT Explorer의 디바이스에 대한 IoT 플러그 앤 플레이 구성 요소(기본 구성 요소) 창에서 명령 탭을 선택합니다.

  2. ToggleLed1 명령의 경우 명령 보내기를 선택합니다. ESP32 DevKit의 LED가 켜지거나 꺼집니다. IoT Explorer에도 알림이 표시됩니다.

    IoT Explorer에서 메서드를 호출하는 스크린샷

  3. DisplayText 명령의 경우 콘텐츠 필드에 일부 텍스트를 입력합니다.

  4. 명령 보내기를 선택합니다. 텍스트는 ESP32 DevKit 화면에 표시됩니다.

Azure CLI를 사용하여 메서드를 호출하려면

  1. az iot hub invoke-device-method 명령을 실행하고 메서드 이름과 페이로드를 지정합니다. 이 메서드의 경우 method-payloadtrue로 설정하면 LED가 현재 상태와 반대로 전환됩니다.

    az iot hub invoke-device-method --device-id mydevice --method-name ToggleLed2 --method-payload true --hub-name {YourIoTHubName}
    

    CLI 콘솔은 디바이스에서 메서드 호출의 상태를 표시합니다. 여기서 200는 성공을 나타냅니다.

    {
      "payload": {},
      "status": 200
    } 
    
  2. 디바이스에서 LED 상태를 확인합니다.

문제 해결 및 디버그

디바이스 코드 빌드, 디바이스 플래시 또는 연결에 문제가 발생하는 경우 문제 해결을 참조하세요.

애플리케이션 디버깅에 대한 자세한 내용은 Visual Studio Code를 사용하여 디버깅을 참조하세요.

리소스 정리

이 빠른 시작에서 만든 Azure 리소스가 더 이상 필요하지 않은 경우 Azure CLI를 사용하여 리소스 그룹 및 모든 리소스를 삭제할 수 있습니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 그 안에 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다.

리소스 그룹을 이름으로 삭제하려면:

  1. az group delete 명령을 실행합니다. 이 명령을 실행하면 만든 리소스 그룹, IoT Hub 및 디바이스 등록이 제거됩니다.

    az group delete --name MyResourceGroup
    
  2. az group list 명령을 실행하여 리소스 그룹을 삭제했는지 확인합니다.

    az group list
    

다음 단계

이 자습서에서는 FreeRTOS용 Azure IoT 미들웨어 샘플 코드가 포함된 사용자 지정 이미지를 빌드한 다음, 해당 이미지를 ESP32 DevKit 디바이스로 플래시했습니다. ESP32 DevKit를 Azure IoT Hub 연결하고 디바이스에서 원격 분석 보기 및 메서드 호출과 같은 작업을 수행했습니다.

다음 단계로 다음 문서를 탐색하여 포함된 개발 옵션에 대해 자세히 알아봅니다.