ถ้าคุณยังใหม่กับบอร์ดตัวนี้ และยังไม่ค่อยเห็นภาพว่า ESP32 ทำอะไรได้บ้าง ผมแนะนำให้เริ่มจากบทความ บอร์ด ESP32 คืออะไร ก่อน แล้วค่อยกลับมาอ่านเรื่อง ESP-NOW จะเข้าใจง่ายขึ้นมาก
ESP-NOW คืออะไร
ESP-NOW คือโปรโตคอลสื่อสารไร้สายของ Espressif ที่ให้อุปกรณ์ตระกูล ESP ส่งข้อมูลหากันได้แบบ connectionless หรือพูดง่าย ๆ คือ ไม่ต้องสร้างการเชื่อมต่อ Wi-Fi แบบเข้า Router ก่อน ก็ส่งข้อมูลกันได้เลย
แนวคิดนี้เหมาะมากกับงานที่เราต้องการส่งข้อมูลสั้น ๆ ระหว่างบอร์ด เช่น ค่าจากเซนเซอร์, คำสั่งเปิดปิดรีเลย์, สถานะอุปกรณ์ หรือปุ่มกดจากรีโมตไร้สาย เพราะโฟกัสของ ESP-NOW คือการส่งข้อมูลระหว่างอุปกรณ์ให้เร็วและเบากว่าการตั้งระบบเครือข่ายเต็มรูปแบบ

ESP-NOW เป็นการสื่อสารแบบไหน
มันคือการสื่อสารผ่านชั้น Wi-Fi ของชิป ESP แต่ไม่ใช่รูปแบบที่เราคุ้นเคยแบบ “ต่อ SSID แล้วค่อยคุยกัน” จุดนี้แหละที่ทำให้หลายคนชอบ เพราะใช้พลังของวิทยุ Wi-Fi แต่ลดความยุ่งยากของ network setup ลงไปเยอะ
ทำไมส่งข้อมูลได้โดยไม่ต้องผ่าน Router
เพราะ ESP-NOW ใช้วิธีส่งข้อมูลระหว่างอุปกรณ์โดยตรงผ่าน action frame แบบเฉพาะของ Espressif ทำให้บอร์ด ESP สองตัวหรือหลายตัวคุยกันได้โดยไม่ต้องพึ่ง Access Point เหมือนงาน Wi-Fi ปกติ
ESP-NOW ต่างจาก Wi-Fi ปกติอย่างไร
Wi-Fi ปกติจะเหมาะกับงานที่ต้องเชื่อมเครือข่าย, เปิด Web Server, ใช้ API, ต่อ Cloud หรือให้มือถือเข้ามาคุยกับบอร์ด แต่ ESP-NOW จะเหมาะกับงานสั้น กระชับ เร็ว และ local เช่น “บอร์ด A ส่งค่าไปบอร์ด B” หรือ “รีโมตสั่งรีเลย์อีกตัวหนึ่ง”
| หัวข้อ | ESP-NOW | Wi-Fi ปกติ |
|---|---|---|
| ต้องมี Router | ไม่จำเป็น | มักต้องมี |
| เหมาะกับข้อมูลสั้น ๆ | มาก | ได้ แต่ใหญ่กว่าและซับซ้อนกว่า |
| เหมาะกับ Web / Cloud | ไม่ใช่จุดเด่น | เหมาะกว่า |
| งาน local หน้างาน | เหมาะมาก | ทำได้ แต่ตั้งค่ายุ่งกว่า |
ยูทูป
ทำไม Maker ถึงนิยมใช้ ESP-NOW
เหตุผลจริง ๆ ไม่ได้ซับซ้อนเลยครับ — มัน ง่ายพอสำหรับงานจริง และ เร็วพอสำหรับงานควบคุม โดยเฉพาะเวลาเราทำโปรเจกต์ที่มีหลาย node กระจายกันอยู่

