본문 바로가기

ESP32

ESP32 ESP-NOW 시작하기

반응형

 

GESP-NOW(Arduino IDE를 사용한 ESP32)로 시작하기

 

Arduino IDE로 프로그래밍된 ESP32 보드 간에 ESP-NOW를 사용하여 데이터를 교환하는 방법을 알아보세요. ESP-NOW는 Espressif에서 개발한 연결 없는 통신 프로토콜로, 짧은 패킷 전송을 특징으로 합니다. 이 프로토콜을 사용하면 여러 장치가 쉽게 서로 통신할 수 있습니다.

 

Espressif 설명 추가 - ESP-NOW

 

ESP-NOW는 데이터 링크 계층을 기반으로 하는 무선 통신 프로토콜로, OSI 모델의 5개 계층을 1개 계층으로 줄였습니다. 따라서 네트워크 계층, 전송 계층, 세션 계층, 프레젠테이션 계층, 애플리케이션 계층을 통해 데이터를 전송할 필요가 없습니다. 또한 각 계층에 패킷 헤더나 언패커가 필요하지 않으므로 혼잡한 네트워크에서 패킷 손실로 인한 지연을 줄여 빠른 응답이 가능합니다. 

 

 

https://www.espressif.com/en/solutions/low-power-solutions/esp-now

 

 

ESP-NOW 시작하기(Arduino IDE를 사용한 ESP32)

 

ESP32를 사용한 ESP-NOW에 대한 다른 튜토리얼이 있습니다.

 

  • ESP-NOW ESP32 보드 간 양방향 통신
  • ESP-NOW와 ESP32: 여러 보드에 데이터 전송(일대다)
  • ESP-NOW와 ESP32: 여러 보드에서 데이터 수신(다대일)
  • ESP32: ESP-NOW 웹 서버 센서 대시보드(ESP-NOW + Wi-Fi)

 

Arduino IDE

 

Arduino IDE를 사용하여 ESP32 보드를 프로그래밍하므로 이 튜토리얼을 진행하기 전에 Arduino IDE에 ESP32 애드온을 설치해야 합니다. 다음 가이드를 따르세요.

 

Arduino IDE에 ESP32 보드 설치(Windows, Mac OS X 및 Linux 지침)

 

참고: ESP8266 NodeMCU 보드에 대한 유사한 가이드가 있습니다. ESP-NOW 시작하기(Arduino IDE가 있는 ESP8266 NodeMCU)

 

ESP-NOW 소개

 

ESP-NOW 프로토콜에 대한 비디오 소개를 보려면 다음을 시청하세요(이 비디오에 나오는 프로젝트를 시도해 보세요).

 

Espressif 웹사이트에 따르면 ESP-NOW는 "Espressif에서 개발한 프로토콜로, 여러 기기가 Wi-Fi를 사용하지 않고도 서로 통신할 수 있도록 합니다. 이 프로토콜은 저전력 2.4GHz 무선 연결과 유사합니다(…). 기기 간 페어링은 통신 전에 필요합니다. 페어링이 완료되면 연결이 안전하고 피어투피어가 되며 핸드셰이크가 필요하지 않습니다."

 

ESP-NOW - ESP32 로고

 

즉, 기기를 서로 페어링한 후에는 연결이 지속됩니다. 즉, 보드 중 하나가 갑자기 전원이 꺼지거나 재설정되면 다시 시작할 때 자동으로 피어에 연결되어 통신을 계속합니다.

 

ESP-NOW는 다음 기능을 지원합니다.

  • 암호화 및 암호화되지 않은 유니캐스트 통신;
  • 암호화 및 암호화되지 않은 피어 장치의 혼합;
  • 최대 250바이트 페이로드를 전송할 수 있음;
  • 애플리케이션 계층에 전송 성공 또는 실패를 알리도록 설정할 수 있는 콜백 함수 전송.

 

