{"id":21790,"date":"2024-07-24T18:26:50","date_gmt":"2024-07-24T18:26:50","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/?p=21790"},"modified":"2024-08-19T21:36:34","modified_gmt":"2024-08-19T21:36:34","slug":"esp-now-serial","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial","title":{"rendered":"ESP-NOW Serial"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">About this Post<\/h2>\n\n<p>ESP-NOW Serial was introduced with the update of the ESP32 board package for Arduino to version 3.x. It is an ESP-NOW feature that impresses with its simple operation. I wrote a <a href=\"\" target=\"\" rel=\"noopener\">separate article<\/a> about ESP-NOW, which I have since adapted to reflect the changes in the 3.x board package.  <\/p>\r\n<p>ESP-NOW offers considerably more options than ESP-NOW Serial, but ESP-NOW is more complex, especially from board package version 3.x onwards. If you simply want to exchange some data between two or more ESP32 boards, ESP-NOW Serial could be just the thing for you. <\/p>\r\n<p>These are the topics I will discuss:<\/p>\r\n\n<ul>\r\n<li><a href=\"#get_mac_address\">Determining the MAC address<\/a><\/li>\r\n<li><a href=\"#minimum_example\">ESP-NOW Serial minimum example<\/a><\/li>\r\n<li><a href=\"#extended_sketch\">Extended sketch<\/a><\/li>\r\n<li><a href=\"#more_members\">Using more than two ESP-NOW Serial network participants<\/a><\/li>\r\n<li><a href=\"#structures\">Sending structures with ESP-NOW Serial<\/a><\/li>\r\n<\/ul>\r\n\n<h2 class=\"wp-block-heading\" id=\"get_mac_address\">Determining the MAC address<\/h2>\n\n<p>Before we get started with ESP-NOW Serial, I would like to show you how to determine the <a href=\"https:\/\/en.wikipedia.org\/wiki\/MAC_address\" target=\"_blank\" rel=\"noopener\">MAC addresses<\/a> of your ESP32 boards, as you will need these for communication. As a reminder: the MAC address of a device is a specific identifier consisting of six bytes with which you can uniquely identify a device in a network. <\/p>\r\n<p>The ESP32 has a different MAC address in station mode (STA) and access point mode (AP). In the example sketches, I only use STA mode, but you could also use AP mode or set up mixed networks with participants in STA and AP mode. <\/p>\r\n\n<h4 class=\"wp-block-heading\">Station mode<\/h4>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"get_mac_address_sta.ino\" data-enlighter-title=\"get_mac_address_sta.ino\">#include \"WiFi.h\"\r\n\r\nvoid setup(){\r\n    Serial.begin(115200);\r\n    delay(1000);\r\n    WiFi.mode(WIFI_STA); \r\n    while (!(WiFi.STA.started())) {\r\n        delay(10);\r\n    }\r\n    Serial.print(\"MAC-Address: \");\r\n    String mac = WiFi.macAddress();\r\n    Serial.println(mac);\r\n    \r\n    Serial.print(\"Formated: \");\r\n    Serial.print(\"{\");\r\n    int index = 0;\r\n    for (int i=0; i&lt;6; i++) {\r\n        Serial.print(\"0x\");\r\n        Serial.print(mac.substring(index, index+2));\r\n        if(i&lt;5){\r\n            Serial.print(\", \");\r\n        }\r\n        index += 3;\r\n    }\r\n    Serial.println(\"}\");\r\n}\r\n \r\nvoid loop(){}<\/pre>\n\n<p>Here is an output example:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_sta.png\"><img loading=\"lazy\" decoding=\"async\" width=\"382\" height=\"36\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_sta.png\" alt=\"Output of MAC address in station mode\" class=\"wp-image-21625\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_sta.png 382w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_sta-300x28.png 300w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/a><figcaption class=\"wp-element-caption\">Output of MAC address in station mode<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Access point mode<\/h4>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"get_mac_address_ap.ino\" data-enlighter-title=\"get_mac_address_ap.ino\">#include &lt;WiFi.h&gt; \r\n\r\nvoid setup(){\r\n    Serial.begin(115200);\r\n    delay(1000);\r\n    WiFi.mode(WIFI_AP); \r\n    while (!(WiFi.AP.started())) {\r\n        delay(10);\r\n    }\r\n    Serial.print(\"MAC-Address: \");\r\n    String mac = WiFi.softAPmacAddress();\r\n    Serial.println(mac);\r\n    \r\n    Serial.print(\"Formated: \");\r\n    Serial.print(\"{\");\r\n    int index = 0;\r\n    for (int i=0; i&lt;6; i++) {\r\n        Serial.print(\"0x\");\r\n        Serial.print(mac.substring(index, index+2));\r\n        if (i&lt;5) {\r\n            Serial.print(\", \");\r\n        }\r\n        index += 3;\r\n    }\r\n    Serial.println(\"}\");\r\n   \r\n}\r\n \r\nvoid loop(){}<\/pre>\r\n\n<p>And here is the output example:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_ap.png\"><img loading=\"lazy\" decoding=\"async\" width=\"395\" height=\"38\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_ap.png\" alt=\"\" class=\"wp-image-21627\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_ap.png 395w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_esp32_get_mac_address_ap-300x29.png 300w\" sizes=\"auto, (max-width: 395px) 100vw, 395px\" \/><\/a><figcaption class=\"wp-element-caption\">Output of MAC address in AP mode<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Alternative: changing the MAC address<\/h4>\n\n<p>Alternatively, you can change the MAC address specified by the hardware. The advantage of this is that you do not have to laboriously determine the MAC addresses for each board. I have described how to do this <a href=\"\" target=\"\" rel=\"noopener\">here<\/a>. The change of the MAC address is not permanent.   <\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"minimum_example\">ESP-NOW Serial minimum example<\/h2>\n\n<p>To get started, take the following sketch and upload it to two ESP32 boards. Before doing so, you must adapt the sketches regarding the MAC addresses of the communication partner (&#8220;peer&#8221;) and save it under different names. &nbsp;<\/p>\r\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_simple.ino\" data-enlighter-title=\"esp_now_simple.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n\r\nconst MacAddress peer_mac({0x94, 0x3C, 0xC6, 0x34, 0xCF, 0xA4}); \/\/ counterpart MAC address\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(100);\r\n    }\r\n    NowSerial.begin(115200);\r\n    Serial.println(\"You can now send data to the peer using the Serial Monitor.\\n\");\r\n}\r\n\r\nvoid loop() {\r\n    while (NowSerial.available()) {\r\n        Serial.write(NowSerial.read());\r\n    }\r\n    while (Serial.available()) {\r\n        NowSerial.write(Serial.read());\r\n    }\r\n    delay(1);\r\n}<\/pre>\r\n\n<p>Now you can open a serial monitor for both sketches and send messages from one board to the other. For better readability, you should set &#8220;Both NL CR&#8221; on both sides. <\/p>\r\n\n<h4 class=\"wp-block-heading\">Explanations to the sketch<\/h4>\n\n<ul>\r\n<li>Use <code>#define ESPNOW_WIFI_CHANNEL 1<\/code> to set the channel (1 to 14). The boards must be set to the same channel.  <ul>\r\n<li>Each channel has its own frequency (2412 to 2484 MHz). Not every channel may be used in every region, although channels 1 &#8211; 11 should be allowed in most countries. You can find more details <a href=\"\" target=\"\" rel=\"noopener\">here<\/a>.  <\/li>\r\n<\/ul>\r\n<\/li>\r\n<li><code>const MacAddress peer_mac({....})<\/code> is the address of your &#8220;peer&#8221;.<\/li>\r\n<li><code>ESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);<\/code> creates your ESP-NOW Serial object. You pass it the peer MAC address, the channel and the mode (here WIFI_IF_STA = WiFi Interface Station). <\/li>\r\n<li>Use <code>WIFI.Mode()<\/code> to set the mode, <code>WIFI.setChannel()<\/code> to set the channel and <code>WIFI.STA.started()<\/code> to check whether the mode has been started.<\/li>\r\n<li><code>NowSerial.begin()<\/code> starts your ESP-NOW Serial object.<\/li>\r\n<\/ul>\r\n\n<p>The main loop <code>loop()<\/code> works in the same way as you are used to from Serial or SoftwareSerial communication. <code>NowSerial.available()<\/code> checks whether data has been received. <code>NowSerial.read()<\/code> reads the next character from the receiver buffer as a byte, and <code>NowSerial.write()<\/code> writes a character to the transmitter buffer memory as a byte.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"extended_sketch\">Extended sketch<\/h2>\n\n<h4 class=\"wp-block-heading\">Attention: when the receiving board is not available<\/h4>\n\n<p>Disconnect one of the boards from the PC and try to send it a message from the other board. Of course, this does not work. Reconnect the board and send it a message again. It still does not work! The messages will be sent until you restart the sending board. I don&#8217;t know whether this is an intentional behavior or a bug that may be fixed in the future. In the following sketches, we catch the error by restarting the sending board if the transmission fails.      <\/p>\r\n<p>I would also like to use the next two sketches to show that other functions familiar from Serial and SoftwareSerial also work with ESP-NOW Serial. I have written a transmitter and a receiver sketch for this purpose. <\/p>\r\n\n<h4 class=\"wp-block-heading\">Transmitter sketch<\/h4>\n\n<div class=\"scroll-paragraph\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_sender.ino\" data-enlighter-title=\"esp_now_serial_sender.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n#define SEND_PERIOD 4000\r\n\r\nconst MacAddress peer_mac({0x94, 0x3C, 0xC6, 0x34, 0xCF, 0xA4});\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(100);\r\n    }\r\n    NowSerial.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    static unsigned long lastSent = 0;\r\n    \r\n    if (millis() - lastSent &gt; SEND_PERIOD) {\r\n        int success = NowSerial.println(\"Hi Receiver, greetings from your peer!\");\r\n        Serial.println(\"Message sent\"); \r\n        lastSent = millis();\r\n        \r\n        if (!success) {\r\n            Serial.println(\"Connection issue - rebooting in 3 seconds\");\r\n            delay(3000);\r\n            ESP.restart();\r\n        }\r\n    }\r\n    \r\n    if (NowSerial.available()) {\r\n        String messageIn = NowSerial.readStringUntil('\\n');\r\n        Serial.print(\"Receiver feedback: \");\r\n        Serial.println(messageIn);\r\n        Serial.println();\r\n    }\r\n\r\n    delay(1);\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\n<p><code>NowSerial.println()<\/code> returns the number of bytes written to the buffer. If this value is zero, the ESP32 is restarted with <code>ESP.restart()<\/code>. I think the sketch should otherwise be largely self-explanatory.  &nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\">Receiver Sketch<\/h4>\n\n<div class=\"scroll-paragraph\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_receiver.ino\" data-enlighter-title=\"esp_now_serial_receiver.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n\r\nconst MacAddress peer_mac({0xC8, 0xC9, 0xA3, 0xCA, 0x22, 0x70});\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(100);\r\n    }\r\n    NowSerial.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    if (NowSerial.available()) {\r\n        Serial.print(\"Sender message: \");\r\n        String messageIn = NowSerial.readStringUntil('\\n');\r\n        Serial.println(messageIn);\r\n        NowSerial.println(\"Thank you!\");\r\n    }\r\n    delay(1);\r\n}<\/pre>\r\n&nbsp;\r\n\r\n<\/div>\n\n<p>Here are the outputs:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender.png\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"137\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender.png\" alt=\"ESP-NOW Serial - Output of the transmitter\" class=\"wp-image-21632\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender.png 457w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender-300x90.png 300w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/a><figcaption class=\"wp-element-caption\">Output transmitter sketch<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver.png\"><img loading=\"lazy\" decoding=\"async\" width=\"516\" height=\"118\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver.png\" alt=\"ESP-NOW Serial Output of the receiver\" class=\"wp-image-21634\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver.png 516w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver-300x69.png 300w\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" \/><\/a><figcaption class=\"wp-element-caption\">Output receiver sketch<\/figcaption><\/figure>\n\n<p>You can disconnect the receiver from the power supply. You will then see that the transmitter board reboots automatically. However, this only happens after the second failed transmission. The error is not noticeable with the first message.   <\/p>\r\n<p><code>readStringUntil('\\n');<\/code> ensures that the string is evaluated immediately when the new line character is read. If you use the function <code>readString()<\/code> instead, the code waits until the timeout (default setting: 1000 milliseconds) to see if any more characters are received. <\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"more_members\">Using more than two ESP-NOW Serial network participants<\/h2>\n\n<p>You want more than two ESP32 boards to communicate with each other? No problem. All you have to do is create a separate ESP-NOW Serial object for each receiving board. And if you want to send messages to all network users, you can do this using the broadcast address FF:FF:FF:FF:FF:FF.<\/p>\r\n\n<p>The following sketches illustrate the principle using three boards. In this particular example, there is one transmitter and two receivers. The transmitter sends messages to receiver 1, then receiver 2 and finally receiver 1 and 2 at intervals of three seconds.<\/p>\r\n\n<h4 class=\"wp-block-heading\">Transmitter <\/h4>\n\n<p>The sender sketch sends the messages and waits for confirmation of receipt. If the transmission fails, there is a restart. To control which board receives the next message, I have introduced the variable sendToReceiver.<\/p>\r\n\n<div class=\"scroll-paragraph\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_sender_1_sender_2_receivers.ino\" data-enlighter-title=\"esp_now_serial_sender_1_sender_2_receivers.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n#define SEND_PERIOD 3000\r\n\r\nconst MacAddress peer_mac_1({0xC8, 0xC9, 0xA3, 0xCA, 0x22, 0x70}); \/\/ peer 1\r\nconst MacAddress peer_mac_2({0xC8, 0xC9, 0xA3, 0xC6, 0xFE, 0x54}); \/\/ peer 2\r\nconst MacAddress all_peers_mac({0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}); \/\/ broadcast\r\n\r\nESP_NOW_Serial_Class NowSerial1(peer_mac_1, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\nESP_NOW_Serial_Class NowSerial2(peer_mac_2, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\nESP_NOW_Serial_Class NowSerial_all(all_peers_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(10);\r\n    }\r\n    NowSerial1.begin(115200);\r\n    NowSerial2.begin(115200);\r\n    NowSerial_all.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    static unsigned long lastSent = millis();\r\n    static int sendToReceiver = 1;\r\n\r\n    if (millis() - lastSent &gt; SEND_PERIOD &amp;&amp; sendToReceiver == 1) {\r\n        int success = NowSerial1.println(\"Hello Receiver 1, greetings from your peer!\");\r\n        lastSent = millis();\r\n        sendToReceiver = 2;\r\n        checkSuccess(success);\r\n    }\r\n\r\n    if (millis() - lastSent &gt; SEND_PERIOD &amp;&amp; sendToReceiver == 2) {\r\n        int success = NowSerial2.println(\"Hello Receiver 2, greetings from your peer!\");\r\n        lastSent = millis();\r\n        sendToReceiver = 3;\r\n        checkSuccess(success);\r\n    }\r\n\r\n    if (millis() - lastSent &gt; SEND_PERIOD &amp;&amp; sendToReceiver == 3) {\r\n        NowSerial_all.println(\"Hi all, greetings from your peer!\");\r\n        lastSent = millis();\r\n        sendToReceiver = 1;\r\n    }\r\n\r\n    if (NowSerial1.available()) {\r\n        Serial.print(\"Receiver 1 feedback: \");\r\n        String messageIn = NowSerial1.readStringUntil('\\n');\r\n        Serial.println(messageIn);\r\n    }\r\n\r\n    if (NowSerial2.available()) {\r\n        Serial.print(\"Receiver 2 feedback: \");\r\n        String messageIn = NowSerial2.readStringUntil('\\n');\r\n        Serial.println(messageIn);\r\n    }\r\n    delay(1);\r\n}\r\n\r\nvoid checkSuccess(int success) {\r\n    if (!success) {\r\n        Serial.println(\"Connection issue - rebooting in 3 seconds\"); \r\n        delay(3000); \r\n        ESP.restart(); \r\n    }\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\n<h4 class=\"wp-block-heading\">Receiver<\/h4>\n\n<p>The sketches for the two receivers are identical.<\/p>\r\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_receiver_1_sender_2_receivers.ino\" data-enlighter-title=\"esp_now_serial_receiver_1_sender_2_receivers.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n\r\nconst MacAddress peer_mac({0x94, 0x3C, 0xC6, 0x34, 0xCF, 0xA4});\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!WiFi.STA.started()) {\r\n        delay(10);\r\n    }\r\n\r\n    NowSerial.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    if (NowSerial.available()) {\r\n        String messageIn = NowSerial.readStringUntil('\\n');\r\n        Serial.println(messageIn);\r\n        NowSerial.println(\"Message received\");\r\n    }\r\n    delay(1);\r\n}<\/pre>\r\n\n<p>Here are the outputs:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender_1_sender_2_receivers.png\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"116\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender_1_sender_2_receivers.png\" alt=\"Several ESP-NOW Serial network participants - output of the transmitter\" class=\"wp-image-21639\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender_1_sender_2_receivers.png 445w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_sender_1_sender_2_receivers-300x78.png 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/a><figcaption class=\"wp-element-caption\">Transmitter output<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver1_1_sender_2_receivers.png\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"81\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver1_1_sender_2_receivers.png\" alt=\"Several ESP-NOW Serial network members - output of receiver 1\" class=\"wp-image-21642\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver1_1_sender_2_receivers.png 464w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver1_1_sender_2_receivers-300x52.png 300w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/a><figcaption class=\"wp-element-caption\">Receiver 1 output<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver2_1_sender_2_receivers.png\"><img loading=\"lazy\" decoding=\"async\" width=\"466\" height=\"74\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver2_1_sender_2_receivers.png\" alt=\"Several ESP-NOW Serial network members - output receiver 2\" class=\"wp-image-21644\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver2_1_sender_2_receivers.png 466w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_receiver2_1_sender_2_receivers-300x48.png 300w\" sizes=\"auto, (max-width: 466px) 100vw, 466px\" \/><\/a><figcaption class=\"wp-element-caption\">Receiver 2 output<\/figcaption><\/figure>\n\n<p>ESP-NOW Serial is only suitable to a limited extent for more complex networks with many and\/or changing participants. In such cases, you should use ESP-NOW. Take a look at the example sketches of the ESP32 board package (File \u2192 Examples \u2192 ESP_NOW). The ESP_NOW_Network sketch in particular is very convenient, even if it is relatively difficult to digest for the average user.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"structures\">Sending structures with ESP-NOW Serial<\/h2>\n\n<p>Finally, I would like to show you how to send serial structures with ESP-NOW. Structures can be used as &#8220;data containers&#8221; if you want to send different data types in one message. Once again, I&#8217;ll use the example of a weather station that sends the humidity, temperature and rain status.<\/p>\r\n\n<h4 class=\"wp-block-heading\">Transmitter<\/h4>\n\n<div class=\"scroll-paragraph\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_struct_transmitter.ino\" data-enlighter-title=\"esp_now_serial_struct_transmitter.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n#define SEND_PERIOD 4000\r\n\r\nconst MacAddress peer_mac({0x94, 0x3C, 0xC6, 0x34, 0xCF, 0xA4});\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nstruct weatherData {\r\n  int humidity;\r\n  float temperature;\r\n  bool rain;\r\n};\r\n\r\nweatherData currentWeather = { 32, 25.0, false };\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(100);\r\n    }\r\n    NowSerial.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    static unsigned long lastSent = 0;\r\n    \r\n    if (millis() - lastSent &gt; SEND_PERIOD) {\r\n        int success = NowSerial.write((byte*)&amp;currentWeather, sizeof(currentWeather));\r\n        if (success) {\r\n            Serial.println(\"Message sent\"); \r\n        }\r\n        else {\r\n            Serial.println(\"Connection issue - rebooting in 3 seconds\");\r\n            delay(3000);\r\n            ESP.restart();\r\n        }\r\n        lastSent = millis();        \r\n    }\r\n    \r\n    if (NowSerial.available()) {\r\n        String messageIn = NowSerial.readStringUntil('\\n');\r\n        Serial.print(\"Receiver feedback: \");\r\n        Serial.println(messageIn);\r\n        Serial.println();\r\n    }\r\n\r\n    delay(1);\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\n<h4 class=\"wp-block-heading\">Receiver<\/h4>\n\n<div class=\"scroll-paragraph\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"esp_now_serial_struct_receiver.ino\" data-enlighter-title=\"esp_now_serial_struct_receiver.ino\">#include \"ESP32_NOW_Serial.h\"\r\n#include \"MacAddress.h\"\r\n#include \"WiFi.h\"\r\n#include \"esp_wifi.h\"\r\n\r\n#define ESPNOW_WIFI_CHANNEL 1\r\n\r\nconst MacAddress peer_mac({0xC8, 0xC9, 0xA3, 0xCA, 0x22, 0x70});\r\n\r\nESP_NOW_Serial_Class NowSerial(peer_mac, ESPNOW_WIFI_CHANNEL, WIFI_IF_STA);\r\n\r\nstruct weatherData {\r\n  int humidity;\r\n  float temperature;\r\n  bool rain;\r\n};\r\n\r\nweatherData currentWeather = { 0, 0.0, false };\r\n\r\nvoid setup() {\r\n    Serial.begin(115200);\r\n    WiFi.mode(WIFI_STA);\r\n    WiFi.setChannel(ESPNOW_WIFI_CHANNEL, WIFI_SECOND_CHAN_NONE);\r\n\r\n    while (!(WiFi.STA.started())) {\r\n        delay(100);\r\n    }\r\n    NowSerial.begin(115200);\r\n}\r\n\r\nvoid loop() {\r\n    if (NowSerial.available()) {\r\n        NowSerial.readBytes((byte*)&amp;currentWeather, sizeof(currentWeather));\r\n        Serial.print(\"Humidity [%]    : \");\r\n        Serial.println(currentWeather.humidity);\r\n        Serial.print(\"Temperature [\u00b0C]: \");\r\n        Serial.println(currentWeather.temperature, 1);\r\n        if (currentWeather.rain) {\r\n            Serial.println(\"It's raining.\\n\");\r\n        }\r\n        else {\r\n            Serial.println(\"It doesn't rain.\\n\");\r\n            NowSerial.println(\"Thank you!\");\r\n        }\r\n    }\r\n    delay(1);\r\n}<\/pre>\r\n<div>&nbsp;<\/div>\r\n<\/div>\r\n\n<p>Here are the outputs:<\/p>\r\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_transm.png\"><img loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"36\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_transm.png\" alt=\"\" class=\"wp-image-21747\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_transm.png 386w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_transm-300x28.png 300w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><figcaption class=\"wp-element-caption\">Transmitter output<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_recv.png\"><img loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"55\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_recv.png\" alt=\"\" class=\"wp-image-21749\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_recv.png 415w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/output_now_serial_struct_recv-300x40.png 300w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/a><figcaption class=\"wp-element-caption\">Receiver output<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\">Acknowledgement<\/h2>\n\n<p>I have <a href=\"https:\/\/pixabay.com\/de\/users\/maklay62-182851\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1432953\" target=\"_blank\" rel=\"noopener\">S K<\/a> on <a href=\"https:\/\/pixabay.com\/de\/\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1432953\" target=\"_blank\" rel=\"noopener\">Pixabay<\/a> to thank for the &#8220;NOW note&#8221; on the post image.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use. I will show you how to use ESP-NOW Serial.  <\/p>\n","protected":false},"author":1,"featured_media":21780,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[548,1320],"tags":[2545,2035,2546,2038,2496,2433],"class_list":["post-21790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wireless","category-wireless-en-2","tag-ap-en","tag-esp-now-en","tag-esp-now-serial-en","tag-mac-address","tag-sta-en","tag-structures"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ESP-NOW Serial &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ESP-NOW Serial &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-24T18:26:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-19T21:36:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"884\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wolfgang Ewald\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wolfgang Ewald\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"ESP-NOW Serial\",\"datePublished\":\"2024-07-24T18:26:50+00:00\",\"dateModified\":\"2024-08-19T21:36:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial\"},\"wordCount\":1094,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/post_image_esp_now_serial-1.png\",\"keywords\":[\"AP\",\"ESP-NOW\",\"ESP-NOW Serial\",\"MAC address\",\"STA\",\"Structures\"],\"articleSection\":[\"Wireless\",\"wireless\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial\",\"name\":\"ESP-NOW Serial &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/post_image_esp_now_serial-1.png\",\"datePublished\":\"2024-07-24T18:26:50+00:00\",\"dateModified\":\"2024-08-19T21:36:34+00:00\",\"description\":\"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/post_image_esp_now_serial-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/post_image_esp_now_serial-1.png\",\"width\":1000,\"height\":884},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/esp-now-serial#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ESP-NOW Serial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\",\"name\":\"Wolles Elektronikkiste\",\"description\":\"Die wunderbare Welt der Elektronik\",\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\",\"name\":\"Wolfgang Ewald\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"width\":512,\"height\":512,\"caption\":\"Wolfgang Ewald\"},\"logo\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ESP-NOW Serial &#8226; Wolles Elektronikkiste","description":"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial","og_locale":"en_US","og_type":"article","og_title":"ESP-NOW Serial &#8226; Wolles Elektronikkiste","og_description":"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial","og_site_name":"Wolles Elektronikkiste","article_published_time":"2024-07-24T18:26:50+00:00","article_modified_time":"2024-08-19T21:36:34+00:00","og_image":[{"width":1000,"height":884,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png","type":"image\/png"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"ESP-NOW Serial","datePublished":"2024-07-24T18:26:50+00:00","dateModified":"2024-08-19T21:36:34+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial"},"wordCount":1094,"commentCount":6,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png","keywords":["AP","ESP-NOW","ESP-NOW Serial","MAC address","STA","Structures"],"articleSection":["Wireless","wireless"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial","url":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial","name":"ESP-NOW Serial &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png","datePublished":"2024-07-24T18:26:50+00:00","dateModified":"2024-08-19T21:36:34+00:00","description":"ESP-NOW Serial is a new feature of the ESP32 board package from version 3.0.0, which is really easy to use.","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2024\/07\/post_image_esp_now_serial-1.png","width":1000,"height":884},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/esp-now-serial#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"ESP-NOW Serial"}]},{"@type":"WebSite","@id":"https:\/\/wolles-elektronikkiste.de\/en#website","url":"https:\/\/wolles-elektronikkiste.de\/en","name":"Wolles Elektronikkiste","description":"Die wunderbare Welt der Elektronik","publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wolles-elektronikkiste.de\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46","name":"Wolfgang Ewald","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","width":512,"height":512,"caption":"Wolfgang Ewald"},"logo":{"@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png"}}]}},"_links":{"self":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/21790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/comments?post=21790"}],"version-history":[{"count":0,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/21790\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/21780"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=21790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=21790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=21790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}