Table of Contents
This code allows multiple ESP32 devices to communicate with each other wirelessly using ESP-WIFI-MESH
Setup Instructions
- 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
- Upload this code to multiple ESP32 boards.
- Open the Serial Monitor (115200 baud) on each board.
- You should see messages being sent and received between the ESP32 devices.