산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino MKR NB 1500을 Azure IoT Hub에 안전하게 연결하기

필요한 부품 및 소모품

Arduino MKR NB 1500 1개
Micro-USB to USB 케이블 1개
3.7V 리튬 폴리머 배터리 1개
Micro SIM 카드 1개

앱 및 온라인 서비스

프로젝트 소개

참고: 이 튜토리얼은 구버전일 수 있습니다. 최신 버전은 여기를 참조하세요.

소개

Azure IoT Hub는 "수십억 개의 디바이스를 안전하게 연결, 모니터링, 관리하여 IoT(사물 인터넷) 애플리케이션을 개발"할 수 있게 해줍니다.

디바이스는 HTTPS, AMQP, MQTT 프로토콜을 사용하여 Azure IoT Hub에 연결할 수 있으며, Azure는 이러한 프로토콜을 추상화하기 위해 다양한 프로그래밍 언어용 SDK를 제공합니다. 또한 MQTT 클라이언트를 통해 IoT Hub에 연결할 수도 있습니다.

이 튜토리얼에서는 Arduino MKR NB 1500 보드를 MQTT 클라이언트를 사용하여 Azure IoT Hub에 안전하게 연결하는 방법을 안내합니다. MQTT(Message Queuing Telemetry Transport)는 M2M(사물 간 통신) 연결 프로토콜로 메시지 구독 및 발행 전송을 제공합니다.

디바이스는 SAS 토큰 또는 X.509 인증서를 사용하여 Azure IoT Hub와 인증할 수 있습니다. 본 튜토리얼에서는 X.509 인증서를 사용하여 보드를 인증합니다.

온보드 연결 기능이 있는 모든 Arduino MKR 보드(MKR NB 1500 포함)에는 Microchip ATECC508A 또는 ATECC608A 암호화 요소가 장착되어 있습니다. 이 암호화 요소는 256비트 ECC(타원 곡선 암호화) 키를 안전하게 생성하고 저장하는 데 사용할 수 있습니다.

소프트웨어 및 하드웨어 설정

컴퓨터에 Arduino IDE가 설치되어 있지 않다면 다운로드하여 설치하세요.

설치 후 "Arduino SAMD Boards" 패키지의 최신 버전이 설치되어 있는지 확인하세요. Arduino IDE에서 Tools → Board: "..." → Board Manager... 메뉴를 열고 "Arduino SAMD"를 검색하여 확인할 수 있습니다. 작성 시점 기준 1.6.20이 최신 버전이었습니다.

다음으로 Arduino IDE의 라이브러리 관리자를 사용하여 필요한 라이브러리를 설치합니다. Sketch → Include Library → Manage Libraries... 메뉴를 열고 다음 라이브러리를 각각 검색하여 설치하세요:

이제 MKR NB 1500 보드 하단의 슬롯에 마이크로 SIM 카드를 삽입하고 3.7V 리포 배터리를 JST 커넥터에 연결하세요. 그런 다음 마이크로 USB 케이블로 MKR NB 1500을 컴퓨터에 연결하고, Arduino IDE에서 Tools → Port "..." 메뉴로 시리얼 포트를 선택하고 Tools → Board "..." 메뉴에서 Arduino MKR NB 1500을 선택하세요.

보드 구성 및 Azure IoT Hub에 추가하기

앞서 언급했듯이 Azure IoT Hub는 MQTT 프로토콜을 사용하고 X.509 인증서로 인증하는 디바이스의 연결을 허용합니다. 보드에서 자체 서명된 X.509 인증서를 생성하는 스케치를 실행한 다음, 이 인증서의 SHA1 지문을 Azure IoT Hub 포털에 추가합니다.

자체 서명 인증서는 ArduinoECCX08 라이브러리의 예제 스케치를 사용하여 생성할 수 있습니다. Arduino IDE에서 File → Examples → ArduinoECCX08 → Tools → ECCX08SelfSignedCert 경로로 스케치를 여세요. "Upload" 버튼을 클릭하여 스케치를 보드에 빌드 및 업로드한 다음 시리얼 모니터를 여세요. 줄 끝 구성이 "Both NL & CR"로 설정되어 있는지 확인하세요.

