เรียน-เล่น-โค้ด KidBright32iP กับ microBlock IDE EP10: ESP-NOW

รับส่งข้อมูลระหว่างบอร์ด KidBright32ip ด้วย ESP-NOW

 

 

หมายเหตุ

กิจกรรมในหัวข้อนี้จะต้องมีบอร์ด KidBright32iP อย่างน้อย 2 บอร์ด เพื่อให้สามารถรับส่งข้อมูลแบบไร้สายกันได้

ESP-NOW

เป็นโปรโตคอลสื่อสารย่านความถี่ 2.4GHz โดยให้อุปกรณ์ที่ใช้ชิป ESP32 แต่ละตัวคุยกันโดยไม่ต้องมีสื่อกลาง สามารถส่งหากันเฉพาะตัวโดยการระบุ Mac Address หรือส่งหากันแบบกระจาย (Broadcast) เหมือนเครื่องส่งวิทยุก็ได้

การเพิ่ม Extension ESP-NOW

  1. เปิดหน้าต่าง Extension

  1. พิมพ์ now ในช่องค้นหา จะพบ Extension ชื่อ ESP-NOW กด Install เพื่อติดตั้ง

  1. ชุดคำสั่งต่าง ๆ ของ ESP-NOW จะถูกสร้างขึ้นพร้อมใช้งาน

คำสั่งต่างๆของ ESP-NOW

คืนสถานะเป็นจริง เมื่อพร้อมให้อ่านข้อมูลที่รับเข้ามา

คืนค่า MAC address ของตัวเองออกมา

คืนค่า MAC address ของผู้ส่ง เมื่อข้อมูลถูกส่งมา

ส่งข้อมูลแบบกระจาย ESP32/ESP8266 ในระยะสัญญาณสามารถรับข้อมูลนี้ได้

ส่งข้อมูลแบบระบุตัวด้วยค่า MAC address

อ่านข้อมูลในรูปแบบข้อความ

อ่านข้อมูลในรูปแบบตัวเลข

Mac Address

เป็นชุดตัวเลขที่ใช้ระบุตัวอุปกรณ์ มีรูปแบบเป็นเลขฐานสิบหก ขนาด 12 หลัก เช่น 12:34:56:78:90:AB คั่นด้วยเครื่องหมาย : โดยอุปกรณ์แต่ละตัวจะมีค่า Mac Address ที่ไม่ซ้ำกัน

ตัวอย่างที่ 41 อ่านค่า MAC address ของตัวเอง แสดงผลที่หน้าต่าง Terminal

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

การทำงาน

เมื่อกดสวิตช์ S1 ให้ส่งค่า MAC address ของตัวเองไปแสดงผลที่หน้าต่าง Terminal

เมื่อกดสวิตช์ S1 ค่าตัวเลขฐานสิบหก 12 หลักจะถูกส่งมาแสดงที่หน้าต่าง Terminal โดยตัวเลขแต่ละชุด 6 ชุดจะคั่นด้วยเครื่องหมาย : ให้จดบันทึกค่า MAC address ที่อ่านได้เอาไว้ ใช้กับการทดลองในตัวอย่างต่อไป

ตัวอย่างที่ 42 ส่งค่าตัวเลขจากบอร์ดที่ 1 แสดงผลที่หน้าต่าง Terminal ของบอร์ดที่ 2

ตัวอย่างนี้แนะนำให้เปิดโปรแกรม MicroBLOCK IDE ขึ้นมา 2 ชุด สำหรับเขียนโค้ดส่วนภาคส่งและเขียนโค้ดส่วนภาครับ เพื่อป้องกันการสับสน ภาคส่งจะแสดงอักษร S ส่วนภาครับแสดงอักษร R เมื่อกดสวิตช์ S1 หรือ S2 ภาคส่งจะส่งค่าออกอากาศไปยังภาครับ ให้ภาครับ รับค่าแล้วแสดง MAC Address ของภาคส่งและข้อมูลที่รับได้ที่หน้าต่าง Terminal พร้อมทั้งส่งข้อความกลับไปยังภาคส่งด้วย เพื่อแจ้งว่าได้รับข้อมูลเรียบร้อยแล้ว

โค้ดภาคส่ง

การทำงาน

แสดงอักษร S เพื่อให้ทราบว่าเป็นภาคส่ง ถ้ากดสวิตช์ S1 จะส่งเลข 12345 ไปยังภาครับซึ่งมีค่า MAC Address ตรงกับค่าในโปรแกรม แต่ถ้ากดสวิตช์ S2 จะส่งค่าตัวเลข 56789 ไปแทน ในส่วนของ Forever จะตรวจสอบว่ามีข้อมูลถูกส่งมาหรือไม่ ถ้าข้อมูลถูกส่งมาให้ส่งข้อมูลในรูปแบบของข้อความแสดงที่หน้าต่าง Terminal

โค้ดภาครับ

การทำงาน

แสดงอักษร R เพื่อให้ทราบว่าเป็นภาครับ โดยเมื่อข้อมูลถูกส่งมาเงื่อนไข if จะเป็นจริง จะทำการอ่านค่า MAC address ของตัวส่งเก็บในตัวแปรชื่อ MAC ก่อนส่งค่าออกหน้าต่าง Terminal พร้อมกับค่าข้อมูลตัวเลขที่รับเข้ามา ท้ายสุดส่งข้อความตอบกลับไปยังภาครับแล้ว

หน้าต่าง Terminal ของภาคส่ง

ที่ภาคส่งเมื่อกดสวิตช์ S1 หรือ S2 ข้อมูลจะถูกส่งออกไป ถ้าภาครับได้รับข้อมูล จะส่งข้อความ “Received” ตอบกลับมา ในโค้ดของภาคส่งจะนำค่าที่ได้แสดงที่หน้าต่าง Terminal ซึ่งจะมีอักขระบางตัวติดมาด้วยดังรูป

หน้าต่าง Terminal ของภาครับ

หน้าต่าง Terminal ของภาครับจะแสดง MAC Address ของภาคส่งและข้อมูลที่ส่งมา

มาถึงตอนที่ 10 คงได้เห็นความหลากหลายในการทำงานของบอร์ด KidBright32iP กันแล้ว ยังไม่หมดเพียงเท่านี้สำหรับความสามารถของมัน ยังคงต้องติดตามตอนต่อไป

Facebook Comments Box