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

MKR GSM 1400을 Google Cloud IoT Core에 안전하게 연결

구성품 및 소모품

Arduino MKR GSM 1400
× 1
마이크로 USB-USB 케이블(일반)
× 1
3.7V Lipo 배터리
× 1
마이크로 SIM 카드
× 1
셀룰러 UF.L 안테나
× 1

앱 및 온라인 서비스

Arduino IDE
Google 클라우드 IoT 코어

이 프로젝트 정보

참고:이 튜토리얼은 오래되었을 수 있습니다. 여기 최신 버전의 경우

소개

기기는 HTTP 또는 MQTT를 사용하여 GCP IoT Core에 연결할 수 있습니다. 이 튜토리얼에서는 MQTT 클라이언트를 사용하여 Arduino MKR GSM 1400 보드를 GCP IoT Core에 안전하게 연결하는 방법을 안내합니다. MQTT(Message Queuing Telemetry Transport)는 메시징 구독 및 게시 전송을 제공하는 M2M(기계 간) 연결 프로토콜입니다.

기기는 인증을 위해 JWT(JSON Web Tokens)를 사용해야 합니다. JWT에 대한 자세한 내용은 RFC 7519에서 확인할 수 있습니다. GCP IoT Core는 JSON 웹 서명(JWS)을 확인하기 위해 RSA 및 타원 곡선 알고리즘을 모두 지원합니다. JWS에 대한 자세한 내용은 RFC 7515에서 확인할 수 있습니다.

MKR GSM 1400을 포함하여 온보드 연결이 가능한 모든 Arduino MKR 보드에는 Microchip ATECC508A 또는 ATECC608A 암호화 요소가 장착되어 있습니다. 이 암호화 요소는 256비트 ECC(타원 곡선 암호화) 키를 안전하게 생성하고 저장하는 데 사용할 수 있습니다. JWT에 서명하기 위해 crypto 요소 내부에 저장된 개인 키를 사용할 것입니다.

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

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

설치가 완료되면 최신 "Arduino SAMD 보드" 패키지가 설치되어 있는지 확인하십시오. Arduino IDE를 열고 도구 -> 보드:"..." -> 보드 관리자...를 열어 확인할 수 있습니다. 메뉴 항목 및 "Arduno SAMD"를 검색합니다. 작성 당시 1.6.20이 최신 버전이었습니다.

다음으로 Arduino IDE의 라이브러리 관리자를 사용하여 사용할 Arduino 라이브러리를 설치해야 합니다. 스케치 열기 -> 라이브러리 포함 -> 라이브러리 관리... 메뉴에서 다음 라이브러리를 각각 검색하여 개별적으로 설치합니다.

