두 아두이노 나노 ESP32 간의 MQTT를 통한 통신 | Communication between two Arduino Nano ESP32 via MQTT
이 튜토리얼에서는 다음을 다룰 예정입니다:
- MQTT를 사용한 두 개의 Arduino Nano ESP32 간의 양방향 통신.
- 예시 애플리케이션: MQTT를 통해 Arduino Nano ESP32 #1에 연결된 버튼 또는 스위치를 사용하여 Arduino Nano ESP32 #2에 연결된 LED를 제어합니다.
준비물
2 | × | Arduino Nano ESP32 | Amazon | |
2 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Push Button | 쿠팡 | Amazon | |
1 | × | (Optional) Panel-mount Push Button | Amazon | |
1 | × | LED | Amazon | |
1 | × | 220 ohm resistor | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
아두이노 나노 ESP32와 MQTT에 대하여
우리는 여기에서 MQTT와 함께 아두이노 나노 ESP32를 사용하는 방법에 대한 자세한 튜토리얼을 가지고 있습니다:
아두이노 나노 ESP32 - MQTT(BASE_URL/tutorials/arduino-nano-esp32/arduino-nano-esp32-mqtt)
두 개의 아두이노 나노 ESP32 간의 MQTT를 통한 통신
두 개의 Arduino Nano ESP32 보드는 MQTT 서버를 사용하여 서로 통신할 수 있습니다. MQTT 서버를 사용하지 않고 직접 통신하길 원한다면, [Arduino Nano ESP32에서 Arduino Nano ESP32까지 TCP 클라이언트/서버 통신]에 관한 튜토리얼을 참조하십시오(BASE_URL/tutorials/arduino-nano-esp32/communication-between-two-arduino-nano-esp32).
Arduino Nano ESP32 #1과 Arduino Nano ESP32 #2가 MQTT 브로커를 통해 데이터를 교환할 때:
- 두 개의 아두이노 나노 ESP32가 MQTT 브로커에 연결합니다.
- 아두이노 나노 ESP32 #2가 아두이노 나노 ESP32 #1에 데이터를 보내기 위해서는:
- 아두이노 나노 ESP32 #1이 토픽을 구독합니다. 예를 들어: arduino-nano-esp32-1/data.
- 아두이노 나노 ESP32 #2는 아두이노 나노 ESP32 #1이 구독한 토픽에 데이터를 발행함으로써 아두이노 나노 ESP32 #1에게 데이터를 보낼 수 있습니다.
- 마찬가지로, 아두이노 나노 ESP32 #1이 아두이노 나노 ESP32 #2에게 데이터를 보내기 위해서는:
- 아두이노 나노 ESP32 #2가 토픽을 구독합니다. 예를 들어: arduino-nano-esp32-2/data.
- 아두이노 나노 ESP32 #1은 아두이노 나노 ESP32 #2가 구독한 토픽에 데이터를 발행함으로써 아두이노 나노 ESP32 #2에게 데이터를 보낼 수 있습니다.
이 방법에 따르면, 두 아두이노 나노 ESP32가 데이터를 양방향으로 교환할 수 있습니다.
예시 사용 사례
다음 애플리케이션을 실현해 봅시다: 아두이노 나노 ESP32 #1에 연결된 버튼/스위치가 MQTT를 통해 아두이노 나노 ESP32 #2에 연결된 LED를 제어합니다.
위에서 언급한 바와 같이, 우리가 사용할 수 있는 몇 가지 응용 프로그램 프로토콜이 있습니다. 이 예에서는 간단하게 하기 위해, 우리 스스로 프로토콜을 정의할 것입니다(자체 정의 프로토콜).
작동 원리
간단한 프로토콜을 설정합시다:
Arduino Nano ESP32 #1과 Arduino Nano ESP32 #2는 MQTT 브로커( MQTT 서버)에 연결합니다.
- Arduino Nano ESP32 #1에 대해:
- Arduino Nano ESP32 #1은 스위치의 상태가 변경될 때마다 특정 주제(topic)에 MQTT 메시지를 보냅니다.
- 버튼이나 스위치가 켜질 때, MQTT 메시지 페이로드는 1로 설정됩니다.
- 버튼이나 스위치가 꺼질 때, MQTT 메시지 페이로드는 0으로 설정됩니다.
- Arduino Nano ESP32 #2에 대해:
- Arduino Nano ESP32 #2은 주제(topic)를 구독합니다.
- Arduino Nano ESP32 #2가 페이로드가 1인 MQTT 메시지를 받으면 LED를 켭니다.
- Arduino Nano ESP32 #2가 페이로드가 0인 MQTT 메시지를 받으면 LED를 끕니다.
- Arduino Nano ESP32 #2 - 아두이노 나노 ESP32와 LED 사이의 연결도
배선도
아두이노 나노 ESP32 #1 - 아두이노 나노 ESP32와 버튼 간의 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
두 개의 Arduino Nano ESP32 간의 MQTT를 통한 통신
아두이노 나노 ESP32 코드 #1
아두이노 나노 ESP32 코드 #2
사용 방법
Arduino Nano ESP32를 시작하려면 다음 단계를 따르세요:
- Arduino Nano ESP32에 익숙하지 않다면, Arduino IDE에서 Arduino Nano ESP32 환경을 설정하는 방법에 대한 튜토리얼을 참조하세요. BASE_URL/tutorials/arduino-nano-esp32/arduino-nano-esp32-software-installation
- 제공된 다이어그램에 따라 구성 요소를 연결하세요.
- USB 케이블을 사용하여 Arduino Nano ESP32 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 실행하세요.
- Arduino Nano ESP32 보드와 해당하는 COM 포트를 선택하세요.
- 버튼/스위치를 Arduino Nano ESP32 #1에 연결하세요.
- LED를 Arduino Nano ESP32 #2에 연결하세요.
- Arduino IDE(이를 Arduino IDE #1이라고 합니다)를 열어주세요.
- PC에서 Arduino IDE 아이콘을 클릭하여 또 다른 Arduino IDE 창을 엽니다(이를 Arduino IDE #2라고 합니다)(중요!(**))
- Arduino IDE의 왼쪽 탐색 바에 있는 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다.
- 검색 상자에 MQTT를 입력한 다음, Joel Gaehwiler가 개발한 MQTT 라이브러리를 찾아보세요.
- MQTT 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
검색 상자에 ezButton을 입력한 다음, Arduino Nano ESP32GetStarted의 버튼 라이브러리를 찾으세요.
ezButton 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
- 아두이노 나노 ESP32 #1을 USB 케이블을 통해 PC에 연결하고 아두이노 IDE #1에서 아두이노 나노 ESP32 #1의 COM 포트를 선택하세요.
- 아두이노 나노 ESP32 #2을 USB 케이블을 통해 PC에 연결하고 아두이노 IDE #2에서 아두이노 나노 ESP32 #2의 COM 포트를 선택하세요.
- 아두이노 나노 ESP32 #1 코드를 복사하여 아두이노 IDE #1에 붙여넣고 저장하세요(이름은 아두이노 나노 ESP32-1으로 지정).
- 아두이노 나노 ESP32 #2 코드를 복사하여 아두이노 IDE #2에 붙여넣고 저장하세요(이름은 아두이노 나노 ESP32-2으로 지정).
- 두 코드의 WiFi 정보(SSID와 비밀번호)를 자신의 것으로 교체하세요.
- 두 코드의 MQTT 브로커 주소(도메인 이름 또는 IP 주소)를 교체하세요.
- 아두이노 나노 ESP32 #1 코드를 아두이노 나노 ESP32 #1에 업로드하세요.
- 아두이노 나노 ESP32 #2 코드를 아두이노 나노 ESP32 #2에 업로드하세요.
- 아두이노 IDE #1에서 시리얼 모니터를 열세요.
- 아두이노 IDE #2에서 시리얼 모니터를 열세요.
- 아두이노 나노 ESP32 #1의 버튼을 누르고 있으면 → 아두이노 나노 ESP32 #2의 LED 상태를 확인하세요(켜짐).
- 아두이노 나노 ESP32 #1의 버튼을 놓으면 → 아두이노 나노 ESP32 #2의 LED 상태를 확인하세요(꺼짐).
- 버튼을 여러 번 누르고, 누른 상태로 잡고, 놓으세요.
- 두 시리얼 모니터의 출력을 확인하세요.
- 아두이노 나노 ESP32 #1의 시리얼 모니터
- 아두이노 나노 ESP32 #2의 시리얼 모니터