diff --git a/ESP32/ESP_NOW/ESP_NOW_BROADCAST_test/ESP_NOW_BROADCAST_test.ino b/ESP32/ESP_NOW/ESP_NOW_BROADCAST_test/ESP_NOW_BROADCAST_test.ino new file mode 100644 index 0000000..6131912 --- /dev/null +++ b/ESP32/ESP_NOW/ESP_NOW_BROADCAST_test/ESP_NOW_BROADCAST_test.ino @@ -0,0 +1,106 @@ + +#include +#include +#include + +#define ONBOARD_LED 2 //GPIO02 D2 + +// MAC ADDRESS: 1: 6c:c8:40:06:43:d4 +// MAC ADDRESS: 2: 78:1c:3c:2d:1e:78 + +//RECEIVER MAC Address +uint8_t broadcastAddress[] = {0x78, 0x1C, 0x3C, 0x2D, 0x1E, 0x78}; + +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"); + } +} + + +// Structure example to send data +// Must match the receiver structure +typedef struct struct_message { + char a[32]; + int b; + float c; + bool led; +} 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; + } + pinMode(ONBOARD_LED, OUTPUT); + +} + +void loop() { + // Set values to send + strcpy(myData.a, "THIS IS A CHAR"); + myData.b = random(1,20); + myData.c = 1.2; + + if (myData.led == true){ + myData.led = false; + digitalWrite(ONBOARD_LED, LOW); + }else { + myData.led = true; + digitalWrite(ONBOARD_LED, HIGH); + } + Serial.println("myData.led"); + Serial.println(myData.led); + + + + // 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(200); +} \ No newline at end of file diff --git a/ESP32/ESP_NOW/ESP_NOW_RECIVCER_test/ESP_NOW_RECIVCER_test.ino b/ESP32/ESP_NOW/ESP_NOW_RECIVCER_test/ESP_NOW_RECIVCER_test.ino new file mode 100644 index 0000000..00fef3f --- /dev/null +++ b/ESP32/ESP_NOW/ESP_NOW_RECIVCER_test/ESP_NOW_RECIVCER_test.ino @@ -0,0 +1,62 @@ + +#include +#include + +#define ONBOARD_LED 2 //GPIO02 D2 + +// Structure example to receive data +// Must match the sender structure +typedef struct struct_message { + char a[32]; + int b; + float c; + bool led; +} 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.led); + 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)); + pinMode(ONBOARD_LED, OUTPUT); + +} + +void loop() { + if (myData.led == true){ + digitalWrite(ONBOARD_LED, HIGH); + } else { + digitalWrite(ONBOARD_LED, LOW); + } + delay(10); +} \ No newline at end of file