1) ตั้งระบบง่ายกว่า Wi-Fi หลายงาน
ถ้างานคุณแค่ต้องการส่งข้อมูลระหว่างบอร์ด เช่น node วัดอุณหภูมิส่งค่ามาหา node กลาง คุณไม่จำเป็นต้องตั้ง Access Point, ไม่ต้องพิมพ์รหัส Wi-Fi, ไม่ต้องรอเชื่อมต่อทุกครั้งให้ยุ่ง
2) ส่งข้อมูลสั้น ๆ ได้ไวและหน่วงต่ำ
งานพวกปุ่มกดไร้สาย, รีโมตควบคุม, แจ้งเตือนสถานะ, ส่งค่าจากเซนเซอร์เป็นช่วง ๆ มักเข้าทาง ESP-NOW มาก เพราะข้อมูลไม่ได้ใหญ่ และต้องการความตอบสนองที่ดี
3) เหมาะกับงาน local ที่ไม่อยากฝากชีวิตไว้กับเน็ต
อันนี้เป็นมุมช่างหน้างานจริงเลย ถ้าคุณทำระบบในสวน ในโรงเรือน หรือในบ้าน แล้วอินเทอร์เน็ตล่ม แต่คุณยังอยากให้ node ภายในพื้นที่คุยกันได้ ESP-NOW จะตอบโจทย์มากกว่าโยนทุกอย่างขึ้น cloud ตั้งแต่แรก
Tip จากงานจริง: ถ้างานของคุณเป็น “ส่งข้อมูลสั้น ๆ ภายในพื้นที่เดียวกัน” ให้ลองถามตัวเองก่อนว่า คุณจำเป็นต้องใช้ Wi-Fi เต็มระบบจริงไหม บางครั้ง ESP-NOW ง่ายกว่าและจบงานเร็วกว่ามาก
ESP-NOW เหมาะกับโปรเจกต์แบบไหน

