Table of Contents

This code allows multiple ESP32 devices to communicate with each other wirelessly using ESP-WIFI-MESH

Setup Instructions

  1. Install the painlessMesh Library:
  • Open Arduino IDE.
  • Go to Sketch > Include Library > Manage Libraries.
  • Search for painlessMesh and install it.

ESP-MESH Example Code

#include "painlessMesh.h"

#define MESH_PREFIX     "ESP32_MESH"   // Name of the Mesh Network
#define MESH_PASSWORD   "meshpassword" // Password for Mesh Network
#define MESH_PORT       5555           // Port Number

Scheduler userScheduler; // Task scheduler
painlessMesh mesh;

// Function to send messages periodically
void sendMessage() {
    String msg = "Hello from node " + String(mesh.getNodeId());
    mesh.sendBroadcast(msg);
    Serial.println("Message Sent: " + msg);
}

// Task to send messages every 5 seconds
Task taskSendMessage(TASK_SECOND * 5, TASK_FOREVER, &sendMessage);

void receivedCallback(uint32_t from, String &msg) {
    Serial.printf("Received from %u: %s\n", from, msg.c_str());
}

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

    // Initialize the mesh network
    mesh.init(MESH_PREFIX, MESH_PASSWORD, MESH_PORT);
    mesh.onReceive(&receivedCallback);

    // Add task to scheduler
    userScheduler.addTask(taskSendMessage);
    taskSendMessage.enable();
}

void loop() {
    mesh.update();
    userScheduler.execute();
}

How It Works

  • Mesh Network Initialization: The ESP32 initializes a mesh network with a name (MESH_PREFIX) and password (MESH_PASSWORD).
  • Message Broadcasting: Every 5 seconds, each ESP32 node broadcasts a message.
  • Receiving Messages: When a node receives a message from another ESP32, it prints it to the Serial Monitor.
  • Scheduler: userScheduler is used to manage the message-sending task.

Testing

  1. Upload this code to multiple ESP32 boards.
  2. Open the Serial Monitor (115200 baud) on each board.
  3. You should see messages being sent and received between the ESP32 devices.

Categorized in:

ESP-WIFI-MESH,

Tagged in: