ESP-Now 통신 프로토콜을 사용하여 ESP32로 LED를 제어하는 방법 ESP32-C3F4
필요한 구성 요소:
1. 2xESP32-C3F4 보드
2. 브레드보드
3. LED
4.200ohm 저항
5. 푸시 버튼
0:00 -리뷰
0:27 -필요한 구성 요소
0:38 -송신기 보드 및 수신기 보드 - ESP-Now 프로토콜
2:03 -수신기의 MAC 주소
2:31 -수신기/슬레이브 보드에 LED 연결
2:47 -송신기/마스터 보드에 푸시 버튼 연결
2:55 -수신기 보드/슬레이브의 MAC 주소 가져오기
3:16 -수신기/슬레이브 스케치 - Arduino 코드
4:58 -슬레이브의 MAC 주소
5:20 -마스터 Arduino 코드
7:43 -ESP-Now 프로토콜을 사용하여 2개의 ESP32C3F4 보드로 무선으로 LED 제어
ESP32를 사용하여 LED를 제어하는 방법을 알아보세요. 이 단계별 튜토리얼에서 효율적인 ESP-Now 통신 프로토콜을 소개합니다. ESP32-C3F4 보드에 집중하고 LED를 원격으로 제어하기 위한 통신 프로토콜 설정에 대한 세부 사항을 살펴보겠습니다. 따라가서 프로세스를 이해하고 자신의 프로젝트에 구현하세요. 지금 시청하고 ESP32 기술을 향상시키세요!
Receive ESP now PushButton
#include <esp_now.h>
#include <WiFi.h>
const int lightME = 2;
struct __attribute__((packed)) dataPacket {
int state;
};
// callback function that will be executed when data is received
void OnDataRecv(const esp_now_recv_info* info, const uint8_t *incomingData, int len) {
dataPacket packet;
memcpy(&packet, incomingData, sizeof(packet));
Serial.print("button: ");
Serial.println(packet.state);
digitalWrite(lightME,(packet.state));
}
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
pinMode(lightME, OUTPUT);
// 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(OnDataRecv);
}
void loop() {
}
TransmitterESPnow_PushButton.ino
#include <esp_now.h>
#include <WiFi.h>
const int pushDown = 1;
// RECEIVER MAC ADDRESS: 60:55:f9:af:83:ec
// REPLACE WITH YOUR RECEIVER MAC Address
uint8_t broadcastAddress[] = {0x60, 0x55, 0xf9, 0xaf, 0x83, 0xec};
struct __attribute__((packed)) dataPacket {
int state ;
};
esp_now_peer_info_t peerInfo;
// callback when data is sent - I CAN CHANGE THIS FUNCTION BELOW
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() {
pinMode(pushDown,INPUT_PULLUP);
// 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;
//pinMode(pushDown, INPUT);
}
// 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() {
dataPacket packet;
packet.state = digitalRead(pushDown);
esp_now_send(broadcastAddress, (uint8_t *) &packet, sizeof(packet));
delay(30);
}
Espressif 에서 제공하는 ESP-NOW 통신 프로토콜 설명
'ESP32' 카테고리의 다른 글
ESP32 디지털 입력 및 디지털 출력(Arduino IDE) (2) | 2024.12.20 |
---|---|
ESP32 Pinout 참조: 어떤 GPIO 핀을 사용해야 합니까? (1) | 2024.12.19 |
ESP32 Multiple DS18B20 다중 온도 센서 사용법 (4) | 2024.12.16 |
ESP32 DS18B20 온도 센서(단일, 다중, 웹 서버) (1) | 2024.12.14 |
VS Code와 PlatformIO에서 ESP32, ESP8266 개발 환경 (2) | 2024.12.10 |
PlatformIO란 무엇인가요? (0) | 2024.12.06 |
Arduino IDE 2에 ESP32 보드 설치하기(Windows, Mac OS X, Linux) (3) | 2024.12.06 |
ESP32 4개의 센서 모니터링, 18개의 릴레이(12개 릴레이 + 예약된 릴레이 6개) 제어 (5) | 2024.11.29 |
더욱 좋은 정보를 제공하겠습니다.~ ^^