Sensor Node ส่งค่าหา Node กลาง
เช่น บอร์ดตามจุดต่าง ๆ วัดอุณหภูมิ ความชื้น ดิน หรือระดับน้ำ แล้วส่งกลับมาที่บอร์ดกลางเพื่อตัดสินใจเปิดปั๊มหรือพัดลม
รีโมตควบคุมอุปกรณ์ไร้สาย
เช่น ปุ่มกด 1 ตัว ส่งคำสั่งไปเปิดไฟ เปิดปั๊ม เปิดรีเลย์ หรือสั่งโหมด manual ได้ทันที
Smart Farm ภายในพื้นที่เดียวกัน
อันนี้เข้าทางมาก เพราะหลายครั้งโรงเรือนหรือแปลงปลูกต้องการแค่ node กระจายจุดกับ node กลาง ไม่ได้อยากลากระบบเครือข่ายให้ใหญ่เกินความจำเป็น
ปุ่มกดไร้สาย / สวิตช์ไร้สาย / แจ้งเตือนเฉพาะจุด
งานประเภทกดปุ่มแล้วให้ปลายทางทำงานทันที เป็น use case ที่สวยมากของ ESP-NOW เพราะ logic ตรงไปตรงมาและ setup ไม่หนัก
ถ้าคุณตั้งใจจะใช้ ESP-NOW ส่งคำสั่งไปควบคุมรีเลย์ เช่น เปิดปั๊ม เปิดไฟ หรือสั่งอุปกรณ์ในระบบ Smart Farm ผมแนะนำให้อ่านเรื่อง ESP32 Relay Active LOW เพิ่มด้วย เพราะมันเป็นจุดที่คนงงกันเยอะมาก
| โปรเจกต์ | เหมาะกับ ESP-NOW ไหม | เหตุผล |
|---|---|---|
| Sensor node ส่งค่าไปบอร์ดหลัก | เหมาะมาก | ข้อมูลสั้น ส่งเป็นช่วง ๆ |
| รีโมตเปิดปิดรีเลย์ | เหมาะมาก | ตอบสนองไว ไม่ต้องพึ่ง Router |
| ส่งข้อมูลขึ้น Firebase / MQTT | ไม่ใช่จุดเด่นโดยตรง | ควรมี node กลางต่อ Wi-Fi อีกชั้น |
| Web dashboard ให้มือถือเปิดดู | ไม่พอด้วยตัวมันเอง | ควรใช้ Wi-Fi / Web Server ร่วมด้วย |
พอคุณเข้าใจหลักการของ ESP-NOW แล้ว ขั้นต่อไปคือเอาไปต่อยอดเป็นโปรเจกต์จริง ซึ่งคุณสามารถดูบทความรวมในหน้า Tutorials เพื่อเลือกแนวที่เหมาะกับงานของตัวเองได้
ข้อดีและข้อจำกัดของ ESP-NOW
จุดเด่นที่ทำให้คนทำโปรเจกต์ชอบ
- ไม่ต้องพึ่ง Router เสมอไป
- เหมาะกับการส่งข้อมูลสั้น ๆ ระหว่างบอร์ด
- โค้ดโดยรวมไม่หนักเท่างาน network เต็มระบบ
- เหมาะกับงาน local และ distributed node
- มีระบบเพิ่ม peer และส่งแบบ unicast / broadcast ได้
ข้อจำกัดเรื่องขนาดข้อมูล
ถ้าจะพูดแบบภาษาคนทำของ ESP-NOW ไม่ได้เกิดมาเพื่อส่งข้อมูลก้อนใหญ่ต่อเนื่อง มันเหมาะกับข้อมูลสั้น ๆ มากกว่า โดยในเอกสารของ Espressif ระบุข้อจำกัดสำคัญเรื่องความยาวข้อมูลต่อแพ็กเก็ตไว้ และ FAQ อย่างเป็นทางการก็อธิบายว่าความยาวข้อมูลสูงสุดแบบทั่วไปถูกจำกัดด้วยโครงสร้างของเฟรม ทำให้แนวคิดใช้งานที่เหมาะคือ “ส่งข้อมูลที่พอดีและกระชับ” มากกว่าจะยัดข้อมูลทุกอย่างทีเดียว
ข้อควรระวังเรื่อง channel และ peer
เรื่องที่มือใหม่เจอบ่อยคือส่งไม่ติดทั้งที่โค้ดเหมือนถูกแล้ว สาเหตุจำนวนไม่น้อยมาจาก channel ไม่ตรงกัน หรือยังไม่ได้เพิ่ม peer ให้ถูกต้องก่อนส่งข้อมูล นอกจากนี้เอกสารของ Espressif ยังระบุเรื่องจำนวน paired devices และ encrypted peers เอาไว้ด้วย ดังนั้นถ้าคุณจะขยายระบบหลาย node ควรวางโครงสร้างตั้งแต่แรก
ข้อควรจำ: ถ้าเพิ่งเริ่ม อย่าเพิ่งกระโดดไปหลาย node พร้อมกัน ให้เริ่มจาก 1 sender + 1 receiver ก่อน แล้วค่อยเพิ่ม struct, sensor และ logic ทีละชั้น
ESP-NOW ต่างจาก Wi-Fi, Bluetooth และ MQTT ยังไง
ใช้เมื่อไรควรเลือก ESP-NOW
เลือกเมื่อคุณต้องการให้บอร์ด ESP คุยกันเองโดยตรง ส่งข้อมูลสั้น ๆ เร็ว ๆ ในพื้นที่เดียวกัน และไม่อยากพึ่ง Router ตลอดเวลา
ใช้เมื่อไรควรใช้ Wi-Fi ปกติ
ใช้เมื่อคุณต้องทำ Web Server, Mobile App, REST API, Dashboard หรือเชื่อมอินเทอร์เน็ตจริงจัง
ใช้เมื่อไรควรส่งขึ้น MQTT หรือ Cloud
ใช้เมื่อคุณต้องการเก็บข้อมูลระยะยาว, ดูย้อนหลัง, แจ้งเตือนจากอินเทอร์เน็ต หรือควบคุมจากนอกบ้าน| เทคโนโลยี | เด่นเรื่อง | เหมาะกับ | ข้อสังเกต |
|---|---|---|---|
| ESP-NOW | คุยกันตรง ๆ ระหว่าง ESP | Sensor node, remote, local control | ไม่เหมาะกับข้อมูลก้อนใหญ่หรือ cloud ตรง ๆ |
| Wi-Fi | เชื่อม network เต็มระบบ | Web server, app, API | ตั้งค่ามากกว่า |
| Bluetooth | คุยกับมือถือสะดวก | ตั้งค่าเฉพาะจุด, app ใกล้ตัว | งานหลาย node กระจายพื้นที่อาจไม่ใช่ตัวแรกที่นึกถึง |
| MQTT | ส่งข้อมูลผ่าน broker | IoT, dashboard, cloud | ต้องมี network infrastructure |
ถึง ESP-NOW จะเหมาะกับการคุยกันระหว่างบอร์ดแบบตรง ๆ แต่ถ้างานของคุณต้องเชื่อม Router, เปิด Web Server หรือส่งข้อมูลขึ้นระบบอื่นผ่านเครือข่ายปกติ คุณควรเข้าใจพื้นฐานของ Wi-Fi บน ESP32 เพิ่มด้วย ซึ่งอ่านต่อได้ในบทความ ESP32 WiFi Library Functions
โค้ดเบื้องต้น ESP32 ESP-NOW ส่งข้อความหากัน
ตรงนี้ผมแนะนำให้เริ่มจากแบบง่ายที่สุดก่อน คือ บอร์ดตัวส่ง 1 ตัว และ บอร์ดตัวรับ 1 ตัว ส่งแค่ข้อความหรือค่าเดียวก่อน พอเข้าใจ flow แล้วค่อยขยับไปส่ง struct หรือข้อมูล sensor จริงดูโค้ดจริงและดาวน์โหลดไปลองต่อได้
ถ้าคุณอยากขยับจากการอ่านแนวคิด ไปสู่การลองทำจริง ผมเตรียมตัวอย่างโค้ดไว้บน GitHub แล้ว โดยแยกเป็นไฟล์หา MAC Address, ฝั่งส่ง และฝั่งรับ ให้ดู flow การทำงานได้ชัดขึ้นคุณสามารถเปิดดูโค้ดทีละไฟล์เพื่อทำความเข้าใจ หรือจะดาวน์โหลดไปลองแก้ค่า MAC Address แล้วอัปโหลดทดสอบบนบอร์ดจริงก็ได้ เหมาะมากสำหรับมือใหม่ที่อยากเห็นตัวอย่างแบบจับต้องได้กรุณา เข้าสู่ระบบ เพื่อดาวน์โหลด
แนวคิด Sender และ Receiver
- Sender = ตัวที่ส่งข้อมูลออก
- Receiver = ตัวที่รอรับข้อมูล
- ก่อนส่ง ต้องรู้ MAC Address ของปลายทาง
- ต้องเพิ่ม peer ให้ถูกก่อนใช้งาน

