ESP32 - AWS IoT | ESP32 - AWS IoT
이 튜토리얼은 ESP32를 AWS IoT Core와 함께 사용하는 방법을 가르쳐줍니다. 자세히, 우리는 배울 것입니다:
- ESP32를 AWS IoT Core에 연결하는 방법.
- ESP32를 프로그래밍하여 데이터를 AWS IoT Core로 보내는 방법.
- ESP32를 프로그래밍하여 AWS IoT Core로부터 데이터를 수신하는 방법.
준비물
1 | × | ESP-WROOM-32 Dev Module | 쿠팡 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for ESP32 | 쿠팡 | Amazon |
ESP32와 AWS IoT에 관하여
ESP32는 MQTT 프로토콜을 사용하여 AWS IoT Core에 연결합니다. 이 연결을 용이하게 하는 라이브러리는 있지만, PC의 Mosquitto와 같은 로컬 MQTT 브로커에 연결하는 것만큼 직관적이진 않습니다. 이는 AWS IoT Core가 엄격한 보안 조치를 시행하고 있어, ESP32 코드에 통합하기 전에 인증 자격 증명을 얻고 권한을 부여받기 위한 구성 단계가 필요하기 때문입니다. 요약하자면, 이 과정은 주로 두 가지 주요 단계를 포함합니다:
- 1단계: AWS IoT Core 구성 - 이 단계는 AWS IoT Core를 설정하여 필요한 인증 자격증명을 생성하는 것을 포함합니다. 이 자격증명은 나중에 ESP32 코드에서 사용됩니다.
- 2단계: ESP32 코드 작성 - AWS IoT Core에서 인증 자격증명을 얻은 후, 다음 단계는 필요한 인증 및 통신 프로토콜을 통합하여 ESP32 코드를 작성하는 것입니다.
각 단계를 더 잘 이해하기 위해 자세히 살펴보도록 합시다.
ESP32 사용을 위한 AWS IoT Core 구성
이 단계의 목표는 다음과 같습니다:
- AWS IoT Core에서 ESP32 장치의 표현을 생성하여 "Thing"이라고 합니다.
- ESP32 장치가 AWS IoT Core에 연결하고, 게시하며, 구독할 수 있도록 필요한 권한을 구성하는 것으로 "Policy"라고 알려져 있습니다.
- 인증에 필요한 AWS 자격증명을 생성하는 것으로, "Certificates"라고 알려져 있습니다. 이 자격증명은 다운로드되어 Arduino ESP32 코드에 통합될 것입니다.
아래는 AWS IoT 콘솔을 통해 ESP32와 함께 사용하기 위해 AWS IoT Core를 설정하는 방법에 대한 지침입니다. 사용자 인터페이스는 시간이 지남에 따라 변경될 수 있지만, 아래에 제공된 지침과 유사한 과정을 유지할 것입니다:
AWS IoT 콘솔에 로그인하세요.
관리 모든 장치 Things으로 이동하여 Thing 생성하세요.
- Create things 버튼을 클릭하세요.
- Create single things을 선택하고 다음 버튼을 클릭하세요.
- Thing 이름을 지정하세요. 예를 들어, ESP32-thing라고 입력하고 페이지 하단에 있는 다음 버튼을 클릭하세요.
새 인증서 자동 생성 옵션을 선택하여 자격 증명을 생성하세요, 그리고 다음 버튼을 클릭하세요.
- 이제 인증서가 생성되어 사물에 연결되었습니다.
- 정책 생성 버튼을 클릭하여 정책을 생성하세요.
새 탭이 열릴 것입니다
- 예를 들어, ESP32-policy와 같은 정책 이름을 지정하고 JSON 버튼을 클릭하세요.
- 아래의 JSON 정책 내용을 복사하여 정책 문서 영역에 붙여넣으세요:
- 페이지 하단의 생성 버튼을 클릭하여 정책을 생성하세요.
- 이제 정책이 생성되어 인증서에 첨부되었습니다. 해당 페이지를 닫고 Thing 페이지로 돌아가세요.
- ESP32-policy를 확인하고 Thing 생성 버튼을 클릭하여 Thing을 생성하세요.
다운로드할 수 있는 인증 파일이 있는 팝업 창이 나타납니다. 모든 파일을 다운로드하여 PC의 안전한 위치에 보관하고 기밀로 유지하십시오.
그런 다음 완료 버튼을 클릭하세요.
다운로드한 파일들 중 다음 단계에서 ESP32 코드에서 사용될 세 개의 파일이 있습니다:
- AmazonRootCA1.pem
- Xxxxxxxxxx-certificate.pem.crt
- Xxxxxxxxxx-private.pem.key
Korean:
- AmazonRootCA1.pem
- Xxxxxxxxxx-certificate.pem.crt
- Xxxxxxxxxx-private.pem.key
이 파일들은 메모장이나 Notepad++와 같은 모든 텍스트 편집기로 열 수 있습니다.
AWS IoT Core에 연결하기 위한 ESP32 코드 작성
사용 방법
- ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
- Arduino IDE의 왼쪽 네비게이션 바에서 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다.
- 검색 상자에 MQTT를 입력한 다음, Joel Gaehwiler의 MQTT 라이브러리를 찾습니다.
- Install 버튼을 클릭하여 MQTT 라이브러리를 설치합니다.
검색 상자에 ArduinoJson을 입력한 다음, Benoit Blanchon의 ArduinoJson 라이브러리를 찾으세요.
ArduinoJson 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
- 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
- Arduino IDE에서 secrets.h 파일을 생성하려면:
- 직렬 모니터 아이콘 바로 아래에 있는 버튼을 클릭하고 새 탭을 선택하거나, Ctrl+Shift+N 키를 사용하세요.
- WiFi 네트워크의 WIFI_SSID와 WIFI_PASSWORD
- AWS_CERT_CA, AWS_CERT_CRT, AWS_CERT_PRIVATE. 이 정보는 이전 단계에서 다운로드한 파일들에 있습니다.
- AWS_IOT_ENDPOINT. 이 정보는 아래 이미지처럼 AWS IoT 콘솔에서 설정으로 가서 찾을 수 있습니다:
파일 이름을 secrets.h로 지정하고 OK 버튼을 클릭하세요.
아래 코드를 복사하여 생성된 secrets.h 파일에 붙여넣으십시오.
아래 정보를 secrets.h에 업데이트하세요.
Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
ESP32에서 AWS IoT로 데이터 보내기
위의 ESP32 코드는 아날로그 핀에서 주기적으로 데이터를 읽고, 매 4초마다 그 데이터를 AWS IoT로 전송합니다. 아두이노 IDE에서 시리얼 모니터를 열면, 아래와 같은 로그를 볼 수 있습니다:
AWS IoT에서 데이터가 수신되었는지 확인하려면 다음 단계를 수행하세요:
AWS IoT 콘솔에서 테스트 MQTT 테스트 클라이언트로 이동하세요
- 주제 구독하기 버튼을 클릭하세요.
- 주제 필터에 esp32/esp32-to-aws를 입력하세요. 주제를 변경할 수는 있지만 ESP32 코드에 있는 주제와 일치해야 합니다.
- 구독하기 버튼을 클릭하세요.
- AWS IoT 콘솔에서 ESP32에서 보낸 데이터를 볼 수 있습니다.
AWS IoT에서 ESP32로 데이터 전송
다음 단계를 수행함으로써 AWS IoT 콘솔에서 ESP32로 데이터를 보낼 수 있습니다:
- 아두이노 IDE에서 시리얼 모니터를 엽니다
- AWS IoT 콘솔에서 테스트 MQTT 테스트 클라이언트로 이동하세요
- 주제에 게시하기 버튼을 클릭하세요.
- 주제 이름에 esp32/aws-to-esp32를 입력하세요. 주제는 변경할 수 있지만 ESP32 코드에 있는 주제와 일치해야 합니다.
- 선택적으로, 메시지 페이로드를 변경하거나 기본값으로 유지할 수 있습니다.
- 게시하기 버튼을 클릭하세요.
- Arduino IDE에서 시리얼 모니터를 확인하세요, AWS IoT 콘솔에서 보낸 메시지를 볼 수 있습니다.
AWS로 더 많은 것을 하세요
이제 ESP32와 AWS IoT Core 사이에 양방향 커뮤니케이션을 설정할 수 있습니다. 이는 ESP32에서 AWS IoT Core로 데이터를 보내고 AWS IoT Core에서 ESP32로 데이터를 받을 수 있음을 의미합니다. 또한, IoTRules를 구성할 수 있는 기능을 갖추고 있어, ESP32가 Lambda, DynamoDB, Amplify, RDS와 같은 다른 AWS 서비스와 원활하게 연결될 수 있습니다. IoTRules를 사용하면 ESP32에서 받은 데이터를 기반으로 자동으로 작업을 실행할 수 있어, 다양한 IoT 응용 프로그램 및 통합을 가능하게 합니다.