ESP-NOW 기술에는 다음과 같은 제한 사항도 있습니다.

 

  • 제한된 암호화된 피어. Station 모드에서는 최대 10개의 암호화된 피어가 지원됩니다. SoftAP 또는 SoftAP + Station 모드에서는 최대 6개;
  • 암호화되지 않은 피어가 여러 개 지원되지만 암호화된 피어를 포함하여 총 수는 20개 미만이어야 합니다.
  • 페이로드는 250바이트로 제한됩니다.

 

간단히 말해서 ESP-NOW는 ESP32 보드 간에 작은 메시지(최대 250바이트)를 교환하는 데 사용할 수 있는 빠른 통신 프로토콜입니다.

 

ESP-NOW는 매우 다재다능하며 다양한 설정에서 단방향 또는 양방향 통신을 할 수 있습니다.

 

ESP-NOW 단방향 통신

 

예를 들어 단방향 통신에서 다음과 같은 시나리오가 있을 수 있습니다.

 

  • 한 ESP32 보드에서 다른 ESP32 보드로 데이터를 전송

 

이 구성은 구현하기 매우 쉽고 센서 판독값이나 GPIO를 제어하기 위한 켜기 및 끄기 명령과 같이 한 보드에서 다른 보드로 데이터를 전송하는 데 좋습니다.

 

ESP-NOW 한 ESP32 보드에서 다른 ESP32 보드로 데이터를 전송

 

 

하나의 ESP32 보드에서 다른 ESP32 보드로 동일하거나 다른 명령을 전송. 이 구성은 원격 제어와 같은 것을 만드는 데 이상적입니다. 집 주변에 여러 ESP32 보드를 두고 하나의 주 ESP32 보드로 제어할 수 있습니다.

 

ESP-NOW 마스터 ESP32가 여러 ESP32 슬레이브에 데이터를 전송

 

 

이 구성은 여러 센서 노드에서 데이터를 하나의 ESP32 보드로 수집하려는 경우에 이상적입니다. 예를 들어, 다른 모든 보드의 데이터를 표시하는 웹 서버로 구성할 수 있습니다.

 

ESP-NOW 하나의 ESP32 슬레이브가 여러 마스터로부터 데이터를 수신

 

참고: ESP-NOW 설명서에는 "송신기/마스터"와 "수신기/슬레이브"라는 용어가 없습니다. 모든 보드는 송신자 또는 수신자가 될 수 있습니다. 그러나 명확하게 하기 위해 "송신기"와 "수신기" 또는 "마스터"와 "슬레이브"라는 용어를 사용하겠습니다.

 

ESP-NOW 양방향 통신

 

ESP-NOW를 사용하면 각 보드가 동시에 송신자와 수신자가 될 수 있습니다. 따라서 보드 간에 양방향 통신을 설정할 수 있습니다.

 

예를 들어, 두 보드가 서로 통신할 수 있습니다.

 

ESP-NOW 두 ESP32 보드 간 양방향 통신

 

다음 방법을 알아보세요: ESP-NOW 양방향 통신으로 센서 판독값 교환.

 

이 구성에 보드를 더 추가하면 네트워크처럼 보이는 것을 만들 수 있습니다(모든 ESP32 보드가 서로 통신).

 

여러 ESP32 보드 간 ESP-NOW 통신

 

요약하자면, ESP-NOW는 여러 ESP32 보드가 서로 데이터를 교환할 수 있는 네트워크를 구축하는 데 이상적입니다.

 

ESP32: 보드 MAC 주소 가져오기

 

ESP-NOW를 통해 통신하려면 ESP32 수신기의 MAC 주소를 알아야 합니다. 이를 통해 데이터를 보낼 장치를 알 수 있습니다.

 

각 ESP32에는 고유한 MAC 주소가 있으며 이를 통해 ESP-NOW를 사용하여 각 보드를 식별하여 데이터를 보냅니다(ESP32 MAC 주소 가져오기 및 변경 방법 알아보기).

 