이 스케치는 ATECC508A 또는 ECC608A 암호화 요소가 구성되지 않고 잠금 해제된 상태라면 영구적으로 구성하라는 메시지를 표시합니다. 주의: 이 잠금 프로세스는 영구적이고 되돌릴 수 없지만, 암호화 요소를 사용하려면 반드시 필요합니다. 스케치가 설정하는 구성은 5개의 개인 키 슬롯(0-4)을 모든 클라우드 공급자(또는 서버)와 함께 사용할 수 있게 하며, 5개 슬롯 각각의 개인 키는 언제든 재생성할 수 있습니다. 공장 출하 시 암호화 요소는 미구성 및 잠금 해제 상태입니다.

이후 자체 서명 인증서에 포함할 정보를 입력하라는 프롬프트가 나타납니다. 인증서의 발행 연도, 월, 일, 시간과 만료 기간(년 단위)을 입력하세요. 이 튜토리얼에서는 슬롯 0을 사용하여 자체 서명 인증서에 서명하는 개인 키를 생성 및 저장합니다(슬롯 1-4는 추가 개인 키 생성 및 저장용). 슬롯 8에는 인증서의 발행일, 만료일, 서명이 저장됩니다. 참고: 개인 키는 암호화 요소 내부에서 생성되므로 디바이스를 벗어나지 않으며 안전하게 저장되어 읽을 수 없습니다.

생성된 SHA1 값(예: 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b)을 복사하세요. 이 값은 Azure IoT Hub에서 디바이스의 자체 서명 인증서 지문으로 사용됩니다.

이제 자체 서명 인증서와 보드를 식별할 SHA1 지문이 준비되었으니, Azure IoT Hub 포털에 로그인하여 새 디바이스를 생성합니다.

  1. 웹 브라우저에서 portal.azure.com을 여세요.
  2. Azure 계정이 없다면 "Create one!" 링크를 클릭하여 계정을 생성하세요. 이미 계정이 있다면 이메일을 입력하고 "Next"를 클릭하여 로그인하세요.
  3. 왼쪽 탐색 패널에서 "Create a resource"를 클릭하세요.
  4. "Internet of Things" → "IoT Hub"를 차례로 클릭하세요.
  5. Subscription, Resource group, Region, IoT Hub Name을 입력하세요. 스크린샷에서는 "Free Trial", "MKR", "East US", "ArduinoProjectHubTutorial"을 사용했습니다. "Review + Create"를 클릭하여 계속하세요.
  6. 확인 화면에서 "Create"를 클릭하세요.
  7. IoT Hub가 생성되고 배포될 때까지 몇 분 기다리세요.
  8. 배포 완료 후 "Go to resource" 버튼이 나타나면 클릭하세요.
  9. "Explore" 섹션 아래의 "IoT Devices"를 클릭하세요.
  10. "Add" 버튼을 클릭하여 새 디바이스를 추가하세요.
  11. 디바이스 이름을 입력하세요(예: "MyMKRNB1500"). 그런 다음 "X.509 Self-Signed" 탭을 클릭하고 Arduino IDE 시리얼 모니터의 SHA1 값을 Primary와 Secondary Thumbprint 모두에 붙여넣으세요. "Save"를 클릭하여 디바이스를 생성하세요.
  12. IoT Devices 페이지에 새 항목이 나타납니다.