<울>
  • MKRGSM
  • <울>
  • Arduino_JSON
  • <울>
  • ArduinoECCX08(버전 1.3.0 이상)
  • <울>
  • ArduinoMqttClient(버전 0.1.3 이상)
  • <울>
  • Arduino 클라우드 제공자 예시(버전 1.2.0 이상)
  • 이제 MKR GSM 1400 보드 하단의 슬롯에 마이크로 SIM 카드를 삽입하고 안테나를 연결하고 3.7V Lipo 배터리를 JST 커넥터에 연결합니다. 그런 다음 마이크로 USB 케이블로 MKR GSM 1400을 컴퓨터에 연결하고 도구 -> 포트 "..."를 사용하여 Arduino IDE에서 직렬 포트를 선택합니다. 메뉴를 선택하고 도구 -> 보드 "..."에서 Arduino MKR GSM 1400을 선택합니다. 메뉴.

    GCP IoT Core에 보드 구성 및 추가

    위에서 언급했듯이 GCP IoT Core는 인증을 위해 JWT를 사용하기 위해 MQTT 프로토콜을 사용하여 연결하는 기기를 요구합니다. 스케치를 사용하여 보드에서 개인 및 공개 키를 생성한 다음 공개 키의 PEM 값을 GCP IoT Core 콘솔에 추가합니다.

    비공개 및 공개는 ArduinoECCX08 라이브러리의 예제 스케치를 사용하여 생성할 수 있습니다. 파일 -> 예제 -> ArduinoECCX08 -> 도구 -> ECCX08JWSPublicKey를 사용하여 Arduino IDE에서 스케치를 엽니다. . "업로드" 버튼을 클릭하여 스케치를 빌드하고 보드에 업로드한 다음 직렬 모니터를 엽니다. 줄 끝 구성이 "Both NL &CR"로 설정되어 있는지 확인하십시오.

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

    그런 다음 사용할 슬롯을 묻는 메시지가 표시됩니다. 이 자습서에서는 슬롯 0을 사용하여 공개 키에 사용되는 개인 키를 생성 및 저장합니다(슬롯 1~4는 필요한 경우 추가 개인 키를 생성 및 저장하는 데 사용할 수 있음). 참고: 개인 키는 암호화 요소 내부에서 생성되기 때문에 기기를 떠나지 않고 안전하게 저장되어 읽을 수 없습니다.

    생성된 공개 키 값을 복사합니다. 이 스크린샷에서 값은 다음과 같습니다.

    -----공개 키 시작-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4+DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzRe2kqGWFEb+QP4V47YU 

    이후 단계에서 GCP IoT Core에 기기를 추가할 때 사용하겠습니다.

    이제 PEM 공개 키가 있으므로 GCP IoT Core 콘솔에 로그인하여 새 기기를 만들어야 합니다.

    1) 웹 브라우저를 열고 https://cloud.google.com/으로 이동한 다음 "로그인" 링크를 클릭하여 Google ID로 로그인합니다.

    2) 로그인 후 "GO TO CONSOLE" 버튼을 클릭합니다. 그러면 메인 대시보드가 ​​표시됩니다.

    3) "CREATE" 링크를 클릭하여 새 프로젝트를 만듭니다.

    4) 프로젝트 이름을 묻는 메시지가 표시됩니다. 이름으로 "MKR GCP Tutorial"을 사용하겠습니다. 계속하려면 "만들기" 버튼을 클릭하세요.

    5) 프로젝트가 생성되면 대시보드 보기가 표시됩니다.

    6) 이제 왼쪽 상단의 메뉴 아이콘을 클릭하고 "BIG DATA" 제목으로 스크롤한 다음 "IoT Core" 링크를 클릭합니다.

    7) API를 활성화하라는 메시지가 표시되면 "API 활성화" 버튼을 클릭합니다.

    8) API가 활성화되면 장치 레지스트리를 생성하라는 메시지가 표시됩니다. 계속하려면 "장치 레지스트리 만들기" 버튼을 클릭하십시오.

    9) 그러면 양식이 표시됩니다. "레지스트리 ID"를 입력하고 지역을 선택합니다. 아래 스크린샷에서 레지스트리 ID로 "MKR_GCP_Tutorial"을 입력하고 지역으로 "us-central1"을 선택했습니다. 양식을 작성한 후 "만들기" 버튼을 클릭하십시오.

    10) 그러면 레지스트리에 대한 세부 정보가 표시됩니다.

    11) 새 장치를 추가하려면 왼쪽 탐색 모음에서 "장치" 링크를 클릭하십시오.

    12) 그런 다음 페이지 상단의 제목에서 "+ 장치 만들기"를 클릭합니다.

    13) 아래 스크린샷에서 "MyMKRGSM1400"이 사용된 장치 이름을 입력합니다. "ES256"은 "공개 키 형식"으로 선택해야 합니다. 이전에 보드에서 생성한 PEM 공개 키를 "공개 키 값" 텍스트 영역에 붙여넣습니다. 그런 다음 "만들기" 버튼을 클릭하십시오.

    보드를 GCP IoT Core에 연결

    1) 파일 -> 예제 ->를 사용하여 Arduino IDE에서 GCP IoT Core GSM 스케치를 엽니다. Arduino 클라우드 제공자 예시 -> GoogleCloudPlatformIoTCore-> GCP_IoT_Core_GSM.

    2) arduino_secrets.h 탭에서 SIM 카드의 핀(필요한 경우)과 사용 중인 이동통신사의 GPRS APN, 사용자 이름 및 비밀번호를 입력합니다.

    // GSM settings#define SECRET_PINNUMBER ""#define SECRET_GPRS_APN "GPRS_APN" // GPRS APN 교체#define SECRET_GPRS_LOGIN "login" // GPRS 로그인으로 교체#define SECRET_GPRS_PASSWORD "password" // 교체 GPRS 비밀번호 

    4) 그런 다음 프로젝트 ID, 클라우드 지역, 레지스트리 ID 및 장치 ID 값을 업데이트합니다.

    // Google Cloud Platform 입력 - IoT Core info#define SECRET_PROJECT_ID ""#define SECRET_CLOUD_REGION "#define SECRET_REGISTRY_ID ""#define SECRET_DEVICE_ID "" 

    프로젝트 ID 값은 GCP 콘솔 상단의 메뉴바를 클릭하면 확인할 수 있습니다. 위 단계의 값은 다음과 같습니다.

    #define SECRET_PROJECT_ID "mkr-gcp-tutorial#define SECRET_CLOUD_REGION "us-central1#define SECRET_REGISTRY_ID "MKR_GCP_Tutorial#define SECRET_DEVICE_ID "MyMKRGSM1400" 

    5) 스케치를 보드에 업로드하고 직렬 모니터를 엽니다. 보드는 셀룰러 네트워크에 연결을 시도하고 성공하면 MQTT를 사용하여 GCP IoT Core에 연결을 시도합니다.

    GCP IoT Core에서 이사회와 상호작용

    보드가 GCP IoT Core에 성공적으로 연결되었으므로 GCP IoT Core 콘솔을 사용하여 보드와 상호 작용할 수 있습니다. 스케치는 /devices/{deviceId}/state에 메시지를 보냅니다. 5초마다 주제를 지정하고 /devices/{deviceId}/config 모두에서 메시지를 수신합니다. 주제 및 /devices/{deviceId}/commands/# 주제.

    GCP IoT Core 콘솔의 기기 페이지에서 "SEND COMMAND" 버튼을 클릭합니다.

    보낼 메시지를 입력할 수 있는 모달 대화 상자가 나타납니다. 아래 스크린샷에서 "안녕하세요!" 입력되었습니다. 메시지를 보내려면 "SEND COMMAND" 버튼을 클릭하십시오.

    보드가 메시지를 받으면 직렬 모니터에 인쇄합니다.

    보드가 보내는 메시지를 보려면 "구성 및 상태 기록" 탭을 클릭하십시오.

    메시지는 Base64로 인코딩된 형식으로 나타나며 값을 보려면 목록에서 클릭하고 입력하고 "텍스트" 라디오 버튼을 선택하십시오.

    위의 스크린샷에서 보드는 "hello 464488"을 보내고 있었습니다. 값, 464488 값은 millis()의 결과입니다. 보드에 기능.

    결론

    이 튜토리얼에서는 GCP IoT Core와 함께 Arduino MKR GSM 1400 보드를 안전하게 사용하는 방법을 다루었습니다. 서명된 JWT는 JWT 서명에 사용된 비공개 키를 저장하는 ATECC508A 또는 ATECC608A와 함께 MQTT 프로토콜을 사용하여 GCP IoT Core로 인증하는 데 사용되었습니다. MQTT 메시지는 보드와 주고받았습니다.

    이것은 시작에 불과하며 GCP가 제공하는 다른 많은 서비스와 함께 GCP IoT Core를 사용할 수 있습니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    깃허브
    https://github.com/arduino/ArduinoCloudProviderExamples

    제조공정

    1. ADLINK는 Google Cloud와 협력하여 IoT 지원 솔루션을 제공합니다.
    2. DHT11 센서를 연결하는 라즈베리 PI 기반 IoT 프로젝트
    3. Windows 10 IoT 코어 및 SHT15
    4. Windows 10 IoT Core for Raspberry Pi 3 Model B+
    5. Windows 10 IoT Core :음성 제어 로봇
    6. Portenta H7 듀얼 코어 디버깅
    7. Arduino - 사진 찍기 - Google 드라이브에 업로드
    8. IoT를 사용한 심박수 모니터
    9. Azure IoT 수영장
    10. IoT 게이트웨이:사물을 클라우드에 연결하기 위한 가이드