보드의 MAC 주소를 가져오려면 다음 코드를 업로드합니다.

 

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/get-change-esp32-esp8266-mac-address-arduino/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.  
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
#include <WiFi.h>
#include <esp_wifi.h>

void readMacAddress(){
  uint8_t baseMac[6];
  esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
  if (ret == ESP_OK) {
    Serial.printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
                  baseMac[0], baseMac[1], baseMac[2],
                  baseMac[3], baseMac[4], baseMac[5]);
  } else {
    Serial.println("Failed to read MAC address");
  }
}

void setup(){
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.STA.begin();

  Serial.print("[DEFAULT] ESP32 Board MAC Address: ");
  readMacAddress();
}
 
void loop(){

}

 

코드를 업로드한 후 115200의 전송 속도로 직렬 모니터를 열고 ESP32 RST/EN 버튼을 누릅니다. MAC 주소는 다음과 같이 인쇄됩니다.

 

ESP-NOW ESP32 보드 MAC 주소 가져오기

 

보드 MAC 주소는 ESP-NOW를 통해 올바른 보드로 데이터를 보내는 데 필요하므로 저장하세요.

 

ESP-NOW 단방향 지점 간 통신

 

ESP-NOW 무선 통신을 시작하기 위해 한 ESP32에서 다른 ESP32로 메시지를 보내는 방법을 보여주는 간단한 프로젝트를 빌드합니다. 한 ESP32는 "송신기"이고 다른 ESP32는 "수신기"가 됩니다.

 

ESP-NOW 단방향 지점 간 통신 ESP32

 

char, int, float 및 boolean 유형의 변수를 포함하는 구조를 보냅니다. 그런 다음 구조를 수정하여 프로젝트에 적합한 변수 유형(예: 센서 판독값 또는 무언가를 켜거나 끄는 boolean 변수)을 보낼 수 있습니다.

 

더 잘 이해하기 위해 "송신기"를 ESP32 #1로, "수신기"를 ESP32 #2로 호출합니다.

 

송신기 스케치에 포함해야 할 내용은 다음과 같습니다.

 

  1. ESP-NOW 초기화;
  2. 데이터를 보낼 때 콜백 함수 등록 - 메시지가 전송되면 OnDataSent 함수가 실행됩니다. 이를 통해 메시지가 성공적으로 전달되었는지 여부를 알 수 있습니다.
  3. 피어 장치(수신기)를 추가합니다. 이를 위해 수신자의 MAC 주소를 알아야 합니다.
  4. 피어 장치로 메시지를 보냅니다.

 

수신 측에서 스케치에는 다음이 포함되어야 합니다.

 

  1. ESP-NOW 초기화;
  2. 수신 콜백 함수(OnDataRecv)에 등록합니다. 이 함수는 메시지를 수신할 때 실행됩니다.
  3. 해당 콜백 함수 내부에서 메시지를 변수에 저장하여 해당 정보로 모든 작업을 실행합니다.

 

ESP-NOW는 장치가 메시지를 수신하거나 메시지를 보낼 때 호출되는 콜백 함수와 함께 작동합니다(메시지가 성공적으로 전달되었는지 또는 실패했는지 여부가 표시됨).

 

ESP-NOW 유용한 함수

 

다음은 가장 필수적인 ESP-NOW 함수의 요약입니다.

 

함수 이름 및 설명

 

  • esp_now_init() ESP-NOW를 초기화합니다. ESP-NOW를 초기화하기 전에 Wi-Fi를 초기화해야 합니다.
  • esp_now_add_peer() 이 함수를 호출하여 장치를 페어링하고 피어 MAC 주소를 인수로 전달합니다.
  • esp_now_send() ESP-NOW로 데이터를 보냅니다.
  • esp_now_register_send_cb() 데이터를 보낼 때 트리거되는 콜백 함수를 등록합니다. 메시지가 전송되면 함수가 호출됩니다. 이 함수는 전송이 성공했는지 여부를 반환합니다.
  • esp_now_register_recv_cb() 데이터를 수신하면 트리거되는 콜백 함수를 등록합니다. ESP-NOW를 통해 데이터를 수신하면 함수가 호출됩니다.

 

