受信側
#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>
const int LED_PIN = 5;
bool ledState = false;
bool received = false;
uint8_t slaveAddress[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; // 受信機のMACアドレスに書き換えます
void flashLed() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
}
void onSend(const uint8_t* mac_addr, esp_now_send_status_t status) {
char macStr[18];
snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
Serial.println(macStr);
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Success" : "Failed");
}
void onReceive(const uint8_t* mac_addr, const uint8_t* data, int data_len) {
char macStr[18];
snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
Serial.println();
Serial.printf("Last Packet Recv from: %s\n", macStr);
Serial.printf("Last Packet Recv Data(%d): ", data_len);
for (int i = 0; i < data_len; i++) {
Serial.print(data[i]);
Serial.print(" ");
if (data[i] == 222) {
flashLed();
received = true;
}
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
flashLed();
Serial.println(WiFi.macAddress()); // このアドレスを送信側へ登録します
WiFi.mode(WIFI_STA);
WiFi.disconnect();
if (esp_now_init() == ESP_OK) {
Serial.println("ESP-Now Init Success");
}
flashLed();
esp_now_peer_info_t peerInfo = {}; //ココ重要
memcpy(peerInfo.peer_addr, slaveAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
}
esp_now_register_send_cb(onSend);
esp_now_register_recv_cb(onReceive);
}
void loop() {
// put your main code here, to run repeatedly:
uint8_t data[2] = { 33,55}; // 送信データ
if(received){
delay(100);
received = false;
esp_err_t result = esp_now_send(slaveAddress, data, sizeof(data));
if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
}
}
コメント
コメントを投稿