basic

[BASIC] 013 ESP NOW

สวัสดีครับ สำหรับหัวข้อบทเรียนพื้นฐานบนบอร์ด HONEYLemon ที่ใช้งานผ่าน arduino library โดยเป็นการใช้งานเกี่ยวกับการสื่อสารไร้สายผ่าน ESP NOW

สำหรับ ESP-NOW นั้นเป็นโพรโตคอลที่พัฒนาโดย Espressif System เพื่อใช้ในการติดต่อสื่อสารโดยไม่จำเป็นต้องมีตัวกลาง ยกตัวอย่างเช่น Access Point หรือ Router เลย โดยสามารถเชื่อมต่อกันตรงๆ และใช้งานได้ทั้งส่งไปยังปลายทางที่กำหนด หรือใช้การ Broadcast ก็ได้เช่นกัน เหมาะสำหรับการนำมาทำงานร่วมกันเป็นกลุ่มของการสื่อสารโดยใช้ความถี่ 2.4GHz

ส่งข้อมูลได้ครั้งละ  250 byte ต่อครั้ง (payload)

ใช้งานพร้อมกันได้สูงสุด 20 ตัว

สำหรับการใช้งานนั้นทางผู้พัฒนาบอร์ด HONEYLemon ได้มีการสร้างฟังก์ชั่นให้สามารถใช้งานสำหรับการสื่อสารได้ง่ายขึ้น โดยมีคำสั่งเบื้องต้นดังนี้

lemon.setupESPNOW();  // สำหรับ setup ให้สามารถใช้งาน esp-now ได้
lemon.espnow_send();  // สำหรับการส่งไปหาอุปกรณ์ปลายทาง
lemon.espnow_broadcast();  // สำหรับการส่งไปหาอุปกรณ์ปลายทางแบบ broadcast(ส่งทุกตัว)

วิธีการใช้งาน

1.สร้างฟังก์ชั่นสำหรับรับข้อมูลก่อน

void espnowRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
    char macStr[22];
    snprintf(macStr, sizeof(macStr), "[%02X:%02X:%02X:%02X:%02X:%02X]: ", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);

    Serial.print(macStr);
    Serial.write(data, data_len);
    Serial.println();
}

2.ทำการ setup เพื่อใช้งาน ESP NOW

void setup(){
...
    lemon.setupESPNOW(); // เพื่อเตรียมความพร้อมใช้งาน ESP NOW
    esp_now_register_recv_cb(espnowRecv); // ฟังก์ชั่น callback เรียกเมื่อมีข้อความเข้ามา
...
}

3.ทำการส่งข้อมูลแบบ broadcast ไปหาอุปกรณ์ทุกตัว

...
    lemon.espnow_broadcast("Hello World!");
...

หรือหากต้องการส่งไปหาตัวใดตัวหนึ่งในระบบก็สามารถทำได้แต่ต้องทราบ Mac Address ของอุปกรณ์ปลายทางที่ต้องการส่งก่อน โดยบอร์ด HONEYLemon สามารถพิมพ์คำสั่งได้เลย

...
Serial.println("My MAC Address : "+lemon.getMAC());
...

แนะนำว่าควรนำไปไว้ใน void setup() เพื่อใช้ในการดูว่า Mac Address ของบอร์ดนั้นๆ

และสำหรับการส่งไปหาอุปกรณ์ปลายทางเฉพาะบอร์ดสามารถใช้คำสั่งได้ดังนี้

...
    lemon.espnow_send("FF:FF:FF:FF:FF:FF","Hello World!");
    // แก้ FF:FF:FF:FF:FF:FF เป็น MAC Address ปลายทาง
...

ตัวอย่าง source code

Comments are closed.