이러한 함수에 대한 자세한 내용은 Read the Docs에서 ESP-NOW 문서를 읽어보세요.

 

ESP32 Sender Sketch(ESP-NOW)

 

다음은 ESP32 Sender 보드의 코드입니다. 코드를 Arduino IDE에 복사하지만 아직 업로드하지 마세요. 작동하도록 하려면 몇 가지 수정이 필요합니다.

 

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/esp-now-esp32-arduino-ide/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
#include <esp_now.h>
#include <WiFi.h>

// REPLACE WITH YOUR RECEIVER MAC Address
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
  char a[32];
  int b;
  float c;
  bool d;
} struct_message;

// Create a struct_message called myData
struct_message myData;

esp_now_peer_info_t peerInfo;

// callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("\r\nLast Packet Send Status:\t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
 
void setup() {
  // Init Serial Monitor
  Serial.begin(115200);
 
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // Once ESPNow is successfully Init, we will register for Send CB to
  // get the status of Trasnmitted packet
  esp_now_register_send_cb(OnDataSent);
  
  // Register peer
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;
  
  // Add peer        
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
}
 
void loop() {
  // Set values to send
  strcpy(myData.a, "THIS IS A CHAR");
  myData.b = random(1,20);
  myData.c = 1.2;
  myData.d = false;
  
  // Send message via ESP-NOW
  esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
   
  if (result == ESP_OK) {
    Serial.println("Sent with success");
  }
  else {
    Serial.println("Error sending the data");
  }
  delay(2000);
}

 

코드 작동 방식

 

먼저 esp_now.h 및 WiFi.h 라이브러리를 포함합니다.

 

#include <esp_now.h>
#include <WiFi.h>

 

다음 줄에 ESP32 수신기 MAC 주소를 삽입해야 합니다.

 

uint8_t broadcastAddress[] = {0x30, 0xAE, 0xA4, 0x07, 0x0D, 0x64};

 

우리의 경우 수신자 MAC 주소는 30:AE:A4:07:0D:64이지만, 해당 변수를 자신의 MAC 주소로 바꿔야 합니다.

 

그런 다음, 보내고자 하는 데이터 유형이 포함된 구조체를 만듭니다. 이 구조체를 struct_message라고 하며, 여기에는 4가지 다른 변수 유형이 포함됩니다. 다른 변수 유형을 보내도록 변경할 수 있습니다.

 

typedef struct struct_message {
  char a[32];
  int b;
  float c;
  bool d;
} struct_message;

 

그런 다음, 변수 값을 저장하는 myData라는 struct_message 유형의 새 변수를 만듭니다.

 

struct_message myData;

 

피어에 대한 정보를 저장하는 esp_now_peer_info_t 유형의 변수를 만듭니다.

 

esp_now_peer_info_t peerInfo;

 

그런 다음, OnDataSent() 함수를 정의합니다. 이것은 메시지가 전송될 때 실행되는 콜백 함수입니다. 이 경우, 이 함수는 메시지가 성공적으로 전달되었는지 여부를 간단히 출력합니다.

 

void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("\r\nLast Packet Send Status:\t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}

 

setup()에서 디버깅 목적으로 직렬 모니터를 초기화합니다.

 

Serial.begin(115200);

 

장치를 Wi-Fi 스테이션으로 설정합니다.

 

WiFi.mode(WIFI_STA);

 

ESP-NOW 초기화:

 

if (esp_now_init() != ESP_OK) {
  Serial.println("Error initializing ESP-NOW");
  return;
}

 

ESP-NOW를 성공적으로 초기화한 후, 메시지를 보낼 때 호출되는 콜백 함수를 등록합니다. 이 경우, 이전에 만든 OnDataSent() 함수에 등록합니다.

 

esp_now_register_send_cb(OnDataSent);

 

그 후, 다른 ESP-NOW 장치와 페어링하여 데이터를 보내야 합니다. 다음 줄에서 하는 일이 바로 그것입니다.

 

//Register peer
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;

//Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK){
  Serial.println("Failed to add peer");
  return;
}

 