ตัวอย่างโค้ดฝั่งส่ง (Sender)
#include <WiFi.h>
#include <esp_now.h>
uint8_t receiverMac[] = {0x24, 0x6F, 0x28, 0xAA, 0xBB, 0xCC};
typedef struct {
int value;
char message[32];
} DataPacket;
DataPacket data;
void onSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("Send Status: ");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Success" : "Fail");
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
Serial.println("ESP-NOW init failed");
return;
}
esp_now_register_send_cb(onSent);
esp_now_peer_info_t peerInfo = {};
memcpy(peerInfo.peer_addr, receiverMac, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Add peer failed");
return;
}
}
void loop() {
data.value = random(0, 100);
strcpy(data.message, "Hello from Sender");
esp_err_t result = esp_now_send(receiverMac, (uint8_t *) &data, sizeof(data));
if (result == ESP_OK) {
Serial.println("Sending...");
} else {
Serial.println("Send error");
}
delay(2000);
}ตัวอย่างโค้ดฝั่งรับ (Receiver)
#include <WiFi.h>
#include <esp_now.h>
typedef struct {
int value;
char message[32];
} DataPacket;
DataPacket incomingData;
void onReceive(const esp_now_recv_info_t *info, const uint8_t *incomingDataBytes, int len) {
memcpy(&incomingData, incomingDataBytes, sizeof(incomingData));
Serial.print("Value: ");
Serial.println(incomingData.value);
Serial.print("Message: ");
Serial.println(incomingData.message);
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
Serial.println("ESP-NOW init failed");
return;
}
esp_now_register_recv_cb(onReceive);
}
void loop() {
}อธิบายโค้ดแบบภาษาคนทำของ
WiFi.mode(WIFI_STA);คือเปิดโหมด Station ให้ชิปพร้อมใช้งานฝั่งไร้สายesp_now_init()คือเริ่มระบบ ESP-NOWesp_now_add_peer()คือบอกว่าปลายทางที่จะส่งไปคือใครesp_now_send()คือคำสั่งส่งข้อมูลesp_now_register_recv_cb()คือฟังก์ชัน callback สำหรับฝั่งรับ
ปัญหาที่มือใหม่มักเจอ
- ใส่ MAC Address ผิด
- ใช้ struct ฝั่งส่งกับรับไม่ตรงกัน
- channel ไม่ตรงกันเมื่อใช้งานร่วมกับ Wi-Fi
- รีบขยายระบบหลาย node ก่อนเข้าใจ sender/receiver พื้นฐาน
ตอนเริ่มทดลอง คุณอาจใส่ MAC Address หรือค่าต่าง ๆ ไว้ตรง ๆ ในโค้ดก่อนก็ได้ แต่ถ้าจะทำเป็นโปรเจกต์ที่ใช้งานจริง การเก็บค่าเหล่านี้ให้จำได้หลังรีสตาร์ตเครื่องเป็นเรื่องสำคัญ ซึ่งแนวทางนี้อ่านต่อได้ในบทความ ESP32 Preferences Storage
แนะนำแบบ Devadiy: ให้เริ่มจากส่ง int 1 ค่า หรือข้อความสั้น ๆ ก่อน อย่าเพิ่งใส่ DHT, soil moisture, relay, LCD, web dashboard พร้อมกันในรอบแรก ไม่งั้นเวลาพังคุณจะงงว่าอะไรพังแน่
จะต่อยอดจากตัวอย่างนี้ยังไงดี
หลังจากส่งข้อความพื้นฐานสำเร็จแล้ว คุณค่อยต่อยอดแบบนี้ได้- เปลี่ยนจากข้อความเป็นค่าเซนเซอร์ เช่น temperature / humidity / soil moisture
- เพิ่มฝั่งรับให้ควบคุมรีเลย์ตามค่าที่ได้รับ
- ทำ node หลายตัวส่งมาที่บอร์ดกลาง
- ให้บอร์ดกลางเชื่อม Wi-Fi เพื่อส่งข้อมูลต่อขึ้น dashboard หรือ cloud
สรุป ESP-NOW เหมาะกับใคร
ESP-NOW เหมาะกับคนที่อยากให้บอร์ด ESP คุยกันเองแบบเร็ว ง่าย และไม่ต้องพึ่ง Router ตลอดเวลา โดยเฉพาะงานที่เป็น local communication เช่น ส่งค่าจาก sensor node, รีโมตควบคุม, ระบบ Smart Farm ภายในพื้นที่เดียวกัน หรือ node กระจายจุดในบ้านและโรงเรือน
ถ้างานของคุณต้องการ web app, dashboard, API หรือ cloud เต็มรูปแบบ Wi-Fi ปกติยังสำคัญอยู่ แต่ถ้างานของคุณคือ “ให้บอร์ดคุยกันก่อน” ESP-NOW เป็นตัวเลือกที่ Maker ควรรู้มาก เพราะมันช่วยลดความซับซ้อนของระบบได้เยอะจริง
พูดแบบง่ายที่สุดคือ:
- ถ้าคุณอยากให้ ESP คุยกับ ESP แบบไม่เรื่องเยอะ → ใช้ ESP-NOW
- ถ้าคุณอยากให้มือถือหรืออินเทอร์เน็ตเข้ามาคุยด้วย → ใช้ Wi-Fi เพิ่ม
- ถ้าคุณอยากเก็บข้อมูลยาว ๆ บน cloud → ให้มี gateway หรือ node กลางอีกชั้น
FAQ คำถามที่พบบ่อย
1) ESP-NOW ใช้อินเทอร์เน็ตไหม
ไม่จำเป็นครับ จุดเด่นของมันคือสื่อสารกันได้โดยไม่ต้องพึ่งอินเทอร์เน็ตหรือ Router แบบงาน Wi-Fi ปกติ
2) ESP-NOW ใช้กับ ESP8266 ได้ไหม
ได้ในหลายกรณี แต่ถ้าคุณเริ่มต้นและอยากให้โค้ดตรงกับระบบใหม่ ๆ มากขึ้น การเริ่มจาก ESP32 จะง่ายกว่าในการต่อยอด
3) ESP-NOW ส่งข้อมูลได้ไกลแค่ไหน
ขึ้นกับสภาพแวดล้อมจริงมาก เช่น สิ่งกีดขวาง, เสาอากาศ, ตำแหน่งวางบอร์ด และสัญญาณรบกวนรอบข้าง ควรทดสอบในหน้างานจริงเสมอ
4) ESP-NOW ปลอดภัยไหม
ESP-NOW รองรับการป้องกันข้อมูลด้วย CCMP ตามเอกสารของ Espressif ดังนั้นถ้าต้องการความปลอดภัยเพิ่มขึ้นควรใช้ encryption ให้เหมาะกับงาน
5) ESP-NOW ใช้พร้อม Wi-Fi ได้ไหม
ได้ แต่ต้องระวังเรื่อง channel และการจัดโครงสร้างระบบให้ดี ถ้าคุณจะใช้ ESP-NOW ควบคู่กับ web server หรือ cloud ควรออกแบบ node กลางให้ชัดตั้งแต่แรก
6) ESP-NOW ต้องรู้ MAC Address ไหม
ถ้าส่งแบบเจาะจงปลายทาง คุณควรรู้ MAC Address ของ peer ที่จะส่งไป
7) ESP-NOW ส่งข้อมูลก้อนใหญ่ได้ไหม
ไม่ใช่งานที่มันถนัด มันเหมาะกับข้อมูลสั้น ๆ มากกว่า ถ้าข้อมูลใหญ่หรือมีโครงสร้างซับซ้อนมาก ควรพิจารณา Wi-Fi หรือวิธีอื่นร่วมด้วย
8) มือใหม่ควรเริ่มจากอะไร
เริ่มจาก 1 sender + 1 receiver และส่งค่าเดียวก่อน เช่นเลข 1 ตัว หรือข้อความสั้น ๆ
9) ESP-NOW เหมาะกับ Smart Farm ไหม
เหมาะมาก โดยเฉพาะระบบที่มีหลายจุดวัดและต้องการส่งข้อมูลกลับมาที่ node กลางภายในพื้นที่เดียวกัน
10) ถ้าจะต่อยอดขึ้น dashboard ควรทำยังไง
แนวทางที่ดีคือให้ sensor node ส่งข้อมูลผ่าน ESP-NOW มาหา node กลาง แล้วให้ node กลางเชื่อม Wi-Fi หรือส่งต่อขึ้นระบบอื่นอีกที
บทความอ้างอิง (References)
-
Espressif Documentation – ESP-NOW
เอกสารทางการของ Espressif อธิบายภาพรวมของ ESP-NOW, การทำงานแบบ connectionless, ความปลอดภัยด้วย CCMP, การ add peer, callback การส่ง/รับ, เรื่อง channel และข้อจำกัดของขนาดข้อมูล -
Arduino ESP32 Documentation – ESP-NOW
เอกสารสำหรับผู้ใช้ Arduino-ESP32 ที่อธิบายการใช้งาน ESP-NOW ในฝั่ง Arduino ecosystem เหมาะสำหรับคนที่เริ่มจาก Arduino IDE และอยากดูแนวทางเขียนโค้ดจริง -
Arduino ESP32 Documentation – Libraries
หน้าเอกสารรวมไลบรารีของ Arduino ESP32 ใช้เป็นจุดอ้างอิงกลางสำหรับตรวจสอบการรองรับฟีเจอร์และโครงสร้างเอกสารของฝั่ง Arduino-ESP32
