Getting Started with ESP-NOW ESP8266 with Arduino IDE

by | Oct 10, 2020 | ESP WIFI Projects | 0 comments

Feature Post!

ESP-NOW ESP8266 with Arduino IDE,ESP-NOW,ESP-NOW rang This article is all about ESP-NOW ESP8266, what is ESP-NOW and how it is useful in exchanging data between Arduino IDE and ESP8266 NodeMCU boards. Keep reading if you want to know about ESP-NOW.Usage of ESP-NOW ESP8266 NodeMCU on Arduino IDE

What is meant by ESP-NOW?

ESP-NOW is used in home automation project and industrial automation. ESP-NOW is a connectionless communication protocol that is defined by Espressif. And it can be used with ESP8266 boards. This is a lo power wireless connectivity and this protocol is used in wireless mouse that’s why it enables multiple devices to communicate with each other even without Wi-Fi and with safe and peer-to-peer connections. Therefore, it means that the connection is persistent and if one of the boards is disconnected it will automatically connect to its peer and continue its communication.

ESP-NOW ESP8266 with Arduino IDE,ESP-NOW,ESP-NOW rang

Features of ESP-NOW

ESP-NOW supports the following features:

  • Encrypted and unencrypted unicast communication.
  • Mixed encrypted and unencrypted peer devices.
  • Up to 250-byte payload can be carried.
  • The sending callback function that can be set to inform the application layer of transmission success or failure.
  • ESP-NOW is versatile, it means one can have one-way or two-way communications within different setups.

Limitations of ESP-NOW

ESP-NOW technology also has the following limitations:

  • Broadcast is not supported.
  • Payload is limited to 250 bytes.

ESP-NOW ONE-WAY Communication

One ESP8266 board to another ESP8266 board


In one-way communication, one ESP8266 board is sending data to another ESP8266 board. This way of communication is very easy to install and it is great way to send data from one ESP8266 to another ESP8266 board.ESP-NOW ESP8266 with Arduino IDE,ESP-NOW,ESP-NOW rang


One ESP8266 boards is sending data to multiple ESP8266 boards, we can say that on is “master” and all the others are “slaves”. It can control many others boards with a single main ESP8266 board.

 Multiple ESP8266 board to one ESP8266

This setup is ideal because in this many boards send data to only one boards. We can say that one is slave and others are master. As shown in the figure:

One ESP8266 board to multiple ESP8266 boards

ESP-NOW Two-Way Communication

In ESP-NOW, boards can transfer data from one board to another board at the same time. So, we can establish a two-way communication. We have two boards for communication.

ESP-NOW ESP8266 with Arduino IDE,ESP-NOW,ESP-NOW rang,ESP-NOW Two-Way Communication

And if you can more boards in two- way communication, you can easily add and it may be look something like that:

two- way communication

In fact, ESP-NOW is very ideal network and we can connect several ESP8266 boards with each other.

Preparing ESP8266 Board MAC Address

Firs of all we need to know the MAC address to communicate with ESP boards via ESP-NOW. So that we know which device we’ll send the information to. As you know each ESP8266 has unique MAC address.

Upload the code to get MAC address.










Now open serial monitors at baud rate 115200 and press the RESET button on ESP8266 board. You can see the printed MAC address like below:


Then save the MAC address because it helps you in sending data from one board to another board.

ESP-NOW One-way communication to another with ESP8266 board.

Now, this structure of one-way communication contains a variable of type char, float, int and string. Then you can send a structure in whichever variable you can choose.




Suppose we call one board ESP8266#1 and other is ESP8266#2.

These are what we should include in the sender sketch;

  1. Initialize ESP-NOW
  2. Register a callback function (OnDataSent) function. It will be executed when the message is sent.
  3. For MAC address you need to add the Peer device.
  4. Message to the peer deice.

On the receiver device, what should include in the sketch.

  1. Initialize ESP-NOW
  2. Register a callback function (OnDataRecv). It will be executed when the message is received.
  3. Now save the message into a variable inside that callback to execute any task with that information.
ESP-NOW Useful Function

The most useful ESP-NOW function are:

Function Name and Description
esp_now_init() Initializes ESP-NOW. You must initialize Wi-Fi before initializing ESP-NOW. Returns 0, if succeed.
esp_now_set_self_role(role) the role can be: ESP_NOW_ROLE_IDLE = 0,

esp_now_add_peer(uint8 mac_addr, uint8 role, uint8 channel, uint8 key, uint8 key_len) Call this function to pair a device.

esp_now_send(uint8 mac_address, uint8 data, int len) Send data with ESP-NOW.
esp_now_register_send_cb() Register a callback function that is triggered upon sending data. When a message is sent, a function is called – this function returns whether the delivery was successful or not.
esp_now_register_rcv_cb() Register a callback function that is triggered upon receiving data. When data is received via ESP-NOW, a function is called.


ESP8266 NodeMCU Sender Sketch (ESP-NOW)

Copy the given code n the Arduino IDE but before uploading it make some changes in it.












How the Code Work

First of all, we need to include ESP8266 libraries:



Your Reliable Custom Wiring Harness and Cable Assembly Supplier in China


ESP8266 Adafruit MQTT Broker,DHT11 ESP8266 Web Server,ESP-NOW ESP8266





Getting Started with ESP-NOW ESP8266 with Arduino IDE


pcb way

pcb way

PCB Assembly Service

our pcb 2

L298 Motor Driver Simulation in Proteus

L298 Motor Driver Simulation in Proteus


Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in /home1/project3/public_html/wp-includes/functions.php on line 5373