보드를 Azure IoT Hub에 연결하기

  1. Arduino IDE에서 File → Examples → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB 경로로 Azure IoT Hub NB 스케치를 여세요.
  2. arduino_secrets.h 탭에서 SIM 카드 PIN 번호(필요한 경우)를 입력하세요.
    // NB settings
    #define SECRET_PINNUMBER ""
    
  3. Azure IoT Hub 포털에서 생성된 엔드포인트로 브로커 값을 업데이트하세요.
    // Fill in the hostname of your Azure IoT Hub broker
    #define SECRET_BROKER ".azure-devices.net"
    
  4. Azure IoT Hub 포털에서 생성한 디바이스 이름으로 디바이스 ID를 업데이트하세요.
    // Fill in the device id
    #define SECRET_DEVICE_ID ""
    
  5. 스케치를 보드에 업로드하고 시리얼 모니터를 여세요. 보드가 셀룰러 네트워크에 연결을 시도하고, 성공하면 MQTT를 사용하여 Azure IoT Hub에 연결을 시도합니다.

Azure IoT Core에서 보드와 상호작용하기

보드가 Azure IoT Hub에 성공적으로 연결되면 Azure IoT Hub 포털을 통해 보드와 상호작용할 수 있습니다. 스케치는 5초마다 devices/{deviceId}/messages/events/ 토픽으로 메시지를 전송하고 devices/{deviceId}/messages/devicebound/# 토픽에서 메시지를 수신 대기합니다.

Azure IoT Hub 포털에서 IoT Devices 테이블의 보드 디바이스 ID 행을 클릭하세요. 툴바의 "Message to device" 버튼을 클릭하세요.

이제 디바이스로 전송할 메시지 본문을 입력할 수 있습니다. 스크린샷에서는 "Hello there :)"를 입력했습니다. 툴바의 "Send Message" 버튼을 클릭하여 메시지를 전송하세요.

보드가 메시지를 수신하면 Arduino IDE의 시리얼 모니터에 표시됩니다.

보드가 전송하는 메시지를 확인하려면:

  1. shell.azure.com에 로그인하세요(처음 이용 시 "Bash" 선택).
  2. IoT Hub 확장을 설치하세요:
    az extension add --name azure-cli-iot-ext
    
  3. 다음 명령어를 실행하세요. <hub name>을 본인의 허브 이름으로 바꾸세요(종속성 업데이트 프롬프트 시 'y' 입력):
    az iot hub monitor-events --hub-name 
    
  4. 쉘에 메시지가 출력되는 것을 확인할 수 있습니다.

결론

이 튜토리얼에서는 Arduino MKR NB 1500 보드를 Azure IoT Hub와 안전하게 사용하는 방법을 다뤘습니다. 자체 서명 X.509 인증서를 사용하여 MQTT 프로토콜로 Azure IoT Hub에 인증했으며, ATECC508A 또는 ATECC608A가 인증서와 연결된 개인 키를 안전하게 저장했습니다. 보드와 MQTT 메시지를 주고받았습니다.

이는 시작에 불과합니다. Azure IoT Hub는 Azure가 제공하는 다른 많은 서비스와 함께 사용할 수 있습니다!

코드

GitHub

https://github.com/arduino/ArduinoCloudProviderExamples

제조공정

  1. IoT와 5G가 현대 업무 환경을 변화시키는 방식
  2. 아두이노, 산업용 IoT 보드 '포텐타 H7' CES서 공개… 듀얼 코어·내구성 강화
  3. 애저 RTOS, 새로운 개발 키트로 주요 임베디드 플랫폼 전반에 지원 확대
  4. 라즈베리 파이 3에 DHT11 센서 연결해 ThingsIo.ai 클라우드에 데이터 업로드하기
  5. Azure vs AWS: IoT에 더 적합한 클라우드 플랫폼은?
  6. Azure IoT Hub에서 공간 분석 기능을 갖춘 GPS 데이터로거 구축
  7. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  8. 원격 IoT 제어 커스텀 로봇 팔: 아두이노 MKR1000과 심링크(Simulink) 활용
  9. IoT 기반 듀얼 축 태양광 추적기: 아두이노로 구현하는 스마트 에너지 관리
  10. 애저 IoT 기반 스마트 수영장 제어 시스템: 온도 모니터링 및 원격 제어