loop()에서 2초마다 ESP-NOW를 통해 메시지를 보냅니다(지연 시간을 변경할 수 있습니다).

 

먼저, 다음과 같이 변수 값을 설정합니다.

 

strcpy(myData.a, "THIS IS A CHAR");
myData.b = random(1,20);
myData.c = 1.2;
myData.d = false;

 

myData는 구조체라는 점을 기억하세요. 여기서 구조체 내부에 보내고자 하는 값을 할당합니다. 예를 들어, 첫 번째 줄은 char를 할당하고, 두 번째 줄은 임의의 Int 숫자, Float, Boolean 변수를 할당합니다.

 

가장 일반적인 변수 유형을 보내는 방법을 보여주기 위해 이런 종류의 구조체를 만듭니다. 다른 데이터 유형을 보내도록 구조체를 변경할 수 있습니다.

 

마지막으로, 다음과 같이 메시지를 보냅니다.

 

esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));

 

메시지가 성공적으로 전송되었는지 확인합니다.

 

if (result == ESP_OK) {
  Serial.println("Sent with success");
}
else {
  Serial.println("Error sending the data");
}

 

loop()는 2000밀리초(2초)마다 실행됩니다.

 

delay(2000);

 

ESP32 수신기 스케치(ESP-NOW)

 

다음 코드를 ESP32 수신기 보드에 업로드합니다.

 

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/esp-now-esp32-arduino-ide/  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/

#include <esp_now.h>
#include <WiFi.h>

// Structure example to receive data
// Must match the sender structure
typedef struct struct_message {
    char a[32];
    int b;
    float c;
    bool d;
} struct_message;

// Create a struct_message called myData
struct_message myData;

// callback function that will be executed when data is received
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.print("Char: ");
  Serial.println(myData.a);
  Serial.print("Int: ");
  Serial.println(myData.b);
  Serial.print("Float: ");
  Serial.println(myData.c);
  Serial.print("Bool: ");
  Serial.println(myData.d);
  Serial.println();
}
 
void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);
  
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  
  // Once ESPNow is successfully Init, we will register for recv CB to
  // get recv packer info
  esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));
}
 
void loop() {

}

 

코드 작동 방식

 

송신기와 마찬가지로 라이브러리를 포함하는 것으로 시작합니다.

 

#include <esp_now.h>
#include <WiFi.h>

 

데이터를 수신할 구조체를 만듭니다. 이 구조체는 송신자 스케치에 정의된 것과 동일해야 합니다.

 

typedef struct struct_message {
  char a[32];
  int b;
  float c;
  bool d;
} struct_message;

 

myData라는 struct_message 변수를 만듭니다.

 

struct_message myData;

 

ESP32가 ESP-NOW를 통해 데이터를 수신할 때 호출되는 콜백 함수를 만듭니다. 이 함수는 onDataRecv()라고 하며 다음과 같이 여러 매개변수를 허용해야 합니다.

 

