![](https://i0.wp.com/store.microtronic.biz/wp-content/uploads/2023/06/gallery-หน้าปกบทความ2.png?resize=980%2C551&ssl=1)
เพื่อสร้างสัญญาณเชื่อมต่อระหว่างอุปกรณ์ ESP8266 2 บอร์ดโดยใช้ ESP-NOW คุณสามารถทำตามขั้นตอนดังต่อไปนี้ :
- เตรียมฮาร์ดแวร์ :
- เชื่อมต่อ ESP8266 2 บอร์ดกับคอมพิวเตอร์ผ่านสาย micro USB และเปิด Arduino IDE.
- เปิด Arduino IDE :
- เปิด Arduino IDE บนคอมพิวเตอร์ของคุณ. Download Arduino IDE
- เลือกบอร์ดและการตั้งค่า :
- เข้าไปที่ “Tools” ในเมนูหลักของ Arduino IDE.
- เลือก “Board” และเลือกบอร์ด ESP8266 ที่คุณใช้.
- เลือก “Port” ที่ถูกต้องสำหรับการเชื่อมต่อกับบอร์ด ESP8266.
- เขียนโปรแกรม :
- เปิดตัวอย่างโปรแกรม Arduino IDE ที่เกี่ยวข้องกับการใช้งาน ESP-NOW.
- แก้ไขโปรแกรมตามความต้องการของคุณ (เช่น กำหนด SSID, รหัสผ่าน Wi-Fi, ข้อมูลที่จะส่งผ่าน ESP-NOW ฯลฯ).
- อัปโหลดโปรแกรมไปยังบอร์ด ESP8266 2 ตัวพร้อมกัน.
- ตรวจสอบผลลัพธ์ :
- เปิดหน้าต่าง “Serial Monitor” ใน Arduino IDE เพื่อดูผลลัพธ์ที่แสดงข้อมูลจาก ESP8266 2 ตัว.
ตัวอย่างโปรแกรม สร้างสัญญาณเชื่อมต่อระหว่าง ESP8266 2 บอร์ดโดยใช้ ESP-NOW มีรูปแบบดังนี้
#include <esp_now.h>
#include <WiFi.h>
// กำหนด MAC address ของบอร์ดที่จะส่งข้อมูล
uint8_t receiverMacAddress[] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC };
void setup() {
// เริ่มต้นการสื่อสารผ่าน ESP-NOW
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเริ่มต้น ESP-NOW");
return;
}
// เพิ่มผู้รับข้อมูล
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, receiverMacAddress, sizeof(receiverMacAddress));
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเพิ่มผู้รับข้อมูล");
return;
}
}
void loop() {
// ส่งข้อมูลผ่าน ESP-NOW
String dataToSend = "Hello, ESP-NOW!";
esp_now_send(receiverMacAddress, reinterpret_cast<const uint8_t*>(dataToSend.c_str()), dataToSend.length());
delay(1000);
}
โปรแกรมนี้เป็นตัวอย่างพื้นฐานที่ใช้งาน ESP-NOW เพื่อส่งข้อมูลจากบอร์ด ESP8266 ตัวหนึ่งไปยังบอร์ด ESP8266 อีกตัวหนึ่ง โดยส่งข้อความ “Hello, ESP-NOW!” ทุกๆ 1 วินาที คุณสามารถปรับแต่งโปรแกรมตามความต้องการของคุณได้
และ โปรแกรมตัวรับข้อมูลจากบอร์ด ESP8266 ด้วย ESP-NOW มีรูปแบบดังนี้ :
#include <esp_now.h>
#include <WiFi.h>
// กำหนด MAC address ของบอร์ดส่งข้อมูล
uint8_t senderMacAddress[] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC };
void setup() {
Serial.begin(115200);
// เริ่มต้นการใช้งาน WiFi
WiFi.mode(WIFI_STA);
WiFi.begin("ชื่อ WiFi", "รหัสผ่าน WiFi");
// รอการเชื่อมต่อ WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("กำลังเชื่อมต่อ WiFi...");
}
// เริ่มต้นการรับข้อมูลผ่าน ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเริ่มต้น ESP-NOW");
return;
}
// เพิ่มผู้ส่งข้อมูล
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, senderMacAddress, sizeof(senderMacAddress));
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเพิ่มผู้ส่งข้อมูล");
return;
}
// ตั้งค่าฟังก์ชันรับข้อมูล
esp_now_register_recv_cb([](const uint8_t* senderMacAddress, const uint8_t* data, int dataLength) {
Serial.println("รับข้อมูล: " + String(reinterpret_cast<const char*>(data)));
});
}
void loop() {
// ไม่ต้องกระทำอะไรเพิ่มเติมในลูปหลัก
}
โปรแกรมนี้จะรับข้อมูลจากบอร์ด ESP8266 อื่น โดยใช้ ESP-NOW และแสดงข้อมูลที่รับได้ผ่านฟังก์ชัน esp_now_register_recv_cb
ที่ลงทะเบียนไว้ใน setup
ของโปรแกรม โดยคุณสามารถปรับแต่งโปรแกรมเพื่อให้ตรงกับความต้องการของคุณได้
โปรแกรมตัวอย่างสำหรับรับข้อมูลจากบอร์ด ESP8266 อื่นโดยใช้ ESP-NOW แบบ One-way :
#include <esp_now.h>
#include <WiFi.h>
// กำหนด MAC address ของบอร์ดส่งข้อมูล
uint8_t senderMacAddress[] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC };
void setup() {
Serial.begin(115200);
// เริ่มต้นการใช้งาน WiFi
WiFi.mode(WIFI_STA);
WiFi.begin("ชื่อ WiFi", "รหัสผ่าน WiFi");
// รอการเชื่อมต่อ WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("กำลังเชื่อมต่อ WiFi...");
}
// เริ่มต้นการรับข้อมูลผ่าน ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเริ่มต้น ESP-NOW");
return;
}
// เพิ่มผู้ส่งข้อมูล
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, senderMacAddress, sizeof(senderMacAddress));
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("เกิดข้อผิดพลาดในการเพิ่มผู้ส่งข้อมูล");
return;
}
// ตั้งค่าฟังก์ชันรับข้อมูล
esp_now_register_recv_cb([](const uint8_t* senderMacAddress, const uint8_t* data, int dataLength) {
Serial.println("รับข้อมูล: " + String(reinterpret_cast<const char*>(data)));
});
}
void loop() {
// ไม่ต้องกระทำอะไรเพิ่มเติมในลูปหลัก
}
โปรแกรมนี้จะรับข้อมูลจากบอร์ด ESP8266 อื่นโดยใช้ ESP-NOW และแสดงข้อมูลที่รับได้ผ่านฟังก์ชัน esp_now_register_recv_cb
ที่ลงทะเบียนไว้ใน setup
ของโปรแกรม โปรแกรมนี้เป็นแบบ One-way ซึ่งหมายความว่ามันรับข้อมูลเท่านั้นและไม่ส่งข้อมูลกลับไปยังบอร์ดอื่น ถ้าคุณต้องการส่งข้อมูลกลับไปยังบอร์ดอื่นด้วย ESP-NOW คุณต้องเพิ่มโค้ดส่วนที่เกี่ยวข้องในฟังก์ชัน loop
ของโปรแกรม