void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {

 

incomingData 데이터 변수의 내용을 myData 변수에 복사합니다.

 

memcpy(&myData, incomingData, sizeof(myData));

 

이제 myData 구조에는 ESP32 송신기에서 보낸 값이 포함된 여러 변수가 들어 있습니다. 예를 들어 변수 a에 액세스하려면 myData.a를 호출하기만 하면 됩니다.

 

이 예에서는 수신된 데이터를 간단히 인쇄하지만 실제 응용 프로그램에서는 예를 들어 디스플레이에 데이터를 인쇄할 수 있습니다.

 

Serial.print("Bytes received: ");
Serial.println(len);
Serial.print("Char: ");
Serial.println(myData.a);
Serial.print("Int: ");
Serial.println(myData.b);
Serial.print("Float: ");
Serial.println(myData.c);
Serial.print("Bool: ");
Serial.println(myData.d);
Serial.println();

 

setup()에서, 시리얼 모니터를 초기화합니다.

 

Serial.begin(115200);

 

Wi-Fi 스테이션으로 디바이스를 설정

 

WiFi.mode(WIFI_STA);

 

ESP-NOW 초기화

 

if (esp_now_init() != ESP_OK) {
  Serial.println("Error initializing ESP-NOW");
  return;
}

 

데이터를 수신할 때 호출되는 콜백 함수를 등록합니다. 이 경우 이전에 만든 OnDataRecv() 함수를 등록합니다.

 

esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));

 

ESP-NOW 통신 테스트

 

송신자 스케치를 송신자 ESP32 보드에 업로드하고 수신자 스케치를 수신자 ESP32 보드에 업로드합니다.

 

이제 Arduino IDE 창 두 개를 엽니다. 하나는 수신자용이고 다른 하나는 송신자용입니다. 각 보드의 직렬 모니터를 엽니다. 각 보드마다 다른 COM 포트여야 합니다.

 

송신자 측에서 표시되는 내용입니다.

 

ESP-NOW ESP32 송신자 메시지 인쇄 Arduino IDE 데모

 

그리고 수신자 측에서 표시되는 내용입니다. Int 변수는 수신된 각 판독값 사이에서 변경됩니다(송신자 측에서 난수로 설정했기 때문).

 

ESP-NOW ESP32 수신자 메시지 인쇄 Arduino IDE 데모

 

두 보드 간의 통신 범위를 테스트한 결과, 열린 들판에서 최대 220미터(약 722피트)까지 안정적인 통신이 가능했습니다. 이 실험에서는 두 ESP32 온보드 안테나가 서로를 가리키고 있었습니다.

 

ESP-NOW 통신 범위 테스트 ESP32

 

마무리

 

모든 것이 어떻게 작동하는지 더 잘 이해할 수 있도록 예제를 가능한 한 간단하게 유지하려고 노력했습니다. 피어 관리, 피어 삭제, 슬레이브 장치 스캔 등 프로젝트에 유용할 수 있는 ESP-NOW 관련 기능이 더 많이 있습니다. 전체 예제는 Arduino IDE에서 파일 > 예제 > ESP32 > ESPNow로 이동하여 예제 스케치 중 하나를 선택할 수 있습니다.

 

ESP-NOW에 대한 이 소개가 유용했기를 바랍니다. 간단한 시작 예제로, 한 ESP32에서 다른 ESP32로 데이터를 구조로 보내는 방법을 보여드렸습니다. 예를 들어 구조 값을 센서 판독값이나 GPIO 상태로 대체하는 것이 아이디어입니다.

 

또한 ESP-NOW를 사용하면 각 보드가 동시에 송신기와 수신기가 될 수 있습니다. 한 보드가 여러 보드로 데이터를 보내고 여러 보드에서 데이터를 수신할 수도 있습니다.

 

ESP8266을 사용한 ESP-NOW에 대한 튜토리얼도 있습니다: ESP-NOW 시작하기(Arduino IDE를 사용한 ESP8266 NodeMCU).

 

ESP32 보드에 대해 자세히 알아보려면 리소스를 살펴보세요.

 

  • ESP-NOW ESP32 보드 간 양방향 통신
  • Arduino IDE로 ESP32 배우기(비디오 코스 + 전자책);
  • ESP32 및 ESP8266을 사용한 MicroPython 프로그래밍
  • 더 많은 ESP32 리소스…

 

읽어주셔서 감사합니다. 배움을 절대로 멈추지 마세요.

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^